Files
DaSaSo/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs
2021-11-01 09:58:54 +01:00

185 lines
9.0 KiB
C#

using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.BuildingsiteServices;
using DaSaSo.Domain.Services.ProjectServices;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.Domain.Services.SewerPointServices;
using DaSaSo.ViewModel;
using DaSaSo.ViewModel.Factories;
using DaSaSo.ViewModel.Interface;
using DaSaSo.ViewModel.State.Navigation;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.Wpf.HostBuilders
{
public static class AddViewModelsHostBuilderExtensions
{
public static IHostBuilder AddViewModels(this IHostBuilder host)
{
host.ConfigureServices(services =>
{
services.AddTransient<MainWindowViewModel>();
services.AddSingleton<ClientListViewModel>();
services.AddSingleton<ViewModelDelegateRenavigator<ClientListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ClientEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjectListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjectEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<BuildingsiteListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<BuildingsiteEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<SewerObjectListViewModel>>();
services.AddTransient<ViewModelDelegateRenavigator<SewerDamageEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ImpregnierungEditViewModel>>();
services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
return () => new HomeViewModel();
});
services.AddTransient<CreateViewModel<ClientEditViewModel>>(services =>
{
return () => new ClientEditViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ClientListViewModel>>()
);
});
services.AddTransient<CreateViewModel<ProjectEditViewModel>>(services =>
{
return () => new ProjectEditViewModel(
services.GetRequiredService<IDataService<Project>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjectListViewModel>>(),
services.GetRequiredService<IProjectService>()
);
});
services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
return () => new HomeViewModel();
});
services.AddSingleton<CreateViewModel<ImpregnierungListViewModel>>(services =>
{
return () => new ImpregnierungListViewModel(
services.GetRequiredService<IDataService<Impregnation>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ImpregnierungEditViewModel>>()
);
});
services.AddTransient<CreateViewModel<ImpregnierungEditViewModel>>(services =>
{
return () => new ImpregnierungEditViewModel(
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<Impregnation>>()
);
});
services.AddTransient<CreateViewModel<SewerStammdatenViewModel>>(services =>
{
return () => new SewerStammdatenViewModel(
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<ISewerpointService>()
);
});
services.AddTransient<CreateViewModel<SewerDamageListViewModel>>(services =>
{
return () => new SewerDamageListViewModel(
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<ViewModelDelegateRenavigator<SewerDamageEditViewModel>>()
);
});
services.AddTransient<CreateViewModel<SewerDamageEditViewModel>>(services =>
{
return () => new SewerDamageEditViewModel(
services.GetRequiredService<IActualProject>()
);
});
services.AddTransient<CreateViewModel<SewerPipeLinerViewModel>>(services =>
{
return () => new SewerPipeLinerViewModel(
services.GetRequiredService<IActualProject>()
);
});
services.AddTransient<CreateViewModel<ClientListViewModel>>(services =>
{
return () => new ClientListViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ClientEditViewModel>>()
);
});
services.AddSingleton<CreateViewModel<SewerMainListViewModel>>(services =>
{
return () => new SewerMainListViewModel(
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<ISewerMainNavigator>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IViewModelSewerMainFactory>(),
services.GetRequiredService<ViewModelDelegateRenavigator<SewerObjectListViewModel>>(),
services.GetRequiredService<ISewerObjectService>(),
services.GetRequiredService<ISewerpointService>()
);
});
services.AddSingleton<CreateViewModel<ProjectListViewModel>>(services =>
{
return () => new ProjectListViewModel(
services.GetRequiredService<IDataService<Project>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjectEditViewModel>>(),
services.GetRequiredService<IProjectService>()
);
});
services.AddTransient<CreateViewModel<BuildingsiteListViewModel>>(services =>
{
return () => new BuildingsiteListViewModel(
services.GetRequiredService<IDataService<Buildingsite>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<BuildingsiteEditViewModel>>(),
services.GetRequiredService<IBuildingsiteService>()
);
});
services.AddTransient<CreateViewModel<BuildingsiteEditViewModel>>(services =>
{
return () => new BuildingsiteEditViewModel(
services.GetRequiredService<IDataService<Buildingsite>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<BuildingsiteListViewModel>>()
);
});
services.AddSingleton<CreateViewModel<SewerObjectListViewModel>>(services =>
{
return () => new SewerObjectListViewModel(
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ISewerObjectService>()
);
});
services.AddSingleton<IViewModelAbstractFactory, MainWindowViewModelFactory>();
services.AddSingleton<IViewModelSewerMainFactory, SewerWindowViewModelFactory>();
});
return host;
}
}
}