Files
WotBlitzStatisticsBlazor/WotBlitzStatisticsPro.Logic/WotBlitzStatisticsLogicInstaller.cs
T

87 lines
4.3 KiB
C#
Raw Normal View History

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;
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;
using WotBlitzStatisticsPro.Logic.Model;
2020-07-19 13:04:31 +02:00
using WotBlitzStatisticsPro.Logic.Pipeline;
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
{
public static class WotBlitzStatisticsLogicInstaller
{
2020-05-29 23:03:32 +02:00
public static void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<StatisticsCache>();
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);
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>();
2021-03-23 13:44:03 +01:00
services.AddHttpClient<IWargamingAchievementsApiClient, WargamingAchievementsApiClient>();
2021-10-18 17:47:06 +03:00
services.AddHttpClient<IWargamingAuthenticationClient, WargamingApiClient>();
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>();
2021-03-19 19:49:58 +01:00
services.AddTransient<IWargamingClans, WargamingClans>();
2021-03-23 13:44:03 +01:00
services.AddTransient<IWargamingAchievements, WargamingAchievements>();
}
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>()!,
2020-12-27 17:20:57 +01:00
_ => null
2020-12-27 12:39:25 +01:00
};
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>();
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>();
2021-01-05 13:04:13 +01:00
services.AddTransient<ReadTankInfoFromDbOperation>();
services.AddTransient<ReadTankHistoryFromDbOperation>();
services.AddTransient<FillTankHistoryResponseOperation>();
2020-07-19 13:04:31 +02:00
services.AddTransient<IOperationFactory>(serviceProvider =>
new ServiceProviderOperationFactory(serviceProvider));
}
}
}