2020-12-27 12:39:25 +01:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
2020-06-02 14:02:57 +02:00
|
|
|
using System.Runtime.CompilerServices;
|
2020-05-29 23:03:32 +02:00
|
|
|
using AutoMapper;
|
2020-05-18 17:29:54 +02:00
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
2020-05-29 23:03:32 +02:00
|
|
|
using WotBlitzStatisticsPro.Common.Model;
|
2020-05-31 15:43:39 +02:00
|
|
|
using WotBlitzStatisticsPro.DataAccess;
|
2020-07-19 13:04:31 +02:00
|
|
|
using WotBlitzStatisticsPro.Logic.AccountInformationPipeline.Operations;
|
2020-05-29 23:03:32 +02:00
|
|
|
using WotBlitzStatisticsPro.Logic.Dictionaries;
|
2020-07-19 13:04:31 +02:00
|
|
|
using WotBlitzStatisticsPro.Logic.Pipeline;
|
2020-05-18 17:29:54 +02:00
|
|
|
using WotBlitzStatisticsPro.WgApiClient;
|
|
|
|
|
|
2020-06-02 14:02:57 +02:00
|
|
|
[assembly: InternalsVisibleTo("WotBlitzStatisticsPro.Tests")]
|
2020-05-23 11:43:14 +02:00
|
|
|
namespace WotBlitzStatisticsPro.Logic
|
2020-05-18 17:29:54 +02:00
|
|
|
{
|
|
|
|
|
public static class WotBlitzStatisticsLogicInstaller
|
|
|
|
|
{
|
2020-05-29 23:03:32 +02:00
|
|
|
|
|
|
|
|
|
2020-05-18 17:29:54 +02:00
|
|
|
public static void ConfigureServices(IServiceCollection services)
|
|
|
|
|
{
|
2020-05-29 23:03:32 +02:00
|
|
|
ConfigureDictionariesFactory(services);
|
2020-07-19 13:04:31 +02:00
|
|
|
ConfigureOperationsFactory(services);
|
2020-05-31 15:43:39 +02:00
|
|
|
WotBlitzStatisticsDataAccessInstaller.ConfigureServices(services);
|
2020-05-18 17:29:54 +02:00
|
|
|
services.AddAutoMapper(typeof(WotBlitzStatisticsLogicInstaller));
|
|
|
|
|
services.AddHttpClient<IWargamingApiClient, WargamingApiClient>();
|
2020-05-29 23:03:32 +02:00
|
|
|
services.AddHttpClient<IWargamingDictionariesApiClient, WargamingApiClient>();
|
2020-09-18 16:07:25 +02:00
|
|
|
services.AddHttpClient<IWargamingTanksApiClient, WargamingApiClient>();
|
2020-05-18 17:29:54 +02:00
|
|
|
services.AddTransient<IWargamingSearch, WargamingSearch>();
|
2020-05-21 17:53:01 +02:00
|
|
|
services.AddTransient<IWargamingDictionaries, WargamingDictionaries>();
|
2020-07-19 13:04:31 +02:00
|
|
|
services.AddTransient<IWargamingAccounts, WargamingAccounts>();
|
2020-05-18 17:29:54 +02:00
|
|
|
}
|
2020-05-29 23:03:32 +02:00
|
|
|
|
|
|
|
|
private static void ConfigureDictionariesFactory(IServiceCollection services)
|
|
|
|
|
{
|
|
|
|
|
services.AddTransient<StaticDictionariesUpdater>();
|
|
|
|
|
services.AddTransient<AchievementsDictionaryUpdater>();
|
|
|
|
|
services.AddTransient<VehiclesDictionaryUpdater>();
|
|
|
|
|
|
2020-07-19 13:04:31 +02:00
|
|
|
RegisterDictionariesFactoryMethod(services);
|
2020-06-02 14:02:57 +02:00
|
|
|
}
|
|
|
|
|
|
2020-07-19 13:04:31 +02:00
|
|
|
internal static void RegisterDictionariesFactoryMethod(IServiceCollection services)
|
2020-06-02 14:02:57 +02:00
|
|
|
{
|
2020-05-29 23:03:32 +02:00
|
|
|
services.AddTransient<DictionariesUpdaterResolver>(serviceProvider => dictionaryType =>
|
|
|
|
|
{
|
2020-12-27 12:39:25 +01:00
|
|
|
return dictionaryType switch
|
2020-05-29 23:03:32 +02:00
|
|
|
{
|
2020-12-27 12:39:25 +01:00
|
|
|
DictionaryType.StaticDictionaries => serviceProvider.GetService<StaticDictionariesUpdater>()!,
|
|
|
|
|
DictionaryType.Achievements => serviceProvider.GetService<AchievementsDictionaryUpdater>()!,
|
|
|
|
|
DictionaryType.Vehicles => serviceProvider.GetService<VehiclesDictionaryUpdater>()!,
|
|
|
|
|
_ => throw new ApplicationException($"Unknown dictionary type '{dictionaryType}'")
|
|
|
|
|
};
|
2020-05-29 23:03:32 +02:00
|
|
|
});
|
|
|
|
|
}
|
2020-07-19 13:04:31 +02:00
|
|
|
|
|
|
|
|
private static void ConfigureOperationsFactory(IServiceCollection services)
|
|
|
|
|
{
|
|
|
|
|
services.AddTransient<GetAccountInfoOperation>();
|
2020-11-01 14:10:57 +01:00
|
|
|
services.AddTransient<ReadAccountInfoFromDbOperation>();
|
2020-11-05 14:57:40 +01:00
|
|
|
services.AddTransient<CheckLastBattleDateOperation>();
|
2020-07-19 13:04:31 +02:00
|
|
|
services.AddTransient<GetTanksInfoOperation>();
|
2020-09-22 17:54:35 +02:00
|
|
|
services.AddTransient<CalculateStatisticsOperation>();
|
2020-09-30 19:30:36 +02:00
|
|
|
services.AddTransient<BuildAccountInfoResponseOperation>();
|
2020-11-06 19:23:20 +01:00
|
|
|
services.AddTransient<SaveAccountAndTanksOperation>();
|
2020-12-23 16:34:12 +01:00
|
|
|
services.AddTransient<ReadAccountInfoHistoryFromDbOperation>();
|
|
|
|
|
services.AddTransient<CheckIfHistoryIsEmptyOperation>();
|
|
|
|
|
services.AddTransient<FillOverallStatisticsOperation>();
|
|
|
|
|
services.AddTransient<FillPeriodStatisticsOperation>();
|
|
|
|
|
services.AddTransient<FillPeriodDifferenceOperation>();
|
|
|
|
|
services.AddTransient<FillStatisticsDifferenceOperation>();
|
|
|
|
|
services.AddTransient<FillAccountInfoHistoryResponse>();
|
2020-07-19 13:04:31 +02:00
|
|
|
|
|
|
|
|
services.AddTransient<IOperationFactory>(serviceProvider =>
|
|
|
|
|
new ServiceProviderOperationFactory(serviceProvider));
|
|
|
|
|
}
|
2020-05-18 17:29:54 +02:00
|
|
|
}
|
|
|
|
|
}
|