using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassi.Dto.Common;
using gehGassiApp.Domain.Banners;
using gehGassiApp.Domain.Common;
namespace gehGassiApp.Core.Interfaces
{
///
/// Schnittstellenbeschreibung für einen Service der alle Funktionen für Banner zur Verfügung stellt
///
public interface IBannerService
{
///
/// Gibt einen zufälligen Banner für eine Platzierung zurück
///
/// Bannerplatzierung
/// Optional: Id des Banners der gerade angezeigt wird
/// Aktuelle Position
/// Aktuelles Accesstoken
/// Akteuller Modus der App
/// Gewünschte Sprache
/// CancellationToken
/// CommunicationResult
Task> GetForLocationAsync(BannerLocation location, string currentBannerId, LocationDto currentLocation, string accessToken, AppMode appMode, string language, CancellationToken token);
///
/// Hinzufügen von Clicks zu einem Banner
///
/// Id des Banners
/// Anzahl der Klicks
/// Akteuller Modus der App
/// Aktuelle Position
/// Gewünschte Sprache
/// Aktuelles Accesstoken
/// CancellationToken
/// CommunicationResult - true wenn noch gültig, false wenn der Banner nicht mehr gültig ist
Task> AddClicksAsync(string bannerId, int clicks, AppMode appMode, LocationDto location, string language, string accessToken, CancellationToken token);
///
/// Hinzufügen von views zu einem Banner
///
/// Id des Banners
/// Anzahl der Views
/// Akteuller Modus der App
/// Aktuelle Position
/// Gewünschte Sprache
/// Aktuelles Accesstoken
/// CancellationToken
/// CommunicationResult - true wenn noch gültig, false wenn der Banner nicht mehr gültig ist
Task> AddViewsAsync(string bannerId, int views, AppMode appMode, LocationDto location, string language, string accessToken, CancellationToken token);
}
}