diff --git a/.gitignore b/.gitignore index a0d75ce..fc4e5bc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ project.fragment.lock.json *.pch *.tmp /DaSaSo.InMemoryProvider/obj/Debug/* +/DaSaSo.ViewModel/version.txt diff --git a/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs b/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs index e36d434..8a4c05e 100644 --- a/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs +++ b/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs @@ -20,7 +20,8 @@ namespace DaSaSo.Domain.Services.SewerObjectService { SewerObject sewerObject = new SewerObject() { - BuildingSite = aktuellBaustelle + BuildingSite = aktuellBaustelle, + StreetName = "Bitte aktualisieren!" }; aktuellBaustelle.SewerObjects.Add(sewerObject); await _buildingsiteService.Update(aktuellBaustelle.Id, aktuellBaustelle); diff --git a/DaSaSo.Domain/Services/SewerPointServices/ISewerpointService.cs b/DaSaSo.Domain/Services/SewerPointServices/ISewerpointService.cs new file mode 100644 index 0000000..e0fafa7 --- /dev/null +++ b/DaSaSo.Domain/Services/SewerPointServices/ISewerpointService.cs @@ -0,0 +1,14 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.Services.SewerPointServices +{ + public interface ISewerpointService + { + Task CreateOrFindSewerpoint(string objektbezeichnung); + } +} diff --git a/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs b/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs new file mode 100644 index 0000000..0543581 --- /dev/null +++ b/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs @@ -0,0 +1,28 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.Services.SewerPointServices +{ + public class SewerpointService : ISewerpointService + { + private readonly IDataService _sewerPointService; + + public SewerpointService(IDataService sewerPointService) + { + _sewerPointService = sewerPointService; + + } + public async Task CreateOrFindSewerpoint(string objektbezeichnung) + { + SewerPoint result = new SewerPoint() + { + Objektnummer = objektbezeichnung + }; + return await _sewerPointService.Create(result); + } + } +} diff --git a/DaSaSo.EntityFramework/DaSaSo.EntityFramework.csproj b/DaSaSo.EntityFramework/DaSaSo.EntityFramework.csproj index 93d88e2..38824be 100644 --- a/DaSaSo.EntityFramework/DaSaSo.EntityFramework.csproj +++ b/DaSaSo.EntityFramework/DaSaSo.EntityFramework.csproj @@ -7,6 +7,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs b/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs index cce0ebd..ebfea52 100644 --- a/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs +++ b/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs @@ -8,28 +8,26 @@ using System.Threading.Tasks; namespace DaSaSo.EntityFramework { - public class DaSaSoDbContextFactory : IDesignTimeDbContextFactory + public class DaSaSoDbContextFactory { - private readonly string _connectionString; + private readonly Action _configureDbContext; - public DaSaSoDbContextFactory() + public DaSaSoDbContextFactory(Action configureDbContext) { - - } - public DaSaSoDbContextFactory(string connectionString) - { - _connectionString = connectionString; + _configureDbContext = configureDbContext; } + public DaSaSoDbContext CreateDbContext() { - var options = new DbContextOptionsBuilder(); + DbContextOptionsBuilder? options = new DbContextOptionsBuilder(); + _configureDbContext(options); //_connectionString = "Host = localhost; Database = dasaso; Username = kansan; Password = kansan"; - options.UseNpgsql(_connectionString); - DaSaSoDbContext result = new DaSaSoDbContext(options.Options); - return result; + //options.UseNpgsql(_connectionString); + //DaSaSoDbContext result = new DaSaSoDbContext(options.Options); + return new DaSaSoDbContext(options.Options); } - + /* public DaSaSoDbContext CreateDbContext(string[]? args = null) { var options = new DbContextOptionsBuilder(); @@ -37,5 +35,6 @@ namespace DaSaSo.EntityFramework DaSaSoDbContext result = new DaSaSoDbContext(options.Options); return result; } + */ } } diff --git a/DaSaSo.EntityFramework/Services/BuildingsiteDataService.cs b/DaSaSo.EntityFramework/Services/BuildingsiteDataService.cs index fc6ad94..f739623 100644 --- a/DaSaSo.EntityFramework/Services/BuildingsiteDataService.cs +++ b/DaSaSo.EntityFramework/Services/BuildingsiteDataService.cs @@ -35,9 +35,14 @@ namespace DaSaSo.EntityFramework.Services return await _nonQueryDataService.Delete(id); } - public Task Get(int id) + public async Task Get(int id) { - throw new NotImplementedException(); + using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) + { + Buildingsite entity = await context.Buildingsites.FirstOrDefaultAsync((e) => e.Id == id); + + return entity; + } } public Task> GetAll() diff --git a/DaSaSo.EntityFramework/Services/ProjectDataService.cs b/DaSaSo.EntityFramework/Services/ProjectDataService.cs index 1216b66..f7f2ec5 100644 --- a/DaSaSo.EntityFramework/Services/ProjectDataService.cs +++ b/DaSaSo.EntityFramework/Services/ProjectDataService.cs @@ -31,9 +31,14 @@ namespace DaSaSo.EntityFramework.Services return await _nonQueryDataService.Delete(id); } - public Task Get(int id) + public async Task Get(int id) { - throw new NotImplementedException(); + using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) + { + Project entity = await context.Projects.FirstOrDefaultAsync((e) => e.Id == id); + + return entity; + } } public async Task> GetAllByClient(Client client) diff --git a/DaSaSo.EntityFramework/Services/SewerpointDataService.cs b/DaSaSo.EntityFramework/Services/SewerpointDataService.cs new file mode 100644 index 0000000..f2de6f8 --- /dev/null +++ b/DaSaSo.EntityFramework/Services/SewerpointDataService.cs @@ -0,0 +1,53 @@ +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.EntityFramework.Services.Common; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.EntityFramework.Services +{ + public class SewerpointDataService : IDataService + { + private readonly DaSaSoDbContextFactory _contextFactory; + private readonly NonQueryDataService _nonQueryDataService; + + public SewerpointDataService(DaSaSoDbContextFactory contextFactory) + { + _contextFactory = contextFactory; + _nonQueryDataService = new NonQueryDataService(contextFactory); + } + + public async Task Create(SewerPoint entity) + { + return await _nonQueryDataService.Create(entity); + } + + public SewerPoint CreateNonAsync(SewerPoint entity) + { + throw new NotImplementedException(); + } + + public async Task Delete(int id) + { + return await _nonQueryDataService.Delete(id); + } + + public Task Get(int id) + { + throw new NotImplementedException(); + } + + public Task> GetAll() + { + throw new NotImplementedException(); + } + + public async Task Update(int id, SewerPoint entity) + { + return await _nonQueryDataService.Update(id, entity); + } + } +} diff --git a/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs b/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs index d1c3480..f4c85ef 100644 --- a/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs +++ b/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs @@ -75,7 +75,7 @@ namespace DaSaSo.ViewModel private void SaveBuildingsite() { _buildingsiteService.Update(Model.Id, Model); - //_renavigator.Renavigate(new BuildingsiteListViewModel(_buildingsiteService,_actualProject,_renavigator)) + _renavigator.Renavigate(new BuildingsiteListViewModel(_buildingsiteService, _actualProject, _renavigator, null)); } } } diff --git a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs index 771b636..105f415 100644 --- a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs +++ b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs @@ -33,6 +33,7 @@ namespace DaSaSo.ViewModel { _selectedBuildingsite = value; OnPropertyChanged(); + OnPropertyChanged(nameof(CanSelectBuildingsite)); } } } @@ -40,6 +41,7 @@ namespace DaSaSo.ViewModel public ICommand SelectCommand { get; set; } public ICommand AddCommand { get; set; } public ICommand EditCommand { get; set; } + public bool CanSelectBuildingsite => SelectedBuildingsite != null; public BuildingsiteListViewModel(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator,IBuildingsiteService buildingsiteService) { @@ -49,7 +51,7 @@ namespace DaSaSo.ViewModel Buildingsites = new ObservableCollection(); EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this); SelectCommand = new SelectBuildingsiteCommand(actualProject, this); - AddCommand = new AddBuildingsiteCommand(actualProject, buildingsiteService); + AddCommand = new AddBuildingsiteCommand(buildingSiteDataService, actualProject, buildingsiteService,renavigator); LoadBuildingsites(); } diff --git a/DaSaSo.ViewModel/ClientListViewModel.cs b/DaSaSo.ViewModel/ClientListViewModel.cs index 23ccb8d..48c01f3 100644 --- a/DaSaSo.ViewModel/ClientListViewModel.cs +++ b/DaSaSo.ViewModel/ClientListViewModel.cs @@ -36,9 +36,10 @@ namespace DaSaSo.ViewModel if(_selectedClient != value) { _selectedClient = value; - //SelectClientCommand.NotifyCanExecuteChanged(); - //EditClientCommand.NotifyCanExecuteChanged(); + OnPropertyChanged(); + OnPropertyChanged(nameof(CanSelectClient)); + } } } @@ -56,6 +57,8 @@ namespace DaSaSo.ViewModel } } + public bool CanSelectClient => _selectedClient != null; + public ClientListViewModel(IDataService dataService, IActualProject actualProject, IRenavigator renavigator) { Clients = new ObservableCollection(); diff --git a/DaSaSo.ViewModel/Commands/AddBuildingsiteCommand.cs b/DaSaSo.ViewModel/Commands/AddBuildingsiteCommand.cs index 10e1bcd..6ed4115 100644 --- a/DaSaSo.ViewModel/Commands/AddBuildingsiteCommand.cs +++ b/DaSaSo.ViewModel/Commands/AddBuildingsiteCommand.cs @@ -1,4 +1,5 @@ using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; using DaSaSo.Domain.Services.BuildingsiteServices; using DaSaSo.ViewModel.Interface; using System; @@ -11,18 +12,23 @@ namespace DaSaSo.ViewModel.Commands { public class AddBuildingsiteCommand: AsyncCommandBase { - private IActualProject actualProject; - private IBuildingsiteService buildingsiteService; - - public AddBuildingsiteCommand(IActualProject actualProject, IBuildingsiteService buildingsiteService) + private IActualProject _actualProject; + private IBuildingsiteService _buildingsiteService; + private readonly IRenavigator _renavigator; + private readonly IDataService _dataservice; + public AddBuildingsiteCommand(IDataService dataService, IActualProject actualProject, IBuildingsiteService buildingsiteService, IRenavigator renavigator) { - this.actualProject = actualProject; - this.buildingsiteService = buildingsiteService; + _actualProject = actualProject; + _buildingsiteService = buildingsiteService; + _dataservice = dataService; + _renavigator = renavigator; } public override async Task ExecuteAsync(object? parameter) { - Buildingsite buildingsite = await buildingsiteService.CreateBuildingsite(actualProject.AktuellProjekt); + Buildingsite buildingsite = await _buildingsiteService.CreateBuildingsite(_actualProject.AktuellProjekt); + _actualProject.SetBuildingSite(buildingsite); + _renavigator.Renavigate(new BuildingsiteEditViewModel(_dataservice, _actualProject, _renavigator)); } } } diff --git a/DaSaSo.ViewModel/Commands/AddProjectCommand.cs b/DaSaSo.ViewModel/Commands/AddProjectCommand.cs index 89d0cc4..c61d96e 100644 --- a/DaSaSo.ViewModel/Commands/AddProjectCommand.cs +++ b/DaSaSo.ViewModel/Commands/AddProjectCommand.cs @@ -12,18 +12,26 @@ namespace DaSaSo.ViewModel.Commands { public class AddProjectCommand : AsyncCommandBase { - private readonly IActualProject actualProject; + private readonly IActualProject _actualProject; private readonly IProjectService _projectService; + private readonly IRenavigator _renavigator; + private readonly IDataService _genericDataService; + - public AddProjectCommand(IActualProject actualProject, IProjectService projectService) + public AddProjectCommand(IDataService genericDataService, IActualProject actualProject, IProjectService projectService, IRenavigator renavigator) { - this.actualProject = actualProject; + _actualProject = actualProject; _projectService = projectService; + _renavigator = renavigator; + _genericDataService = genericDataService; } + public override async Task ExecuteAsync(object? parameter) { - Project pro = await _projectService.CreateProject(actualProject.AktuellClient); + Project pro = await _projectService.CreateProject(_actualProject.AktuellClient); + _actualProject.SetProject(pro); + _renavigator.Renavigate(new ProjectEditViewModel(_genericDataService, _actualProject, _renavigator, _projectService)); } } diff --git a/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs b/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs index 0b17468..1b0eac9 100644 --- a/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs +++ b/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs @@ -23,6 +23,7 @@ namespace DaSaSo.ViewModel.Commands public override async Task ExecuteAsync(object? parameter) { SewerObject sewerobject = await _sewerObjectService.CreateSewerObject(_actualProject.AktuellBaustelle); + _actualProject.SetSewerObject(sewerobject); } } } diff --git a/DaSaSo.ViewModel/Commands/AsyncCommandBase.cs b/DaSaSo.ViewModel/Commands/AsyncCommandBase.cs index 9345649..4a26eb2 100644 --- a/DaSaSo.ViewModel/Commands/AsyncCommandBase.cs +++ b/DaSaSo.ViewModel/Commands/AsyncCommandBase.cs @@ -21,9 +21,14 @@ namespace DaSaSo.ViewModel.Commands CanExecuteChanged?.Invoke(this, new EventArgs()); } } + + protected void OnCanExecuteChanged() + { + CanExecuteChanged?.Invoke(this, new EventArgs()); + } - public bool CanExecute(object? parameter) + public virtual bool CanExecute(object? parameter) { return !IsExecuting; } diff --git a/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs b/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs index 3c679b4..0e1464f 100644 --- a/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs +++ b/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs @@ -4,6 +4,7 @@ using DaSaSo.Domain.Services.BuildingsiteServices; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -16,7 +17,11 @@ namespace DaSaSo.ViewModel.Commands private IActualProject actualProject; private IRenavigator renavigator; private IBuildingsiteService buildingsiteService; - private BuildingsiteListViewModel buildingsiteListViewModel; + private BuildingsiteListViewModel _buildingsiteListViewModel; + public override bool CanExecute(object? parameter) + { + return _buildingsiteListViewModel.CanSelectBuildingsite; + } public EditBuildingsiteCommand(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator, IBuildingsiteService buildingsiteService, BuildingsiteListViewModel buildingsiteListViewModel) { @@ -24,12 +29,19 @@ namespace DaSaSo.ViewModel.Commands this.actualProject = actualProject; this.renavigator = renavigator; this.buildingsiteService = buildingsiteService; - this.buildingsiteListViewModel = buildingsiteListViewModel; + _buildingsiteListViewModel = buildingsiteListViewModel; + _buildingsiteListViewModel.PropertyChanged += BuildingsiteListViewModel_PropertyChanged; + } + + private void BuildingsiteListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(_buildingsiteListViewModel.CanSelectBuildingsite)) + OnCanExecuteChanged(); } public override async Task ExecuteAsync(object? parameter) { - actualProject.SetBuildingSite(buildingsiteListViewModel.SelectedBuildingsite); + actualProject.SetBuildingSite(_buildingsiteListViewModel.SelectedBuildingsite); renavigator.Renavigate(new BuildingsiteEditViewModel(buildingSiteDataService, actualProject, renavigator)); } } diff --git a/DaSaSo.ViewModel/Commands/EditClientCommand.cs b/DaSaSo.ViewModel/Commands/EditClientCommand.cs index eb2b822..ccb770c 100644 --- a/DaSaSo.ViewModel/Commands/EditClientCommand.cs +++ b/DaSaSo.ViewModel/Commands/EditClientCommand.cs @@ -3,6 +3,7 @@ using DaSaSo.Domain.Services; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Text; @@ -16,22 +17,34 @@ namespace DaSaSo.ViewModel.Commands private readonly IDataService dataservice; private readonly IActualProject actualProject; private readonly IRenavigator renavigator; - private readonly ClientListViewModel clientListViewModel; + private readonly ClientListViewModel _clientListViewModel; + + public override bool CanExecute(object? parameter) + { + return _clientListViewModel.CanSelectClient; + } - - public EditClientCommand(IDataService dataservice, IActualProject actualProject,IRenavigator renavigator, ClientListViewModel clientListViewModel) { this.dataservice = dataservice; this.actualProject = actualProject; this.renavigator = renavigator; - this.clientListViewModel = clientListViewModel; + this._clientListViewModel = clientListViewModel; + _clientListViewModel.PropertyChanged += _clientListViewModel_PropertyChanged; + + } + + private void _clientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient)) + { + OnCanExecuteChanged(); + } } - public override async Task ExecuteAsync(object? parameter) { - actualProject.SetClient(clientListViewModel.SelectedClient); + actualProject.SetClient(_clientListViewModel.SelectedClient); renavigator.Renavigate(new ClientEditViewModel(dataservice,actualProject,renavigator)); } } diff --git a/DaSaSo.ViewModel/Commands/EditProjectCommand.cs b/DaSaSo.ViewModel/Commands/EditProjectCommand.cs index 88f095c..a7e2c78 100644 --- a/DaSaSo.ViewModel/Commands/EditProjectCommand.cs +++ b/DaSaSo.ViewModel/Commands/EditProjectCommand.cs @@ -4,6 +4,7 @@ using DaSaSo.Domain.Services.ProjectServices; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -17,6 +18,10 @@ namespace DaSaSo.ViewModel.Commands private IRenavigator _renavigator; private readonly IProjectService _projectService; private ProjectListViewModel _projectListViewModel; + public override bool CanExecute(object? parameter) + { + return _projectListViewModel.SelectedProject != null; + } public EditProjectCommand(IDataService dataService, IActualProject actualProject, IRenavigator renavigator, IProjectService projectService, ProjectListViewModel projectListViewModel) { @@ -25,7 +30,13 @@ namespace DaSaSo.ViewModel.Commands this._renavigator = renavigator; this._projectService = projectService; this._projectListViewModel = projectListViewModel; - + _projectListViewModel.PropertyChanged += _projectListViewModel_PropertyChanged; + } + + private void _projectListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(_projectListViewModel.CanSelectProject)) + OnCanExecuteChanged(); } public override async Task ExecuteAsync(object? parameter) diff --git a/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs b/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs new file mode 100644 index 0000000..aa62986 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs @@ -0,0 +1,54 @@ +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.Domain.Services.SewerObjectService; +using DaSaSo.Domain.Services.SewerPointServices; +using DaSaSo.ViewModel.Interface; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.ViewModel.Commands +{ + public class SaveSewerCommand : AsyncCommandBase + { + private readonly SewerMainListViewModel _sewerMainListViewModel; + private IDataService _dataService; + private readonly ISewerpointService _sewerPointService; + private IActualProject _actualProject; + private readonly ISewerObjectService _sewerObjectService; + private readonly IRenavigator _renavigator; + private readonly ISewerMainNavigator _navigator; + + public SaveSewerCommand(SewerMainListViewModel sewerMainListViewModel, + IDataService dataService, + IActualProject actualProject, + ISewerObjectService sewerObjectService, + IRenavigator renavigator, + ISewerpointService sewerpointService, + ISewerMainNavigator navigator) + { + _sewerMainListViewModel = sewerMainListViewModel; + _dataService = dataService; + _sewerPointService = sewerpointService; + _actualProject = actualProject; + _sewerObjectService = sewerObjectService; + _renavigator = renavigator; + _navigator = navigator; + } + + + public override async Task ExecuteAsync(object? parameter) + { + _navigator.CurrentViewModel = null; + var s = _navigator; + //Debugger.Break(); + //var d = await _sewerPointService.CreateOrFindSewerpoint("123"); + //_actualProject.AktuellSewerObject.PunktOben = d; + _ = await _dataService.Update(_actualProject.AktuellSewerObject.Id, _actualProject.AktuellSewerObject); + _renavigator.Renavigate(new SewerObjectListViewModel(_dataService, _actualProject, _sewerObjectService)); + } + } +} diff --git a/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs b/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs index 211a173..cff5521 100644 --- a/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs +++ b/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs @@ -1,6 +1,7 @@ using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,11 +12,22 @@ namespace DaSaSo.ViewModel.Commands { private IActualProject _actualProject; private BuildingsiteListViewModel _buildingsiteListViewModel; + public override bool CanExecute(object? parameter) + { + return _buildingsiteListViewModel.CanSelectBuildingsite; + } public SelectBuildingsiteCommand(IActualProject actualProject, BuildingsiteListViewModel buildingsiteListViewModel) { this._actualProject = actualProject; this._buildingsiteListViewModel = buildingsiteListViewModel; + _buildingsiteListViewModel.PropertyChanged += _buildingsiteListViewModel_PropertyChanged; + } + + private void _buildingsiteListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(_buildingsiteListViewModel.CanSelectBuildingsite)) + OnCanExecuteChanged(); } public override async Task ExecuteAsync(object? parameter) diff --git a/DaSaSo.ViewModel/Commands/SelectClientCommand.cs b/DaSaSo.ViewModel/Commands/SelectClientCommand.cs index 3ed1096..4546807 100644 --- a/DaSaSo.ViewModel/Commands/SelectClientCommand.cs +++ b/DaSaSo.ViewModel/Commands/SelectClientCommand.cs @@ -1,6 +1,7 @@ using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -13,10 +14,24 @@ namespace DaSaSo.ViewModel.Commands private readonly IActualProject _actualProject; private readonly ClientListViewModel _clientListViewModel; + + public override bool CanExecute(object? parameter) + { + return _clientListViewModel.CanSelectClient; + } public SelectClientCommand(IActualProject actualProject, ClientListViewModel clientListViewModel) { _actualProject = actualProject; _clientListViewModel = clientListViewModel; + _clientListViewModel.PropertyChanged += _clientListViewModel_PropertyChanged; + } + + private void _clientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient)) + { + OnCanExecuteChanged(); + } } public override async Task ExecuteAsync(object? parameter) diff --git a/DaSaSo.ViewModel/Commands/SelectProjectCommand.cs b/DaSaSo.ViewModel/Commands/SelectProjectCommand.cs index 90d73c4..748f2dc 100644 --- a/DaSaSo.ViewModel/Commands/SelectProjectCommand.cs +++ b/DaSaSo.ViewModel/Commands/SelectProjectCommand.cs @@ -1,6 +1,7 @@ using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,11 +12,22 @@ namespace DaSaSo.ViewModel.Commands { private readonly IActualProject _actualProject; private readonly ProjectListViewModel _projectListViewModel; + public override bool CanExecute(object? parameter) + { + return _projectListViewModel.SelectedProject != null; + } public SelectProjectCommand(IActualProject actualProject, ProjectListViewModel projectListViewModel) { _actualProject = actualProject; _projectListViewModel = projectListViewModel; + _projectListViewModel.PropertyChanged += _projectListViewModel_PropertyChanged; + } + + private void _projectListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(_projectListViewModel.CanSelectProject)) + OnCanExecuteChanged(); } public override async Task ExecuteAsync(object? parameter) diff --git a/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj b/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj index d4933eb..b639982 100644 --- a/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj +++ b/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj @@ -5,6 +5,16 @@ enable + + + + + + + Always + + + @@ -15,4 +25,8 @@ + + + + diff --git a/DaSaSo.ViewModel/Interface/IActualProject.cs b/DaSaSo.ViewModel/Interface/IActualProject.cs index c1057ef..a418023 100644 --- a/DaSaSo.ViewModel/Interface/IActualProject.cs +++ b/DaSaSo.ViewModel/Interface/IActualProject.cs @@ -21,7 +21,7 @@ namespace DaSaSo.ViewModel.Interface void SetClient(Client client); void SetProject(Project project, bool notification = true); void SetBuildingSite(Buildingsite buildingsite); - void SetSewerObject(SewerObject sewerObject); + void SetSewerObject(SewerObject sewerObject, bool notification = true); void ResetProject(); void ResetBuildingSite(); } diff --git a/DaSaSo.ViewModel/ProjectListViewModel.cs b/DaSaSo.ViewModel/ProjectListViewModel.cs index 41efd2f..7852338 100644 --- a/DaSaSo.ViewModel/ProjectListViewModel.cs +++ b/DaSaSo.ViewModel/ProjectListViewModel.cs @@ -33,6 +33,7 @@ namespace DaSaSo.ViewModel { _selectedProject = value; OnPropertyChanged(); + OnPropertyChanged(nameof(CanSelectProject)); } } } @@ -40,6 +41,7 @@ namespace DaSaSo.ViewModel public ICommand SelectCommand { get; set; } public ICommand AddCommand { get; set; } public ICommand EditCommand { get; set; } + public bool CanSelectProject => SelectedProject != null; public ProjectListViewModel(IDataService genericDataService, IActualProject actualProject, IRenavigator renavigator, IProjectService projectService) { Projekte = new ObservableCollection(); @@ -49,7 +51,7 @@ namespace DaSaSo.ViewModel this.actualProject = actualProject; this.renavigator = renavigator; SelectCommand = new SelectProjectCommand(actualProject, this); - AddCommand = new AddProjectCommand(actualProject, projectService); + AddCommand = new AddProjectCommand(genericDataService,actualProject, projectService,renavigator); EditCommand = new EditProjectCommand(genericDataService, actualProject, renavigator,projectService, this); LoadProjecte(); } diff --git a/DaSaSo.ViewModel/SewerMainListViewModel.cs b/DaSaSo.ViewModel/SewerMainListViewModel.cs index 8dd61e7..99b114d 100644 --- a/DaSaSo.ViewModel/SewerMainListViewModel.cs +++ b/DaSaSo.ViewModel/SewerMainListViewModel.cs @@ -1,4 +1,9 @@ -using DaSaSo.ViewModel.Commands; +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.Domain.Services.SewerObjectService; +using DaSaSo.Domain.Services.SewerPointServices; +using DaSaSo.EntityFramework.Services; +using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using Microsoft.Toolkit.Mvvm.Input; using System; @@ -13,16 +18,49 @@ namespace DaSaSo.ViewModel public class SewerMainListViewModel : BaseViewModel { private ISewerMainNavigator _navigator { get; set; } + private readonly SewerObjectDataService _dataservice; + private readonly ISewerObjectService _sewerObjectService; + private readonly IRenavigator _renavigator; private IActualProject _actualProject { get; set; } public ICommand UpdateCurrentSewerViewModelCommand { get; } + public ICommand SaveCommand { get; set; } public BaseViewModel CurrentSewerViewModel => _navigator.CurrentViewModel; - public SewerMainListViewModel(ISewerMainNavigator navigator,IActualProject actualProject, IViewModelSewerMainFactory viewModelFactory) + public bool IsLoading + { + get => _isLoading; + set + { + if (_isLoading != value) + { + _isLoading = value; + OnPropertyChanged(); + } + } + } + + bool _isLoading = true; + public bool CanSaveSewer => !string.IsNullOrEmpty(_actualProject.AktuellSewerObject.StreetName); + + public SewerMainListViewModel(IDataService dataService, ISewerMainNavigator navigator,IActualProject actualProject, IViewModelSewerMainFactory viewModelFactory, IRenavigator renavigator, ISewerObjectService sewerObjectService, ISewerpointService sewerpointService) { _navigator = navigator; _actualProject = actualProject; + _dataservice = (SewerObjectDataService)dataService; + _renavigator = renavigator; + _sewerObjectService = sewerObjectService; + SaveCommand = new SaveSewerCommand(this,dataService,actualProject,sewerObjectService,renavigator,sewerpointService,navigator); //RelayCommand(SaveSewer); + LoadModel(); UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory); _navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel)); } + + private async void LoadModel() + { + IsLoading = true; + SewerObject sewer = await _dataservice.Get(_actualProject.AktuellSewerObject.Id); + _actualProject.SetSewerObject(sewer,false); + IsLoading = false; + } } } diff --git a/DaSaSo.ViewModel/SewerStammdatenViewModel.cs b/DaSaSo.ViewModel/SewerStammdatenViewModel.cs index d592d88..e31fe81 100644 --- a/DaSaSo.ViewModel/SewerStammdatenViewModel.cs +++ b/DaSaSo.ViewModel/SewerStammdatenViewModel.cs @@ -14,7 +14,6 @@ namespace DaSaSo.ViewModel public class SewerStammdatenViewModel : BaseViewModel { private readonly IActualProject _actualProject; - private readonly SewerObjectDataService _dataservice; private SewerObject _model; public string Haltungsname @@ -36,9 +35,9 @@ namespace DaSaSo.ViewModel get => Model.DN; set { - if(Model.SewerLength != value) + if(Model.DN != value) { - Model.SewerLength = value; + Model.DN = value; OnPropertyChanged(); } } @@ -55,7 +54,7 @@ namespace DaSaSo.ViewModel } } } - public decimal Leitungslenght { + public decimal Leitungslength { get => Model.SewerLength; set { @@ -105,24 +104,24 @@ namespace DaSaSo.ViewModel OnPropertyChanged(nameof(Unterepunkt)); OnPropertyChanged(nameof(Durchmesser)); OnPropertyChanged(nameof(Material)); - OnPropertyChanged(nameof(Leitungslenght)); + OnPropertyChanged(nameof(Leitungslength)); OnPropertyChanged(nameof(Strasse)); OnPropertyChanged(nameof(Ort)); } } - public SewerStammdatenViewModel(IDataService dataService,IActualProject actualProject) + public SewerStammdatenViewModel(IActualProject actualProject) { _actualProject = actualProject; - _dataservice = (SewerObjectDataService)dataService; - Model = new SewerObject(); + + Model = _actualProject.AktuellSewerObject; - LoadModel(); + } - private async void LoadModel() + ~SewerStammdatenViewModel() { - Model = await _dataservice.Get(_actualProject.AktuellSewerObject.Id); + } } } diff --git a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs index a18f669..dfba01b 100644 --- a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs +++ b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs @@ -58,10 +58,11 @@ namespace DaSaSo.ViewModel.State.ActualState OnBuildingSiteChanged(); } - public void SetSewerObject(SewerObject sewerObject) + public void SetSewerObject(SewerObject sewerObject,bool notification = true) { AktuellSewerObject = sewerObject; - OnSewerObjectChanged(); + if(notification) + OnSewerObjectChanged(); } diff --git a/DaSaSo.ViewModel/Window/MainWindowViewModel.cs b/DaSaSo.ViewModel/Window/MainWindowViewModel.cs index 6a6fed0..786dcb4 100644 --- a/DaSaSo.ViewModel/Window/MainWindowViewModel.cs +++ b/DaSaSo.ViewModel/Window/MainWindowViewModel.cs @@ -1,5 +1,6 @@ using DaSaSo.Domain.Enums; using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; using DaSaSo.EntityFramework; using DaSaSo.EntityFramework.Services; using DaSaSo.ViewModel.Commands; @@ -7,10 +8,12 @@ using DaSaSo.ViewModel.Enums; using DaSaSo.ViewModel.Interface; using DaSaSo.ViewModel.State.Navigation; using Microsoft.Toolkit.Mvvm.Input; +using Microsoft.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Input; @@ -21,9 +24,15 @@ namespace DaSaSo.ViewModel { private readonly IViewModelAbstractFactory viewModelFactory; private readonly IActualProject _actualProject; + private readonly IDataService _clientDataService; + private readonly IDataService _projectDataService; + private readonly IDataService _buildingsiteDataService; + private string _clientname = ""; private string _projektname = ""; private string _buildingsitename = ""; + RegistryKey registry; + const string REGISTRYKEY = "HKEY_CURRENT_USER\\Software\\Cosysda\\DaSaSo"; public bool CanSelectProject { get => _actualProject.AktuellClient != null; } public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; } public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; } @@ -69,11 +78,32 @@ namespace DaSaSo.ViewModel } } } + public string ApplicationTitle + { + get + { + string gitVersion; + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DaSaSo.ViewModel.version.txt")) + using (StreamReader reader = new StreamReader(stream)) + { + gitVersion = reader.ReadToEnd(); + } + return string.Format("Cosysda Sanierung Software : {0}",gitVersion); + } + } - public MainWindowViewModel(IMainWindowNavigator navigator,IViewModelAbstractFactory viewModelFactory, IActualProject actualProject) + public MainWindowViewModel(IMainWindowNavigator navigator,IViewModelAbstractFactory viewModelFactory, + IActualProject actualProject, + IDataService clientDataService, + IDataService projectDataService, + IDataService buildingsiteDataService + ) { this._navigator = navigator; this.viewModelFactory = viewModelFactory; + _clientDataService = clientDataService; + _projectDataService = projectDataService; + _buildingsiteDataService = buildingsiteDataService; _navigator.StateChanged += _navigator_StateChanged; @@ -84,6 +114,59 @@ namespace DaSaSo.ViewModel _actualProject.ProjectChanged += _actualProject_ProjectChanged; _actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged; _actualProject.SewerObjectChanged += _actualProject_SewerObjectChanged; + + ladeRegistry(); + } + + private async void ladeRegistry() + { + + registry = Registry.CurrentUser.OpenSubKey("Software\\Cosysda\\DaSaSo"); + if (registry == null) initRegistry(); + int clientid = Convert.ToInt32((string)registry.GetValue("lastclient", "-1")); + if (clientid == -1) + return; + Client lastClient = await _clientDataService.Get(clientid); + if (lastClient == null) + { + saveInRegistry("lastclient", "-1"); + return; + } + _actualProject.SetClient(lastClient); + + int projectid = Convert.ToInt32((string)registry.GetValue("lastproject", "-1")); + if (projectid == -1) + return; + Project lastProject = await _projectDataService.Get(projectid); + if(lastProject == null) + { + saveInRegistry("lastproject","-1"); + return; + } + _actualProject.SetProject(lastProject); + + int buildingsiteid = Convert.ToInt32((string)registry.GetValue("lastbuildingsite", "-1")); + if (buildingsiteid == -1) + return; + Buildingsite lastBuildingiste = await _buildingsiteDataService.Get(buildingsiteid); + if(lastBuildingiste == null) + { + saveInRegistry("lastbuildingsite","-1"); + return; + } + _actualProject.SetBuildingSite(lastBuildingiste); + + } + + private void saveInRegistry(string key, string value) + { + Registry.SetValue(REGISTRYKEY, key, value); + } + + private void initRegistry() + { + Registry.CurrentUser.CreateSubKey("Software\\Cosysda\\DaSaSo"); + ladeRegistry(); } private void _actualProject_SewerObjectChanged(object? sender, EventArgs e) @@ -98,6 +181,7 @@ namespace DaSaSo.ViewModel private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e) { + saveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString()); Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber; OnPropertyChanged(nameof(CanSelectSewerObjects)); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects); @@ -105,6 +189,7 @@ namespace DaSaSo.ViewModel private void _actualProject_ProjectChanged(object? sender, EventArgs e) { + saveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString()); Projektname = _actualProject.AktuellProjekt.Name; OnPropertyChanged(nameof(CanSelectBuildingSite)); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites); @@ -112,6 +197,7 @@ namespace DaSaSo.ViewModel private void _actualProject_ClientChanged(object? sender, EventArgs e) { + saveInRegistry("lastclient", _actualProject.AktuellClient.Id.ToString()); ClientName = _actualProject.AktuellClient.Firstname; OnPropertyChanged(nameof(CanSelectProject)); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Projects); diff --git a/DaSaSo.Wpf/App.xaml.cs b/DaSaSo.Wpf/App.xaml.cs index c32b1ee..84e8288 100644 --- a/DaSaSo.Wpf/App.xaml.cs +++ b/DaSaSo.Wpf/App.xaml.cs @@ -10,6 +10,8 @@ using DaSaSo.ViewModel.Factories; using DaSaSo.ViewModel.Interface; using DaSaSo.ViewModel.State.ActualState; using DaSaSo.ViewModel.State.Navigation; +using DaSaSo.Wpf.HostBuilders; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -32,6 +34,14 @@ namespace DaSaSo.Wpf public static IHostBuilder CreateHostBuilder(string[]? args = null) { return Host.CreateDefaultBuilder(args) + .AddConfiguration() + .AddServices() + .AddViewModels() + .AddStores() + .AddDBContext(); + } + + /* return Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(c=> { c.AddJsonFile("appsettings.json"); @@ -41,7 +51,8 @@ namespace DaSaSo.Wpf { string connectionString = context.Configuration.GetConnectionString("default"); - + + services.AddDbContext(o => o.UseSqlServer(connectionString)); services.AddSingleton(new DaSaSoDbContextFactory(connectionString)); services.AddSingleton, ClientDataService>(); @@ -72,7 +83,6 @@ namespace DaSaSo.Wpf services.AddSingleton>(services => { return () => new SewerStammdatenViewModel( - services.GetRequiredService>(), services.GetRequiredService() ); }); @@ -93,9 +103,14 @@ namespace DaSaSo.Wpf services.AddSingleton>(services => { return () => new SewerMainListViewModel( + services.GetRequiredService>(), services.GetRequiredService(), services.GetRequiredService(), - services.GetRequiredService() + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService() + ), + services.GetRequiredService() ); }); services.AddSingleton>(services => @@ -138,14 +153,19 @@ namespace DaSaSo.Wpf services.AddScoped(); }); } + */ protected override void OnStartup(StartupEventArgs e) { Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; - _host.Start(); + DaSaSoDbContextFactory contextFactory = _host.Services.GetRequiredService(); + using (DaSaSoDbContext context = contextFactory.CreateDbContext()) + { + context.Database.Migrate(); + } MainWindow? window = new MainWindow() { DataContext = _host.Services.GetRequiredService() }; window.Show(); diff --git a/DaSaSo.Wpf/Controls/MainWindowNavigationBar.xaml b/DaSaSo.Wpf/Controls/MainWindowNavigationBar.xaml index 37277c2..33a6fb9 100644 --- a/DaSaSo.Wpf/Controls/MainWindowNavigationBar.xaml +++ b/DaSaSo.Wpf/Controls/MainWindowNavigationBar.xaml @@ -10,9 +10,10 @@ xmlns:converters="clr-namespace:DaSaSo.Wpf.Converters" d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> + d:DesignHeight="300" d:DesignWidth="200"> + @@ -25,5 +26,9 @@ + + + + diff --git a/DaSaSo.Wpf/Converters/EqualValueToBooleanConverter.cs b/DaSaSo.Wpf/Converters/EqualValueToBooleanConverter.cs new file mode 100644 index 0000000..dbb0dd5 --- /dev/null +++ b/DaSaSo.Wpf/Converters/EqualValueToBooleanConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Data; + +namespace DaSaSo.Wpf.Converters +{ + public class EqualValueToBooleanConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if(value.ToString() == "DaSaSo.ViewModel.SewerMainListViewModel") + return Visibility.Visible; + return Visibility.Hidden; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddConfigurationHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddConfigurationHostBuilderExtensions.cs new file mode 100644 index 0000000..0aae8f5 --- /dev/null +++ b/DaSaSo.Wpf/HostBuilders/AddConfigurationHostBuilderExtensions.cs @@ -0,0 +1,23 @@ +using Microsoft.Extensions.Configuration; +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 AddConfigurationHostBuilderExtensions + { + public static IHostBuilder AddConfiguration(this IHostBuilder host) + { + host.ConfigureAppConfiguration(c => + { + c.AddJsonFile("appsettings.json"); + c.AddEnvironmentVariables(); + }); + return host; + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddDbContextHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddDbContextHostBuilderExtensions.cs new file mode 100644 index 0000000..8c66fcc --- /dev/null +++ b/DaSaSo.Wpf/HostBuilders/AddDbContextHostBuilderExtensions.cs @@ -0,0 +1,41 @@ +using DaSaSo.EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +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 AddDbContextHostBuilderExtensions + { + public static IHostBuilder AddDBContext(this IHostBuilder host) + { + host.ConfigureServices((context,services) => + { + string connectionString = ""; + Action configureDbContext = null; + string databaseToUse = context.Configuration.GetConnectionString("databaseToUse"); + if(databaseToUse.Equals("default")) + { + connectionString = context.Configuration.GetConnectionString("default"); + configureDbContext = o => o.UseNpgsql(connectionString); + } + else if(databaseToUse.Equals("sqlite")) + { + connectionString = context.Configuration.GetConnectionString("sqlite"); + configureDbContext = o => o.UseSqlite(connectionString); + } + + + services.AddDbContext(configureDbContext); + services.AddSingleton(new DaSaSoDbContextFactory(configureDbContext)); + }); + return host; + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs new file mode 100644 index 0000000..c0f532d --- /dev/null +++ b/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs @@ -0,0 +1,37 @@ +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.EntityFramework.Services; +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 AddServicesHostBuilderExtensions + { + public static IHostBuilder AddServices(this IHostBuilder host) + { + host.ConfigureServices(services => + { + services.AddSingleton, ClientDataService>(); + services.AddSingleton, ProjectDataService>(); + services.AddSingleton, BuildingsiteDataService>(); + services.AddSingleton, SewerObjectDataService>(); + services.AddSingleton, SewerpointDataService>(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + }); + return host; + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddStoresHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddStoresHostBuilderExtensions.cs new file mode 100644 index 0000000..f3160c6 --- /dev/null +++ b/DaSaSo.Wpf/HostBuilders/AddStoresHostBuilderExtensions.cs @@ -0,0 +1,27 @@ +using DaSaSo.ViewModel.Interface; +using DaSaSo.ViewModel.State.ActualState; +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 AddStoresHostBuilderExtensions + { + public static IHostBuilder AddStores(this IHostBuilder host) + { + host.ConfigureServices(services => + { + services.AddSingleton(); + services.AddSingleton(); + services.AddSingleton(); + }); + return host; + } + } +} diff --git a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs new file mode 100644 index 0000000..8b499bb --- /dev/null +++ b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -0,0 +1,121 @@ +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(); + services.AddSingleton(); + + services.AddSingleton>(services => + { + return () => new HomeViewModel(); + }); + services.AddSingleton>(services => + { + return () => new ClientEditViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService() + )); + }); + services.AddSingleton>(services => + { + return () => new HomeViewModel(); + }); + services.AddTransient>(services => + { + return () => new SewerStammdatenViewModel( + services.GetRequiredService() + ); + }); + services.AddSingleton>(services => + { + return () => new SewerDamageListViewModel(); + }); + + services.AddSingleton>(services => + { + return () => new ClientListViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService() + )); + }); + services.AddSingleton>(services => + { + return () => new SewerMainListViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService() + ), + services.GetRequiredService(), + services.GetRequiredService() + ); + }); + services.AddSingleton>(services => + { + return () => new ProjectListViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService()), + services.GetRequiredService() + + ); + }); + + services.AddSingleton>(services => + { + return () => new BuildingsiteListViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + new ViewModelDelegateRenavigator( + services.GetRequiredService()), + services.GetRequiredService() + ); + }); + + services.AddSingleton>(services => + { + return () => new SewerObjectListViewModel( + services.GetRequiredService>(), + services.GetRequiredService(), + services.GetRequiredService() + ); + }); + + services.AddSingleton(); + services.AddSingleton(); + }); + return host; + } + + } +} diff --git a/DaSaSo.Wpf/Service/WindowService.cs b/DaSaSo.Wpf/Service/WindowService.cs deleted file mode 100644 index bff9426..0000000 --- a/DaSaSo.Wpf/Service/WindowService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using DaSaSo.ViewModel.Interface; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; - -namespace DaSaSo.Wpf.Service -{ - class WindowService - { - - } -} diff --git a/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml index 7bfbc84..eb9298b 100644 --- a/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml +++ b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml @@ -8,7 +8,7 @@ d:DesignHeight="450" d:DesignWidth="800"> - +