Merge branch 'renavigatorumbau' into sewerdamages

# Conflicts:
#	DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs
This commit is contained in:
HuskyTeufel
2021-09-29 18:50:32 +02:00
16 changed files with 71 additions and 37 deletions

View File

@@ -75,7 +75,7 @@ namespace DaSaSo.ViewModel
private void SaveBuildingsite()
{
_buildingsiteService.Update(Model.Id, Model);
_renavigator.Renavigate(new BuildingsiteListViewModel(_buildingsiteService, _actualProject, _renavigator, null));
_renavigator.Renavigate();
}
}
}

View File

@@ -35,7 +35,7 @@ namespace DaSaSo.ViewModel
private void SaveClient()
{
_dataService.Update(Model.Id, Model);
renavigator.Renavigate(new ClientListViewModel(_dataService,_actualProject,renavigator));
renavigator.Renavigate();
}
}
}

View File

@@ -59,18 +59,22 @@ namespace DaSaSo.ViewModel
public bool CanSelectClient => _selectedClient != null;
public ClientListViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator renavigator)
public ClientListViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator editRenavigator)
{
Clients = new ObservableCollection<Client>();
_dataService = dataService;
this.renavigator = renavigator;
LoadClient();
SelectCommand = new SelectClientCommand(actualProject, this); //= new RelayCommand(SelectClient, () => SelectedClient != null);
EditCommand = new EditClientCommand(_dataService,actualProject,renavigator,this);
AddNewClientCommand = new AddClientCommand(_dataService, actualProject, renavigator, this);
EditCommand = new EditClientCommand(_dataService,actualProject, editRenavigator, this);
AddNewClientCommand = new AddClientCommand(_dataService, actualProject, editRenavigator, this);
}
~ClientListViewModel()
{
}
public async void LoadClient()
{

View File

@@ -28,7 +28,7 @@ namespace DaSaSo.ViewModel.Commands
{
Buildingsite buildingsite = await _buildingsiteService.CreateBuildingsite(_actualProject.AktuellProjekt);
_actualProject.SetBuildingSite(buildingsite);
_renavigator.Renavigate(new BuildingsiteEditViewModel(_dataservice, _actualProject, _renavigator));
_renavigator.Renavigate();
}
}
}

View File

@@ -30,7 +30,7 @@ namespace DaSaSo.ViewModel.Commands
Client newClient = await dataservice.Create(new Client());
actualProject.SetClient(newClient,false);
//actualProject.SetClient(clientListViewModel.SelectedClient);
renavigator.Renavigate(new ClientEditViewModel(dataservice, actualProject, renavigator));
renavigator.Renavigate();
}
}
}

View File

@@ -31,7 +31,7 @@ namespace DaSaSo.ViewModel.Commands
{
Project pro = await _projectService.CreateProject(_actualProject.AktuellClient);
_actualProject.SetProject(pro);
_renavigator.Renavigate(new ProjectEditViewModel(_genericDataService, _actualProject, _renavigator, _projectService));
_renavigator.Renavigate();
}
}

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter)
{
actualProject.SetBuildingSite(_buildingsiteListViewModel.SelectedBuildingsite);
renavigator.Renavigate(new BuildingsiteEditViewModel(buildingSiteDataService, actualProject, renavigator));
renavigator.Renavigate();
}
}
}

View File

@@ -45,7 +45,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter)
{
actualProject.SetClient(_clientListViewModel.SelectedClient);
renavigator.Renavigate(new ClientEditViewModel(dataservice,actualProject,renavigator));
renavigator.Renavigate();
}
}
}

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter)
{
_actualProject.SetProject(_projectListViewModel.SelectedProject);
_renavigator.Renavigate(new ProjectEditViewModel(_dataService, _actualProject, _renavigator,_projectService));
_renavigator.Renavigate();
}
}
}

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter)
{
_navigator.CurrentViewModel = null;
_renavigator.Renavigate(new SewerObjectListViewModel(_dataService, _actualProject, _sewerObjectService));
_renavigator.Renavigate();
}
}
}

View File

@@ -8,6 +8,6 @@ namespace DaSaSo.ViewModel.Interface
{
public interface IRenavigator
{
void Renavigate(BaseViewModel target);
void Renavigate();
}
}

