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;
}
}
}