Kanalschaden werden richtig geparsed

This commit is contained in:
HuskyTeufel
2021-09-30 16:27:28 +02:00
parent 9da7090883
commit 98494be3cf
37 changed files with 576 additions and 136 deletions

4
.editorconfig Normal file
View File

@@ -0,0 +1,4 @@
[*.cs]
# CA1416: Validate platform compatibility
dotnet_diagnostic.CA1416.severity = none

View File

@@ -5,4 +5,8 @@
<Nullable>disable</Nullable> <Nullable>disable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup>
</Project> </Project>

View File

@@ -3,6 +3,7 @@
public enum ESewerWindowViewType public enum ESewerWindowViewType
{ {
SewerStammdaten, SewerStammdaten,
SewerDamageList SewerDamageList,
SewerDamageEdit
} }
} }

View File

@@ -3,6 +3,7 @@
[Flags] [Flags]
public enum EDamageType public enum EDamageType
{ {
NONE = 0,
Riss = 1, Riss = 1,
Bruch = 2, Bruch = 2,
Scherbe = 4, Scherbe = 4,
@@ -18,9 +19,10 @@
[Flags] [Flags]
public enum EPreparationType public enum EPreparationType
{ {
NONE = 0,
CleanedHD = 1, CleanedHD = 1,
CleanedMechanisch = 2, CleanedMechanisch = 2,
CleanedRoborter = 4, CleanedRoboter = 4,
FaekalienFrei = 8 FaekalienFrei = 8
} }
public class SewerDamage : DomainObject public class SewerDamage : DomainObject

View File

@@ -22,7 +22,7 @@ namespace DaSaSo.EntityFramework
public DaSaSoDbContext CreateDbContext() public DaSaSoDbContext CreateDbContext()
{ {
DbContextOptionsBuilder<DaSaSoDbContext>? options = new DbContextOptionsBuilder<DaSaSoDbContext>(); DbContextOptionsBuilder<DaSaSoDbContext>? options = new();
_configureDbContext(options); _configureDbContext(options);
//_connectionString = "Host = localhost; Database = dasaso; Username = kansan; Password = kansan"; //_connectionString = "Host = localhost; Database = dasaso; Username = kansan; Password = kansan";
//options.UseNpgsql(_connectionString); //options.UseNpgsql(_connectionString);
@@ -34,7 +34,7 @@ namespace DaSaSo.EntityFramework
{ {
var options = new DbContextOptionsBuilder<DaSaSoDbContext>(); var options = new DbContextOptionsBuilder<DaSaSoDbContext>();
options.UseNpgsql("Host = localhost; Database = dasaso; Username = kansan; Password = kansan"); options.UseNpgsql("Host = localhost; Database = dasaso; Username = kansan; Password = kansan");
DaSaSoDbContext result = new DaSaSoDbContext(options.Options); DaSaSoDbContext result = new(options.Options);
return result; return result;
} }
/* /*

View File

@@ -37,12 +37,10 @@ namespace DaSaSo.EntityFramework.Services
public async Task<Buildingsite> Get(int id) public async Task<Buildingsite> Get(int id)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ Buildingsite entity = await context.Buildingsites.FirstOrDefaultAsync((e) => e.Id == id);
Buildingsite entity = await context.Buildingsites.FirstOrDefaultAsync((e) => e.Id == id);
return entity; return entity;
}
} }
public Task<IEnumerable<Buildingsite>> GetAll() public Task<IEnumerable<Buildingsite>> GetAll()
@@ -54,11 +52,9 @@ namespace DaSaSo.EntityFramework.Services
{ {
// Get Clientid // Get Clientid
int id = project.Id; int id = project.Id;
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ IEnumerable<Buildingsite> entities = await context.Buildingsites.Where(x => x.Project.Id == id).ToListAsync();
IEnumerable<Buildingsite> entities = await context.Buildingsites.Where(x => x.Project.Id == id).ToListAsync(); return entities;
return entities;
}
} }
public async Task<Buildingsite> Update(int id, Buildingsite entity) public async Task<Buildingsite> Update(int id, Buildingsite entity)

View File

@@ -39,22 +39,18 @@ namespace DaSaSo.EntityFramework.Services
public async Task<Client> Get(int id) public async Task<Client> Get(int id)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ Client entity = await context.Clients.Include(a => a.Projects).FirstOrDefaultAsync((e) => e.Id == id);
Client entity = await context.Clients.Include(a => a.Projects).FirstOrDefaultAsync((e) => e.Id == id);
return entity; return entity;
}
} }
public async Task<IEnumerable<Client>> GetAll() public async Task<IEnumerable<Client>> GetAll()
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ IEnumerable<Client> entities = await context.Clients.ToListAsync();
IEnumerable<Client> entities = await context.Clients.ToListAsync();
return entities; return entities;
}
} }
public async Task<Client> Update(int id, Client entity) public async Task<Client> Update(int id, Client entity)

View File

@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -19,43 +20,35 @@ namespace DaSaSo.EntityFramework.Services.Common
} }
public async Task<T> Create(T entity) public async Task<T> Create(T entity)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ EntityEntry<T> createdEntity = await context.Set<T>().AddAsync(entity);
EntityEntry<T> createdEntity = await context.Set<T>().AddAsync(entity); await context.SaveChangesAsync();
await context.SaveChangesAsync(); return createdEntity.Entity;
return createdEntity.Entity;
}
} }
public T CreateNonAsync(T entity) public T CreateNonAsync(T entity)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ EntityEntry<T> createdEntity = context.Set<T>().Add(entity);
EntityEntry<T> createdEntity = context.Set<T>().Add(entity); context.SaveChanges();
context.SaveChanges(); return createdEntity.Entity;
return createdEntity.Entity;
}
} }
public async Task<bool> Delete(int id) public async Task<bool> Delete(int id)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ T entity = await context.Set<T>().FirstOrDefaultAsync((e) => e.Id == id);
T entity = await context.Set<T>().FirstOrDefaultAsync((e) => e.Id == id); context.Set<T>().Remove(entity);
context.Set<T>().Remove(entity); await context.SaveChangesAsync();
await context.SaveChangesAsync(); return true;
return true;
}
} }
public async Task<T> Update(int id, T entity) public async Task<T> Update(int id, T entity)
{ {
using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) using DaSaSoDbContext context = _contextFactory.CreateDbContext();
{ entity.Id = id;
entity.Id = id; context.Set<T>().Update(entity);
context.Set<T>().Update(entity); await context.SaveChangesAsync();
await context.SaveChangesAsync(); return entity;
return entity;
}
} }
} }
} }

View File

@@ -47,7 +47,7 @@ namespace DaSaSo.ViewModel
{ {
_actualProject = actualProject; _actualProject = actualProject;
_renavigator = renavigator; _renavigator = renavigator;
_buildingSiteDataService = buildingSiteDataService as BuildingsiteDataService; _buildingSiteDataService = (BuildingsiteDataService)buildingSiteDataService;
Buildingsites = new ObservableCollection<Buildingsite>(); Buildingsites = new ObservableCollection<Buildingsite>();
EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this); EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this);
SelectCommand = new SelectBuildingsiteCommand(actualProject, this); SelectCommand = new SelectBuildingsiteCommand(actualProject, this);

View File

@@ -14,7 +14,7 @@ namespace DaSaSo.ViewModel
public class ClientEditViewModel : BaseViewModel public class ClientEditViewModel : BaseViewModel
{ {
private Client _model; private Client _model;
private IDataService<Client> _dataService; private readonly IDataService<Client> _dataService;
private readonly IActualProject _actualProject; private readonly IActualProject _actualProject;
private readonly IRenavigator renavigator; private readonly IRenavigator renavigator;
@@ -32,9 +32,9 @@ namespace DaSaSo.ViewModel
this._model = _actualProject.AktuellClient; this._model = _actualProject.AktuellClient;
} }
private void SaveClient() private async void SaveClient()
{ {
_dataService.Update(Model.Id, Model); await _dataService.Update(Model.Id, Model);
renavigator.Renavigate(); renavigator.Renavigate();
} }
} }

View File

@@ -19,9 +19,7 @@ namespace DaSaSo.ViewModel
{ {
public ObservableCollection<Client> Clients { get; } public ObservableCollection<Client> Clients { get; }
private Client? _selectedClient; private Client? _selectedClient;
private IDataService<Client> _dataService; private readonly IDataService<Client> _dataService;
private readonly IRenavigator renavigator;
IEnumerable<Client>? result;
bool _isLoading = true; bool _isLoading = true;
public ICommand SelectCommand { get; set; } public ICommand SelectCommand { get; set; }
@@ -63,19 +61,14 @@ namespace DaSaSo.ViewModel
{ {
Clients = new ObservableCollection<Client>(); Clients = new ObservableCollection<Client>();
_dataService = dataService; _dataService = dataService;
this.renavigator = renavigator;
LoadClient(); LoadClient();
SelectCommand = new SelectClientCommand(actualProject, this); //= new RelayCommand(SelectClient, () => SelectedClient != null); SelectCommand = new SelectClientCommand(dataService,actualProject, this);
EditCommand = new EditClientCommand(_dataService,actualProject, editRenavigator, this); EditCommand = new EditClientCommand(_dataService,actualProject, editRenavigator, this);
AddNewClientCommand = new AddClientCommand(_dataService, actualProject, editRenavigator, this); AddNewClientCommand = new AddClientCommand(_dataService, actualProject, editRenavigator, this);
} }
~ClientListViewModel()
{
}
public async void LoadClient() public async void LoadClient()
{ {
IsLoading = true; IsLoading = true;
@@ -86,7 +79,7 @@ namespace DaSaSo.ViewModel
IsLoading = false; IsLoading = false;
} }
private void InitCollection(ObservableCollection<Client> target, IEnumerable<Client> source) private static void InitCollection(ObservableCollection<Client> target, IEnumerable<Client> source)
{ {
target.Clear(); target.Clear();
foreach (var i in source) foreach (var i in source)

View File

@@ -1,4 +1,6 @@
using DaSaSo.ViewModel.Interface; using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@@ -14,19 +16,24 @@ namespace DaSaSo.ViewModel.Commands
private readonly IActualProject _actualProject; private readonly IActualProject _actualProject;
private readonly ClientListViewModel _clientListViewModel; private readonly ClientListViewModel _clientListViewModel;
private readonly IDataService<Client> _dataservice;
public override bool CanExecute(object? parameter) public override bool CanExecute(object? parameter)
{ {
return _clientListViewModel.CanSelectClient; return _clientListViewModel.CanSelectClient;
} }
public SelectClientCommand(IActualProject actualProject, ClientListViewModel clientListViewModel) public SelectClientCommand(
IDataService<Client> dataService,
IActualProject actualProject,
ClientListViewModel clientListViewModel)
{ {
_actualProject = actualProject; _actualProject = actualProject;
_clientListViewModel = clientListViewModel; _clientListViewModel = clientListViewModel;
_clientListViewModel.PropertyChanged += _clientListViewModel_PropertyChanged; _clientListViewModel.PropertyChanged += ClientListViewModel_PropertyChanged;
_dataservice = dataService;
} }
private void _clientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) private void ClientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{ {
if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient)) if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient))
{ {
@@ -36,8 +43,10 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter) public override async Task ExecuteAsync(object? parameter)
{ {
var s = _clientListViewModel.SelectedClient; Client? _selectedClient = _clientListViewModel.SelectedClient;
_actualProject.SetClient(s); if (_selectedClient == null) return;
_selectedClient = await _dataservice.Get(_selectedClient.Id);
_actualProject.SetClient(_selectedClient);
} }
} }

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class SelectDamageCommand : AsyncCommandBase
{
private readonly SewerMainListViewModel _sewerMainListViewModel;
public SelectDamageCommand(SewerMainListViewModel sewerMainListViewModel)
{
_sewerMainListViewModel = sewerMainListViewModel;
}
public override Task ExecuteAsync(object? parameter)
{
var d = _sewerMainListViewModel;
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,50 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Controls
{
public class SewerDamageControllViewModel : BaseViewModel
{
public bool Riss { get; set; }
public bool Bruch { get; set; }
public bool Scherbe { get; set; }
public bool Wurzel { get; set; }
public bool Inkrustation { get; set; }
public bool Ablagerungen { get; set; }
public bool EinrageneStutzen { get; set; }
public bool Infiltration { get; set; }
public SewerDamageControllViewModel(EDamageType damageType)
{
Riss = damageType.HasFlag(EDamageType.Riss);
Bruch = damageType.HasFlag(EDamageType.Bruch);
Scherbe = damageType.HasFlag(EDamageType.Scherbe);
Wurzel = damageType.HasFlag(EDamageType.Wurzel);
Inkrustation = damageType.HasFlag(EDamageType.Inkrustation);
Ablagerungen = damageType.HasFlag(EDamageType.Ablagerung);
EinrageneStutzen = damageType.HasFlag(EDamageType.EinrageneStutzen);
Infiltration = damageType.HasFlag(EDamageType.Infiltration);
}
public EDamageType CalculateDamageFlags()
{
EDamageType result = EDamageType.NONE;
if (Riss) result |= EDamageType.Riss;
if (Bruch) result |= EDamageType.Bruch;
if (Scherbe) result |= EDamageType.Scherbe;
if (Wurzel) result |= EDamageType.Wurzel;
if (Inkrustation) result |= EDamageType.Inkrustation;
if (Ablagerungen) result |= EDamageType.Ablagerung;
if (EinrageneStutzen) result |= EDamageType.EinrageneStutzen;
if (Infiltration) result |= EDamageType.Infiltration;
return result;
}
}
}

View File

@@ -0,0 +1,36 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Controls
{
public class SewerPreperationControllViewModel : BaseViewModel
{
public bool HD { get; set; }
public bool Mechanisch { get; set; }
public bool Roboter { get; set; }
public bool Faekalienfrei { get; set; }
public SewerPreperationControllViewModel(EPreparationType preparationType)
{
HD = preparationType.HasFlag(EPreparationType.CleanedHD);
Mechanisch = preparationType.HasFlag(EPreparationType.CleanedMechanisch);
Roboter = preparationType.HasFlag(EPreparationType.CleanedRoboter);
Faekalienfrei = preparationType.HasFlag(EPreparationType.FaekalienFrei);
}
public EPreparationType CalculatePreparationFlags()
{
EPreparationType result = EPreparationType.NONE;
if (HD) result |= EPreparationType.CleanedHD;
if (Mechanisch) result |= EPreparationType.CleanedMechanisch;
if (Roboter) result |= EPreparationType.CleanedRoboter;
if (Faekalienfrei) result |= EPreparationType.FaekalienFrei;
return result;
}
}
}

View File

@@ -12,15 +12,17 @@ namespace DaSaSo.ViewModel.Factories
{ {
private CreateViewModel<SewerStammdatenViewModel> _createSewerStammdatenViewModel; private CreateViewModel<SewerStammdatenViewModel> _createSewerStammdatenViewModel;
private CreateViewModel<SewerDamageListViewModel> _createSewerDamageListViewModel; private CreateViewModel<SewerDamageListViewModel> _createSewerDamageListViewModel;
private CreateViewModel<SewerDamageEditViewModel> _createSewerDamageEditViewModel;
public SewerWindowViewModelFactory( public SewerWindowViewModelFactory(
CreateViewModel<SewerStammdatenViewModel> createSewerStammdatenViewModel, CreateViewModel<SewerStammdatenViewModel> createSewerStammdatenViewModel,
CreateViewModel<SewerDamageListViewModel> createSewerDamageListViewModel CreateViewModel<SewerDamageListViewModel> createSewerDamageListViewModel,
CreateViewModel<SewerDamageEditViewModel> createSewerDamageEditViewModel
) )
{ {
_createSewerStammdatenViewModel = createSewerStammdatenViewModel; _createSewerStammdatenViewModel = createSewerStammdatenViewModel;
_createSewerDamageListViewModel = createSewerDamageListViewModel; _createSewerDamageListViewModel = createSewerDamageListViewModel;
_createSewerDamageEditViewModel = createSewerDamageEditViewModel;
} }
public BaseViewModel CreateViewModel(ESewerWindowViewType viewType) public BaseViewModel CreateViewModel(ESewerWindowViewType viewType)
@@ -29,6 +31,7 @@ namespace DaSaSo.ViewModel.Factories
{ {
case ESewerWindowViewType.SewerStammdaten: return _createSewerStammdatenViewModel(); case ESewerWindowViewType.SewerStammdaten: return _createSewerStammdatenViewModel();
case ESewerWindowViewType.SewerDamageList: return _createSewerDamageListViewModel(); case ESewerWindowViewType.SewerDamageList: return _createSewerDamageListViewModel();
case ESewerWindowViewType.SewerDamageEdit: return _createSewerDamageEditViewModel();
default: default:
throw new ArgumentException("The Viewtype does not have a ViewModel", "viewType"); throw new ArgumentException("The Viewtype does not have a ViewModel", "viewType");
} }

View File

@@ -0,0 +1,49 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Controls;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class SewerDamageEditViewModel : BaseViewModel
{
private SewerDamage? _damage;
public SewerDamageControllViewModel damageControllViewModel { get; set; }
public SewerPreperationControllViewModel preperationControllViewModel { get; set; }
public IRelayCommand Berechne { get; set; }
public SewerDamage? Damage
{
get => _damage;
set
{
_damage = value;
OnPropertyChanged();
}
}
public SewerDamageEditViewModel(IActualProject actualProject)
{
if (actualProject.AktuellSewerDamage == null) throw new NullReferenceException(nameof(actualProject.AktuellSewerDamage));
Damage = actualProject.AktuellSewerDamage;
damageControllViewModel = new SewerDamageControllViewModel(Damage.DamageType);
preperationControllViewModel = new SewerPreperationControllViewModel(Damage.PreparationType);
Berechne = new RelayCommand(() =>
{
Damage.DamageType = damageControllViewModel.CalculateDamageFlags();
Damage.PreparationType = preperationControllViewModel.CalculatePreparationFlags();
});
}
}
}

View File

@@ -17,14 +17,15 @@ namespace DaSaSo.ViewModel
{ {
public class SewerMainListViewModel : BaseViewModel public class SewerMainListViewModel : BaseViewModel
{ {
private ISewerMainNavigator _navigator { get; set; } private ISewerMainNavigator Navigator { get; set; }
private readonly SewerObjectDataService _dataservice; private readonly SewerObjectDataService _dataservice;
private readonly ISewerObjectService _sewerObjectService; private readonly ISewerObjectService _sewerObjectService;
private readonly IRenavigator _renavigator; private readonly IRenavigator _renavigator;
private IActualProject _actualProject { get; set; } private IActualProject ActualProject { get; set; }
public ICommand UpdateCurrentSewerViewModelCommand { get; } public ICommand UpdateCurrentSewerViewModelCommand { get; }
public ICommand CloseCommand { get; set; } public ICommand CloseCommand { get; set; }
public BaseViewModel CurrentSewerViewModel => _navigator.CurrentViewModel; public ICommand SchadenCommand { get; set; }
public BaseViewModel CurrentSewerViewModel => Navigator.CurrentViewModel;
public bool IsLoading public bool IsLoading
{ {
@@ -38,8 +39,8 @@ namespace DaSaSo.ViewModel
} }
} }
} }
string _schaden = "llooo"; private SewerDamage _schaden;
public string Schaden public SewerDamage Schaden
{ {
get => _schaden; get => _schaden;
set set
@@ -48,43 +49,54 @@ namespace DaSaSo.ViewModel
OnPropertyChanged(); OnPropertyChanged();
} }
} }
public string Strasse { get => _actualProject.AktuellSewerObject.StreetName; }
public string AktualObject { get => _actualProject.AktuellSewerObject.ObjektName; } public string Strasse { get => ActualProject.AktuellSewerObject.StreetName; }
public string AktualObject { get => ActualProject.AktuellSewerObject.ObjektName; }
bool _isLoading = true; bool _isLoading = true;
public bool CanSaveSewer => !string.IsNullOrEmpty(_actualProject.AktuellSewerObject.StreetName); public bool CanSaveSewer => !string.IsNullOrEmpty(ActualProject.AktuellSewerObject.StreetName);
public SewerMainListViewModel(IDataService<SewerObject> dataService, ISewerMainNavigator navigator,IActualProject actualProject, IViewModelSewerMainFactory viewModelFactory, IRenavigator renavigator, ISewerObjectService sewerObjectService, ISewerpointService sewerpointService) public SewerMainListViewModel(
IDataService<SewerObject> dataService,
ISewerMainNavigator navigator,
IActualProject actualProject,
IViewModelSewerMainFactory viewModelFactory,
IRenavigator renavigator,
ISewerObjectService sewerObjectService,
ISewerpointService sewerpointService
)
{ {
_navigator = navigator; Navigator = navigator;
_actualProject = actualProject; ActualProject = actualProject;
_dataservice = (SewerObjectDataService)dataService; _dataservice = (SewerObjectDataService)dataService;
_renavigator = renavigator; _renavigator = renavigator;
_sewerObjectService = sewerObjectService; _sewerObjectService = sewerObjectService;
CloseCommand = new SaveSewerCommand(_dataservice,_actualProject,_sewerObjectService,_renavigator,_navigator); //RelayCommand(SaveSewer); CloseCommand = new SaveSewerCommand(_dataservice,ActualProject,_sewerObjectService,_renavigator,Navigator); //RelayCommand(SaveSewer);
LoadModel(); LoadModel();
UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(_navigator, viewModelFactory); UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(Navigator, viewModelFactory);
_navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel)); Navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel));
_actualProject.SewerDamageChanged += _actualProject_SewerDamageChanged; ActualProject.SewerDamageChanged += ActualProject_SewerDamageChanged;
//SchadenCommand = UpdateCurrentSewerViewModelCommand.Execute(); // new SelectDamageCommand(this);
} }
private void _actualProject_SewerDamageChanged(object? sender, EventArgs e) private void ActualProject_SewerDamageChanged(object? sender, EventArgs e)
{ {
Schaden = _actualProject.AktuellSewerDamage.Distance.ToString(); Schaden = ActualProject.AktuellSewerDamage;
OnPropertyChanged(nameof(Schaden)); OnPropertyChanged(nameof(Schaden));
} }
private async void LoadModel() private async void LoadModel()
{ {
IsLoading = true; IsLoading = true;
SewerObject sewer = await _dataservice.Get(_actualProject.AktuellSewerObject.Id); SewerObject sewer = await _dataservice.Get(ActualProject.AktuellSewerObject.Id);
_actualProject.SetSewerObject(sewer,false); ActualProject.SetSewerObject(sewer,false);
IsLoading = false; IsLoading = false;
} }
public override void Dispose() public override void Dispose()
{ {
_navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel)); Navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel));
base.Dispose(); base.Dispose();
} }
} }

View File

@@ -48,6 +48,8 @@ namespace DaSaSo.ViewModel.State.ActualState
#endregion #endregion
public void SetClient(Client client, bool notification = true) public void SetClient(Client client, bool notification = true)
{ {
//ResetProject();
//ResetBuildingSite();
AktuellClient = client; AktuellClient = client;
if(notification) if(notification)
OnClientChanged(); OnClientChanged();
@@ -55,6 +57,7 @@ namespace DaSaSo.ViewModel.State.ActualState
public void SetProject(Project project, bool notification = true) public void SetProject(Project project, bool notification = true)
{ {
AktuellProjekt = project; AktuellProjekt = project;
if(notification) if(notification)
OnProjectChanged(); OnProjectChanged();

View File

@@ -23,6 +23,12 @@ namespace DaSaSo.ViewModel
public sealed class MainWindowViewModel : BaseViewModel public sealed class MainWindowViewModel : BaseViewModel
{ {
private readonly IViewModelAbstractFactory viewModelFactory; private readonly IViewModelAbstractFactory viewModelFactory;
public MainWindowViewModel(IViewModelAbstractFactory viewModelFactory)
{
this.viewModelFactory = viewModelFactory;
}
private readonly IActualProject _actualProject; private readonly IActualProject _actualProject;
private readonly IDataService<Client> _clientDataService; private readonly IDataService<Client> _clientDataService;
private readonly IDataService<Project> _projectDataService; private readonly IDataService<Project> _projectDataService;
@@ -31,15 +37,15 @@ namespace DaSaSo.ViewModel
private string _clientname = ""; private string _clientname = "";
private string _projektname = ""; private string _projektname = "";
private string _buildingsitename = ""; private string _buildingsitename = "";
RegistryKey registry; private readonly RegistryKey? registry;
const string REGISTRYKEY = "HKEY_CURRENT_USER\\Software\\Cosysda\\DaSaSo"; const string REGISTRYKEY = "HKEY_CURRENT_USER\\Software\\Cosysda\\DaSaSo";
public bool CanSelectProject { get => _actualProject.AktuellClient != null; } public bool CanSelectProject { get => _actualProject.AktuellClient != null; }
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; } public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; } public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
public IMainWindowNavigator _navigator { get; set; } public IMainWindowNavigator Navigator { get; set; }
public ICommand UpdateCurrentViewModelCommand { get; } public ICommand UpdateCurrentViewModelCommand { get; }
public BaseViewModel CurrentViewModel => _navigator.CurrentViewModel; public BaseViewModel CurrentViewModel => Navigator.CurrentViewModel;
public string ClientName public string ClientName
{ {
@@ -78,13 +84,17 @@ namespace DaSaSo.ViewModel
} }
} }
} }
public string ApplicationTitle public static string ApplicationTitle
{ {
get get
{ {
string gitVersion; string gitVersion;
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DaSaSo.ViewModel.version.txt")) using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DaSaSo.ViewModel.version.txt"))
using (StreamReader reader = new StreamReader(stream)) #pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type.
#pragma warning disable CS8604 // Possible null reference argument.
using (StreamReader reader = new(stream))
#pragma warning restore CS8604 // Possible null reference argument.
{ {
gitVersion = reader.ReadToEnd(); gitVersion = reader.ReadToEnd();
} }
@@ -99,37 +109,37 @@ namespace DaSaSo.ViewModel
IDataService<Buildingsite> buildingsiteDataService IDataService<Buildingsite> buildingsiteDataService
) )
{ {
this._navigator = navigator; this.Navigator = navigator;
this.viewModelFactory = viewModelFactory; this.viewModelFactory = viewModelFactory;
_clientDataService = clientDataService; _clientDataService = clientDataService;
_projectDataService = projectDataService; _projectDataService = projectDataService;
_buildingsiteDataService = buildingsiteDataService; _buildingsiteDataService = buildingsiteDataService;
_navigator.StateChanged += _navigator_StateChanged; registry = Registry.CurrentUser.OpenSubKey("Software\\Cosysda\\DaSaSo");
if (registry == null) InitRegistry();
Navigator.StateChanged += Navigator_StateChanged;
UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory); UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory);
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Home); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Home);
_actualProject = actualProject; _actualProject = actualProject;
_actualProject.ClientChanged += _actualProject_ClientChanged; _actualProject.ClientChanged += ActualProject_ClientChanged;
_actualProject.ProjectChanged += _actualProject_ProjectChanged; _actualProject.ProjectChanged += ActualProject_ProjectChanged;
_actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged; _actualProject.BuildingSiteChanged += ActualProject_BuildingSiteChanged;
_actualProject.SewerObjectChanged += _actualProject_SewerObjectChanged; _actualProject.SewerObjectChanged += ActualProject_SewerObjectChanged;
ladeRegistry(); LadeRegistry();
} }
private async void 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")); int clientid = Convert.ToInt32((string)registry.GetValue("lastclient", "-1"));
if (clientid == -1) if (clientid == -1)
return; return;
Client lastClient = await _clientDataService.Get(clientid); Client lastClient = await _clientDataService.Get(clientid);
if (lastClient == null) if (lastClient == null)
{ {
saveInRegistry("lastclient", "-1"); SaveInRegistry("lastclient", "-1");
return; return;
} }
_actualProject.SetClient(lastClient); _actualProject.SetClient(lastClient);
@@ -140,64 +150,65 @@ namespace DaSaSo.ViewModel
Project lastProject = await _projectDataService.Get(projectid); Project lastProject = await _projectDataService.Get(projectid);
if(lastProject == null) if(lastProject == null)
{ {
saveInRegistry("lastproject","-1"); SaveInRegistry("lastproject","-1");
return; return;
} }
_actualProject.SetProject(lastProject); _actualProject.SetProject(lastProject);
int buildingsiteid = Convert.ToInt32((string)registry.GetValue("lastbuildingsite", "-1")); string? value = registry.GetValue("lastbuildingsite", "-1") as string;
int buildingsiteid = Convert.ToInt32(value);
if (buildingsiteid == -1) if (buildingsiteid == -1)
return; return;
Buildingsite lastBuildingiste = await _buildingsiteDataService.Get(buildingsiteid); Buildingsite lastBuildingiste = await _buildingsiteDataService.Get(buildingsiteid);
if(lastBuildingiste == null) if(lastBuildingiste == null)
{ {
saveInRegistry("lastbuildingsite","-1"); SaveInRegistry("lastbuildingsite","-1");
return; return;
} }
_actualProject.SetBuildingSite(lastBuildingiste); _actualProject.SetBuildingSite(lastBuildingiste);
} }
private void saveInRegistry(string key, string value) private static void SaveInRegistry(string key, string value)
{ {
Registry.SetValue(REGISTRYKEY, key, value); Registry.SetValue(REGISTRYKEY, key, value);
} }
private void initRegistry() private void InitRegistry()
{ {
Registry.CurrentUser.CreateSubKey("Software\\Cosysda\\DaSaSo"); Registry.CurrentUser.CreateSubKey("Software\\Cosysda\\DaSaSo");
ladeRegistry(); LadeRegistry();
} }
private void _actualProject_SewerObjectChanged(object? sender, EventArgs e) private void ActualProject_SewerObjectChanged(object? sender, EventArgs e)
{ {
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
} }
private void _navigator_StateChanged() private void Navigator_StateChanged()
{ {
OnPropertyChanged(nameof(CurrentViewModel)); OnPropertyChanged(nameof(CurrentViewModel));
} }
private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e) private void ActualProject_BuildingSiteChanged(object? sender, EventArgs e)
{ {
saveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString()); SaveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString());
Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber; Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber;
OnPropertyChanged(nameof(CanSelectSewerObjects)); OnPropertyChanged(nameof(CanSelectSewerObjects));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects);
} }
private void _actualProject_ProjectChanged(object? sender, EventArgs e) private void ActualProject_ProjectChanged(object? sender, EventArgs e)
{ {
saveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString()); SaveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString());
Projektname = _actualProject.AktuellProjekt.Name; Projektname = _actualProject.AktuellProjekt.Name;
OnPropertyChanged(nameof(CanSelectBuildingSite)); OnPropertyChanged(nameof(CanSelectBuildingSite));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites);
} }
private void _actualProject_ClientChanged(object? sender, EventArgs e) private void ActualProject_ClientChanged(object? sender, EventArgs e)
{ {
saveInRegistry("lastclient", _actualProject.AktuellClient.Id.ToString()); SaveInRegistry("lastclient", _actualProject.AktuellClient.Id.ToString());
ClientName = _actualProject.AktuellClient.Firstname; ClientName = _actualProject.AktuellClient.Firstname;
OnPropertyChanged(nameof(CanSelectProject)); OnPropertyChanged(nameof(CanSelectProject));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Projects); UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Projects);

View File

@@ -12,7 +12,7 @@
<RadioButton Content="Stammdaten" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerStammdaten}" Margin="20" /> <RadioButton Content="Stammdaten" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerStammdaten}" Margin="20" />
<RadioButton Content="Schäden" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageList}" Margin="20" /> <RadioButton Content="Schäden" Style="{StaticResource ToggleButtonList}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageList}" Margin="20" />
<RadioButton Content="Schließen" Style="{StaticResource ToggleButtonList}" Command="{Binding CloseCommand}" Margin="20" /> <RadioButton Content="Schließen" Style="{StaticResource ToggleButtonList}" Command="{Binding CloseCommand}" Margin="20" />
<RadioButton Content="{Binding Schaden}" Style="{StaticResource ToggleButtonList}" /> <RadioButton Content="{Binding Schaden.Distance,FallbackValue='Damage'}" Command="{Binding UpdateCurrentSewerViewModelCommand}" CommandParameter="{x:Static nav:ESewerWindowViewType.SewerDamageEdit}" Style="{StaticResource ToggleButtonList}" />
</StackPanel> </StackPanel>

View File

@@ -13,13 +13,14 @@ namespace DaSaSo.Wpf.Converters
{ {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{ {
return (((int)value & (int)parameter) == (int)value); bool result = (((int)value & (int)parameter) == (int)value);
return result;
} }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ {
throw new NotImplementedException(); //EDamageType result = (EDamageType)parameter;
return null;
} }
} }
} }

View File

@@ -37,6 +37,15 @@
<Compile Update="View\SewerObjecte\SewerObjecteListView.xaml.cs"> <Compile Update="View\SewerObjecte\SewerObjecteListView.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="View\SewerObject\Controls\SewerDamage.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="View\SewerObject\Controls\SewerDamagePreparation.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="View\SewerObject\SewerDamageEditView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="View\SewerObject\SewerDamageListView.xaml.cs"> <Compile Update="View\SewerObject\SewerDamageListView.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
@@ -84,6 +93,15 @@
<Page Update="View\SewerObjecte\SewerObjecteListView.xaml"> <Page Update="View\SewerObjecte\SewerObjecteListView.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Update="View\SewerObject\Controls\SewerDamage.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="View\SewerObject\Controls\SewerDamagePreparation.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="View\SewerObject\SewerDamageEditView.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="View\SewerObject\SewerDamageListView.xaml"> <Page Update="View\SewerObject\SewerDamageListView.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>

View File

@@ -21,7 +21,7 @@ namespace DaSaSo.Wpf.HostBuilders
{ {
host.ConfigureServices(services => host.ConfigureServices(services =>
{ {
services.AddSingleton<IDataService<Client>, ClientDataService>(); services.AddTransient<IDataService<Client>, ClientDataService>();
services.AddSingleton<IDataService<Project>, ProjectDataService>(); services.AddSingleton<IDataService<Project>, ProjectDataService>();
services.AddTransient<IDataService<Buildingsite>, BuildingsiteDataService>(); services.AddTransient<IDataService<Buildingsite>, BuildingsiteDataService>();
services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>(); services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>();

View File

@@ -79,7 +79,12 @@ namespace DaSaSo.Wpf.HostBuilders
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IDataService<SewerObject>>()//, services.GetRequiredService<IDataService<SewerObject>>()//,
//services.GetRequiredService<SewerMainListViewModel>() //services.GetRequiredService<SewerMainListViewModel>()
);
});
services.AddTransient<CreateViewModel<SewerDamageEditViewModel>>(services =>
{
return () => new SewerDamageEditViewModel(
services.GetRequiredService<IActualProject>()
); );
}); });

View File

@@ -16,7 +16,7 @@ namespace DaSaSo.Wpf.Sampledata
Damages.Add(new SewerDamage() Damages.Add(new SewerDamage()
{ {
DamageType = EDamageType.Bruch | EDamageType.EinrageneStutzen, DamageType = EDamageType.Bruch | EDamageType.EinrageneStutzen,
PreparationType = EPreparationType.CleanedHD | EPreparationType.CleanedRoborter, PreparationType = EPreparationType.CleanedHD | EPreparationType.CleanedRoboter,
Distance = 12.5m Distance = 12.5m
}); });

View File

@@ -17,11 +17,12 @@
<RowDefinition /> <RowDefinition />
<RowDefinition /> <RowDefinition />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Projektname" />
<Label Grid.Row="1" Grid.Column="0" Content="Projektnummer" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding ProjektName}" /> <Label Grid.Row="0" Grid.Column="0" Content="Projektnummer" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding ProjektNummer}" /> <Label Grid.Row="1" Grid.Column="0" Content="Projektname" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding ProjektNummer}" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding ProjektName}" />
</Grid> </Grid>
<Button Content="Speichern" Command="{Binding SaveProjectCommand}" /> <Button Content="Speichern" Command="{Binding SaveProjectCommand}" />

View File

@@ -0,0 +1,52 @@
<UserControl x:Class="DaSaSo.Wpf.View.SewerObject.Controls.SewerDamage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:damagetype="clr-namespace:DaSaSo.Domain.Model;assembly=DaSaSo.Domain"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject.Controls" xmlns:controls="clr-namespace:DaSaSo.ViewModel.Controls;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=controls:SewerDamageControllViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid Background="LightBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Border Grid.Row="0" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="3">
<TextBlock TextAlignment="Center" Text="Schaden" />
</Border>
<Border Grid.Column="0" Grid.Row="1" BorderBrush="Black" BorderThickness="2,1">
<StackPanel>
<Label />
<Label Content="Rohrstatik schaden" />
<CheckBox Content="Riss" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Riss}" />
<CheckBox Content="Bruch" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Bruch}" />
<CheckBox Content="Scherbe" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Scherbe}" />
</StackPanel>
</Border>
<Border Grid.Column="1" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2">
<StackPanel>
<Label Content="Rohr Betrieb Hinderniss" />
<CheckBox Content="Wurzeln" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Wurzel }"/>
<CheckBox Content="Inkrustation" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Inkrustation }" />
<CheckBox Content="Ablagerungen" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Ablagerungen}" />
</StackPanel>
</Border>
<Border Grid.Column="2" Grid.Row="1" BorderBrush="Black" BorderThickness="1,2">
<StackPanel>
<Label Content="Sonstiges" />
<CheckBox Content="Einragende Anschluss" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding EinrageneStutzen }" />
<CheckBox Content="Infiltration" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Infiltration }"/>
</StackPanel>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DaSaSo.Wpf.View.SewerObject.Controls
{
/// <summary>
/// Interaction logic for SewerDamage.xaml
/// </summary>
public partial class SewerDamage : UserControl
{
public SewerDamage()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,26 @@
<UserControl x:Class="DaSaSo.Wpf.View.SewerObject.Controls.SewerDamagePreparation"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject.Controls" xmlns:controls="clr-namespace:DaSaSo.ViewModel.Controls;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=controls:SewerPreperationControllViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid Background="LightBlue">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderThickness="3" BorderBrush="Black">
<TextBlock Text="Vorbereitungen" TextAlignment="Center"/>
</Border>
<Border BorderBrush="Black" Grid.Row="1" BorderThickness="2">
<StackPanel>
<CheckBox Content="HD Gereinigt" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding HD}" />
<CheckBox Content="Mechanisch Gereinigt" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Mechanisch}" />
<CheckBox Content="Mit Roborter Gereinigt" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Roboter}" />
<CheckBox Content="Schadstelle Fäkalienfrei" Style="{StaticResource checkBoxCircleSmall}" IsChecked="{Binding Faekalienfrei}" />
</StackPanel>
</Border>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DaSaSo.Wpf.View.SewerObject.Controls
{
/// <summary>
/// Interaction logic for SewerDamagePreparation.xaml
/// </summary>
public partial class SewerDamagePreparation : UserControl
{
public SewerDamagePreparation()
{
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,24 @@
<UserControl x:Class="DaSaSo.Wpf.View.SewerObject.SewerDamageEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:selfControls="clr-namespace:DaSaSo.Wpf.View.SewerObject.Controls"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObject" xmlns:viewmodel="clr-namespace:DaSaSo.ViewModel;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:SewerDamageEditViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<selfControls:SewerDamage Grid.Column="0" Grid.Row="0" DataContext="{Binding damageControllViewModel}" />
<selfControls:SewerDamagePreparation Grid.Column="1" Grid.Row="0" DataContext="{Binding preperationControllViewModel}" />
<Button Grid.Column="0" Grid.Row="1" Content="Berechne" Command="{Binding Berechne}" />
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DaSaSo.Wpf.View.SewerObject
{
/// <summary>
/// Interaction logic for SewerDamageEditView.xaml
/// </summary>
public partial class SewerDamageEditView : UserControl
{
public SewerDamageEditView()
{
InitializeComponent();
}
}
}

View File

@@ -27,7 +27,7 @@
<DataGridCheckBoxColumn Header="HD Reinigung" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedHD}}" /> <DataGridCheckBoxColumn Header="HD Reinigung" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedHD}}" />
<DataGridCheckBoxColumn Header="Mechanisch gereinigt" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedMechanisch}}" /> <DataGridCheckBoxColumn Header="Mechanisch gereinigt" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedMechanisch}}" />
<DataGridCheckBoxColumn Header="Roboter" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedRoborter}}" /> <DataGridCheckBoxColumn Header="Roboter" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.CleanedRoboter}}" />
<DataGridCheckBoxColumn Header="Fäkalienfrei" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.FaekalienFrei}}" /> <DataGridCheckBoxColumn Header="Fäkalienfrei" Binding="{Binding PreparationType, Converter={StaticResource EqualPreperationTypeToBooleanConverter}, ConverterParameter={x:Static damagetype:EPreparationType.FaekalienFrei}}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@@ -15,6 +15,9 @@
<DataTemplate DataType="{x:Type viewmodel:SewerDamageListViewModel}"> <DataTemplate DataType="{x:Type viewmodel:SewerDamageListViewModel}">
<views:SewerDamageListView /> <views:SewerDamageListView />
</DataTemplate> </DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:SewerDamageEditViewModel}">
<views:SewerDamageEditView />
</DataTemplate>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</UserControl.Resources> </UserControl.Resources>
<Grid> <Grid>

View File

@@ -27,4 +27,39 @@
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
<Style x:Key="checkBoxCircleSmall" TargetType="{x:Type CheckBox}">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="0" />
<Setter Property="Content" Value="" />
<Setter Property="IsEnabled" Value="{Binding Change}" />
<Setter Property="FrameworkElement.FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Ellipse Name="outerEllipse" Grid.Column="0" Width="30" Height="30" StrokeThickness="2" Stroke="#FFFFFFFF" />
<Ellipse Name="highlightCircle" Grid.Column="0" Width="20" Height="20" Fill="#FFFFFFFF" />
<ContentPresenter Name="content" Grid.Column="1" Content="{TemplateBinding Content}" Margin="5,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter TargetName="highlightCircle" Property="Shape.Fill" Value="BlueViolet" />
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="False">
<Setter TargetName="highlightCircle" Property="Shape.Fill" Value="#FFFFFF" />
</Trigger>
<Trigger Property="UIElement.IsFocused" Value="True">
<Setter TargetName="outerEllipse" Property="Shape.Stroke" Value="BlueViolet" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary> </ResourceDictionary>

View File

@@ -17,6 +17,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DaSaSo.InMemoryProvider", "
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DaSaSo.DatabaseConverter", "DaSaSo.DatabaseConverter\DaSaSo.DatabaseConverter.csproj", "{E0842F1A-E74D-4B84-BD27-3585901B0DE9}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DaSaSo.DatabaseConverter", "DaSaSo.DatabaseConverter\DaSaSo.DatabaseConverter.csproj", "{E0842F1A-E74D-4B84-BD27-3585901B0DE9}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{C7F32A0F-BC57-43A4-8865-AC88C109676F}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU