feat: deictionary query implemented

This commit is contained in:
Mikhail Shabanov committed 2022-07-22 10:01:45 +02:00
1 parent 3e4f34ca16
commit 8a9f2f7077
21 files changed
+972 -69

No files matched your search

@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Threading.Tasks;
using WotBlitzStatisticsPro.Common.Model;
namespace WotBlitzStatisticsPro.Logic
@@ -7,5 +8,7 @@ namespace WotBlitzStatisticsPro.Logic
{
Task<UpdateDictionariesResponseItem[]> UpdateDictionaries(
UpdateDictionariesRequest updateDictionariesRequest);
Task<List<VehicleResponse>?> GetVehiclesByNation(string nationId, RequestLanguage? language);
}
}
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using AutoMapper;
using WotBlitzStatisticsPro.Common.Dictionaries;
using WotBlitzStatisticsPro.Common.Model;
using WotBlitzStatisticsPro.DataAccess.Model;
using WotBlitzStatisticsPro.WgApiClient.Model;
@@ -36,6 +38,18 @@ namespace WotBlitzStatisticsPro.Logic.Mappers
.ForMember(d => d.PriceXp,
o =>
o.MapFrom(s => s.PricesXp));
CreateMap<IVehiclesDictionary, VehicleResponse>()
.ForMember(v => v.Name,
o => o.MapFrom((src, dest, destMember, context) =>
src.Name.FirstOrDefault(l => l.Language == (RequestLanguage) context.Items["language"])?.Value))
.ForMember(v => v.Description,
o => o.MapFrom((src, dest, destMember, context) =>
src.Description.FirstOrDefault(l => l.Language == (RequestLanguage) context.Items["language"])?.Value))
.ForMember(v => v.NexTanksInTree,
o => o.MapFrom(src => src.NexTanksInTree.Select(t => t.TankId).ToList()))
;
}
}
}
@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.Extensions.Logging;
using WotBlitzStatisticsPro.Common.Dictionaries;
using WotBlitzStatisticsPro.Common.Model;
using WotBlitzStatisticsPro.DataAccess;
using WotBlitzStatisticsPro.Logic.Dictionaries;
namespace WotBlitzStatisticsPro.Logic
@@ -10,14 +13,32 @@ namespace WotBlitzStatisticsPro.Logic
public class WargamingDictionaries: IWargamingDictionaries
{
private readonly DictionariesUpdaterResolver _dictionaryUpdaterFactoryMethod;
private readonly IDictionariesDataAccessor _dictionariesDataAccessor;
private readonly IMapper _mapper;
private readonly ILogger<WargamingDictionaries> _logger;
public WargamingDictionaries(DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod, ILogger<WargamingDictionaries> logger)
public WargamingDictionaries(
DictionariesUpdaterResolver dictionaryUpdaterFactoryMethod,
IDictionariesDataAccessor dictionariesDataAccessor,
ILogger<WargamingDictionaries> logger,
IMapper mapper)
{
_dictionaryUpdaterFactoryMethod = dictionaryUpdaterFactoryMethod;
_dictionariesDataAccessor = dictionariesDataAccessor;
_logger = logger;
_mapper = mapper;
}
public async Task<List<VehicleResponse>?> GetVehiclesByNation(string nationId, RequestLanguage? language)
{
language = language ?? RequestLanguage.En;
var vehicles = await _dictionariesDataAccessor.GetVehiclesByNation(nationId);
return _mapper.Map<List<IVehiclesDictionary>, List<VehicleResponse>>(vehicles, opts =>
{
opts.Items["language"] = language;
});
}
public async Task<UpdateDictionariesResponseItem[]> UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest)
{
var response = new List<UpdateDictionariesResponseItem>();