View File

@@ -62,7 +62,7 @@ namespace DaSaSo.ViewModel
private void SaveProject()
{
_dataservice.Update(_model.Id, _model);
_renavigator.Renavigate(new ProjectListViewModel(_dataservice, _actualProject, _renavigator, _projectService));
_renavigator.Renavigate();
}
}
}

View File

@@ -81,5 +81,11 @@ namespace DaSaSo.ViewModel
_actualProject.SetSewerObject(sewer,false);
IsLoading = false;
}
public override void Dispose()
{
_navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel));
base.Dispose();
}
}
}

View File

@@ -7,19 +7,20 @@ using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.Navigation
{
public class ViewModelDelegateRenavigator : IRenavigator
public class ViewModelDelegateRenavigator<TViewModel> : IRenavigator where TViewModel: BaseViewModel
{
private readonly IMainWindowNavigator _navigator;
private readonly CreateViewModel<TViewModel> _createViewModel;
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator)
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator, CreateViewModel<TViewModel> createViewModel)
{
_navigator = navigator;
_createViewModel = createViewModel;
}
public void Renavigate(BaseViewModel target)
public void Renavigate()
{
_navigator.CurrentViewModel = target;
_navigator.CurrentViewModel = _createViewModel();
}
}
}

View File

@@ -23,7 +23,7 @@ namespace DaSaSo.Wpf.HostBuilders
{
services.AddSingleton<IDataService<Client>, ClientDataService>();
services.AddSingleton<IDataService<Project>, ProjectDataService>();
services.AddSingleton<IDataService<Buildingsite>, BuildingsiteDataService>();
services.AddTransient<IDataService<Buildingsite>, BuildingsiteDataService>();
services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>();
services.AddSingleton<IDataService<SewerPoint>, SewerpointDataService>();
services.AddSingleton<IProjectService, ProjectService>();

View File

@@ -28,20 +28,38 @@ namespace DaSaSo.Wpf.HostBuilders
services.AddTransient<MainWindowViewModel>();
services.AddSingleton<ClientListViewModel>();
services.AddTransient<SewerMainListViewModel>();
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.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
return () => new HomeViewModel();
});
services.AddSingleton<CreateViewModel<ClientEditViewModel>>(services =>
services.AddTransient<CreateViewModel<ClientEditViewModel>>(services =>
{
return () => new ClientEditViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator(
services.GetRequiredService<IMainWindowNavigator>()
));
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 =>
{
@@ -65,14 +83,14 @@ namespace DaSaSo.Wpf.HostBuilders
);
});
services.AddSingleton<CreateViewModel<ClientListViewModel>>(services =>
services.AddTransient<CreateViewModel<ClientListViewModel>>(services =>
{
return () => new ClientListViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator(
services.GetRequiredService<IMainWindowNavigator>()
));
services.GetRequiredService<ViewModelDelegateRenavigator<ClientEditViewModel>>()
);
});
services.AddSingleton<CreateViewModel<SewerMainListViewModel>>(services =>
{
@@ -81,9 +99,7 @@ namespace DaSaSo.Wpf.HostBuilders
services.GetRequiredService<ISewerMainNavigator>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IViewModelSewerMainFactory>(),
new ViewModelDelegateRenavigator(
services.GetRequiredService<IMainWindowNavigator>()
),
services.GetRequiredService<ViewModelDelegateRenavigator<SewerObjectListViewModel>>(),
services.GetRequiredService<ISewerObjectService>(),
services.GetRequiredService<ISewerpointService>()
);
@@ -93,24 +109,31 @@ namespace DaSaSo.Wpf.HostBuilders
return () => new ProjectListViewModel(
services.GetRequiredService<IDataService<Project>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator(
services.GetRequiredService<IMainWindowNavigator>()),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjectEditViewModel>>(),
services.GetRequiredService<IProjectService>()
);
});
services.AddSingleton<CreateViewModel<BuildingsiteListViewModel>>(services =>
services.AddTransient<CreateViewModel<BuildingsiteListViewModel>>(services =>
{
return () => new BuildingsiteListViewModel(
services.GetRequiredService<IDataService<Buildingsite>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator(
services.GetRequiredService<IMainWindowNavigator>()),
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(