using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Dto; using gehGassiApp.Core.Interfaces; using gehGassiApp.Core.Mapper; using gehGassiApp.Core.Resources; using gehGassiApp.Domain.AppVersions; using Platform = gehGassiApp.Domain.Common.Platform; namespace gehGassiApp.Core.Services { /// /// Service der die aktuelle AppVersion am Server ermitteln kann /// public class AppVersionService : IAppVersionService { private readonly ICommunicationService _communicationService; /// /// Erstellt eine Instanz /// /// Instanz eines ICommunicationService public AppVersionService(ICommunicationService communicationService) { _communicationService = communicationService; } /// /// Holen der aktuellen Version am Server für die gewählte Plattform /// /// Plattform /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult public async Task> CheckCurrentAppVersionAsync(Platform platform, string language, string accessToken, CancellationToken token) { var result = new CommunicationResult() { Value = null }; var isConnected = await _communicationService.IsConnected(); if (isConnected) { var checkResult = await _communicationService.CheckCurrentAppVersionAsync(platform.ToDto(), language, accessToken, token); if (checkResult.Success) return checkResult; } else { result.Success = false; result.ErrorCode = CommunicationErrors.ServerNoConnection; result.ErrorMessage = Errors.Server_NoConnection; } return result; } /// /// Holen der aktuellen Version am Server für die gewählte Plattform /// /// Plattform /// Sprache /// Aktuelles Accesstoken /// CancellationToken /// CommunicationResult public async Task> GetCurrentAppVersionAsync(Platform platform, string language, string accessToken, CancellationToken token) { var result = new CommunicationResult() { Value = null }; var isConnected = await _communicationService.IsConnected(); if (isConnected) { var checkResult = await _communicationService.GetCurrentAppVersionAsync(platform.ToDto(), language, accessToken, token); if (checkResult.Success) return checkResult; } else { result.Success = false; result.ErrorCode = CommunicationErrors.ServerNoConnection; result.ErrorMessage = Errors.Server_NoConnection; } return result; } } }