Knocks/BackEnd/Knoks.Core/Logic/Managers/GeneralManager.cs

104 lines
3.5 KiB
C#

using Knoks.Core.Data.Interfaces;
using Knoks.Core.Entities;
using Knoks.Core.Logic.Interfaces;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Knoks.Core.Logic.Managers
{
public class GeneralManager : IGeneralManager
{
#region Fields
private readonly ILogger<GeneralManager> _logger;
private readonly IGeneralDao _generalDao;
private readonly IExchangeDao _exchangeDao;
private readonly IUidManager _uidManager;
#endregion
/// <summary>
/// ctor
/// </summary>
/// <param name="logger"></param>
/// <param name="generalDao"></param>
/// <param name="exchangeDao"></param>
/// <param name="uidManager"></param>
public GeneralManager(ILogger<GeneralManager> logger, IGeneralDao generalDao, IExchangeDao exchangeDao, IUidManager uidManager)
{
_logger = logger;
_generalDao = generalDao;
_exchangeDao = exchangeDao;
_uidManager = uidManager;
}
public async Task<IEnumerable<Country>> GetCountries(string countrySymbol)
{
if (!string.IsNullOrWhiteSpace(countrySymbol))
{
if (countrySymbol.Length != 2)
throw new ArgumentException("Invalid value length. The country symbol length must be 2 characters only.", countrySymbol);
if (!Regex.IsMatch(countrySymbol, @"^[a-zA-Z]+$"))
throw new ArgumentException("Invalid characters. The valid country symbols character must be alphabetic only.", countrySymbol);
}
return await _generalDao.GetCountries(countrySymbol);
}
public async Task<IEnumerable<Language>> GetLanguages()
{
return await _generalDao.GetLanguages();
}
public Task<IEnumerable<Currency>> GetCurrencies(string currency)
{
return _exchangeDao.GetCurrencies(currency);
}
public Task<IEnumerable<Currency>> GetFilterCurrencies(long? userId, bool? availableKnoks, bool? activeKnoks, bool? endedKnoks)
{
return _exchangeDao.GetFilterCurrencies(userId, availableKnoks, activeKnoks, endedKnoks);
}
public Task<IEnumerable<Exchange>> GetExchanges(long? userId,bool? availableKnoks, bool? activeKnoks, bool? endedKnoks)
{
return _exchangeDao.GetExchanges(userId, availableKnoks, activeKnoks, endedKnoks);
}
public Task<IEnumerable<KnokStatus>> GetKnokStatuses()
{
return _generalDao.GetKnokStatuses();
}
public Task<ExchangeStart> GetKnokStartValues(long exchangeId, string currency1, string currency2)
{
return _generalDao.GetKnokStartValues(exchangeId, currency1, currency2);
}
public Task<IEnumerable<RankCount>> GetUserRankCount(long? userId)
{
return _generalDao.GetUserRank(userId);
}
public Task<IEnumerable<KnokLossCount>> GetKnoksLossCount(long? userId)
{
return _generalDao.GetKnoksLossCount(userId);
}
public string GetAvatarUrl(long userId)
{
string user = _uidManager.ToUid(userId, typeof(User), Constants.avatarCause);
return $"/general/{user}/avatar";
}
public Task AddKnokFeedBack(Feedback feedback)
{
return _generalDao.AddKnokFeedBack(feedback);
}
}
}