Ohne Syncfusion
This commit is contained in:
@@ -46,6 +46,7 @@ namespace SewerStammGen.EntityFramework.Services.Common
|
|||||||
{
|
{
|
||||||
using SewerStammGenDbContext context = _contextFactory.CreateDbContext();
|
using SewerStammGenDbContext 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;
|
||||||
|
|||||||
@@ -55,6 +55,15 @@ namespace SewerStammGen.EntityFramework.Services
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Schacht> GetSchachtByNameAndProjekt(string name, int projektID)
|
||||||
|
{
|
||||||
|
using(SewerStammGenDbContext context = _contextFactory.CreateDbContext())
|
||||||
|
{
|
||||||
|
Schacht entity = await context.Set<Schacht>().Where(x => x.Projekt.Id.Equals(projektID) && x.Objektbezeichnung.Equals(name)).FirstOrDefaultAsync();
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<Schacht> Update(int id, Schacht entity)
|
public async Task<Schacht> Update(int id, Schacht entity)
|
||||||
{
|
{
|
||||||
return await _nonQueryDataService.Update(id, entity);
|
return await _nonQueryDataService.Update(id, entity);
|
||||||
|
|||||||
38
SewerStammGen/Commands/HaltungEditSaveCommand.cs
Normal file
38
SewerStammGen/Commands/HaltungEditSaveCommand.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using SewerStammGen.Shared.Contracts;
|
||||||
|
using SewerStammGen.WPF.ViewModel;
|
||||||
|
using Shared.Contracts;
|
||||||
|
using Shared.Domain;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SewerStammGen.WPF.Commands
|
||||||
|
{
|
||||||
|
internal class HaltungEditSaveCommand : AsyncCommandBase
|
||||||
|
{
|
||||||
|
private HaltungEditViewModel haltungEditViewModel;
|
||||||
|
private IDataService<Kanal> kanalDataService;
|
||||||
|
private ISchachtService schachtService;
|
||||||
|
|
||||||
|
public HaltungEditSaveCommand(HaltungEditViewModel haltungEditViewModel, IDataService<Kanal> kanalDataService, ISchachtService schachtService)
|
||||||
|
{
|
||||||
|
this.haltungEditViewModel = haltungEditViewModel;
|
||||||
|
this.kanalDataService = kanalDataService;
|
||||||
|
this.schachtService = schachtService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task ExecuteAsync(object? parameter)
|
||||||
|
{
|
||||||
|
if(haltungEditViewModel._oberePunkt != haltungEditViewModel.Model.StartSchacht.Objektbezeichnung)
|
||||||
|
{
|
||||||
|
Schacht s = await schachtService.FindSchachtByNameAndProjektID(haltungEditViewModel._oberePunkt, haltungEditViewModel.Model.Projekt.Id);
|
||||||
|
haltungEditViewModel.Model.StartSchacht = s;
|
||||||
|
}
|
||||||
|
haltungEditViewModel.Model = await kanalDataService.Update(haltungEditViewModel.Model.Id, haltungEditViewModel.Model);
|
||||||
|
Trace.WriteLine("Daten gespeichert");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -27,7 +27,11 @@ namespace SewerStammGen.HostBuilders
|
|||||||
if (databaseToUse.Equals("default"))
|
if (databaseToUse.Equals("default"))
|
||||||
{
|
{
|
||||||
connectionString = context.Configuration.GetConnectionString("default");
|
connectionString = context.Configuration.GetConnectionString("default");
|
||||||
configureDbContext = o => o.UseNpgsql(connectionString);
|
configureDbContext = o =>
|
||||||
|
{
|
||||||
|
o.EnableSensitiveDataLogging();
|
||||||
|
o.UseNpgsql(connectionString);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (databaseToUse.Equals("sqlite"))
|
else if (databaseToUse.Equals("sqlite"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,11 +72,11 @@ namespace SewerStammGen.HostBuilders
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
services.AddSingleton<CreateViewModel<HaltungEditViewModel>>(services =>
|
services.AddTransient<CreateViewModel<HaltungEditViewModel>>(services =>
|
||||||
{
|
{
|
||||||
return () => new HaltungEditViewModel(
|
return () => new HaltungEditViewModel(
|
||||||
services.GetRequiredService<IHaltungDataService>(),
|
services.GetRequiredService<IHaltungDataService>(),
|
||||||
services.GetRequiredService<ISchachtDataService>(),
|
services.GetRequiredService<ISchachtService>(),
|
||||||
services.GetRequiredService<IActualState>()
|
services.GetRequiredService<IActualState>()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using SewerStammGen.Shared.Contracts;
|
using SewerStammGen.Shared.Contracts;
|
||||||
|
using SewerStammGen.WPF.Commands;
|
||||||
using SewerStammGen.WPF.ViewModel.State;
|
using SewerStammGen.WPF.ViewModel.State;
|
||||||
using Shared.Contracts;
|
using Shared.Contracts;
|
||||||
using Shared.Domain;
|
using Shared.Domain;
|
||||||
@@ -17,41 +18,48 @@ namespace SewerStammGen.WPF.ViewModel
|
|||||||
{
|
{
|
||||||
private readonly IActualState _actualState;
|
private readonly IActualState _actualState;
|
||||||
private readonly IHaltungDataService _kanalDataService;
|
private readonly IHaltungDataService _kanalDataService;
|
||||||
|
private readonly ISchachtService _schachtService;
|
||||||
private Kanal _model;
|
private Kanal _model;
|
||||||
|
|
||||||
private ObservableCollection<Schacht> _verfuegbareSchaechte;
|
public Kanal Model
|
||||||
|
|
||||||
public ObservableCollection<Schacht> VerfuegbareSchaechte
|
|
||||||
{
|
{
|
||||||
get => _verfuegbareSchaechte;
|
get => _model;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Schacht ObereSchacht
|
|
||||||
{
|
|
||||||
get => _model.StartSchacht;
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if(_model.StartSchacht != value)
|
_model = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string _oberePunkt { get; set; }
|
||||||
|
public string _unterePunkt { get; set; }
|
||||||
|
|
||||||
|
public string ObereSchacht
|
||||||
|
{
|
||||||
|
get => _oberePunkt;
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_oberePunkt != value)
|
||||||
{
|
{
|
||||||
_model.StartSchacht = value;
|
_oberePunkt = value;
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public string UntereSchacht
|
||||||
public Schacht UntereSchacht
|
|
||||||
{
|
{
|
||||||
get => _model.EndSchacht;
|
get => _unterePunkt;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if(_model.EndSchacht != value)
|
if (_unterePunkt != value)
|
||||||
{
|
{
|
||||||
_model.EndSchacht = value;
|
_unterePunkt = value;
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public string Haltungsbezeichnung
|
public string Haltungsbezeichnung
|
||||||
{
|
{
|
||||||
@@ -104,44 +112,26 @@ namespace SewerStammGen.WPF.ViewModel
|
|||||||
|
|
||||||
public ICommand Speichern { get; set; }
|
public ICommand Speichern { get; set; }
|
||||||
|
|
||||||
public HaltungEditViewModel(IHaltungDataService kanalDataService,
|
public HaltungEditViewModel(IHaltungDataService kanalDataService,
|
||||||
ISchachtDataService schachtDataService,
|
ISchachtService schachtService,
|
||||||
IActualState actualState)
|
IActualState actualState)
|
||||||
{
|
{
|
||||||
_actualState = actualState;
|
_actualState = actualState;
|
||||||
_kanalDataService = kanalDataService;
|
_kanalDataService = kanalDataService;
|
||||||
_verfuegbareSchaechte = new ObservableCollection<Schacht>();
|
_schachtService = schachtService;
|
||||||
_model = new Kanal();
|
_model = new Kanal();
|
||||||
Speichern = new RelayCommand((x) => SaveKanal());
|
Speichern = new HaltungEditSaveCommand(this, kanalDataService, schachtService);
|
||||||
|
|
||||||
LoadModel();
|
LoadModel();
|
||||||
LoadSchaechte(schachtDataService);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void LoadSchaechte(ISchachtDataService schachtDataService)
|
|
||||||
{
|
|
||||||
var s = await schachtDataService.GetAll(_actualState.ProjektID);
|
|
||||||
InitCollection(_verfuegbareSchaechte, s);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void InitCollection(ObservableCollection<Schacht> dst, IEnumerable<Schacht> src)
|
|
||||||
{
|
|
||||||
dst.Clear();
|
|
||||||
foreach (var srcItem in src) {
|
|
||||||
dst.Add(srcItem);
|
|
||||||
}
|
|
||||||
OnPropertyChanged(nameof(VerfuegbareSchaechte));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveKanal()
|
|
||||||
{
|
|
||||||
_kanalDataService.Update(_model.Id, _model);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async void LoadModel()
|
private async void LoadModel()
|
||||||
{
|
{
|
||||||
_model = await _kanalDataService.Get(_actualState.HaltungID);
|
_model = await _kanalDataService.Get(_actualState.HaltungID);
|
||||||
|
UntereSchacht = _model.EndSchacht.Objektbezeichnung;
|
||||||
|
ObereSchacht = _model.StartSchacht.Objektbezeichnung;
|
||||||
OnPropertyChanged(nameof(ObereSchacht));
|
OnPropertyChanged(nameof(ObereSchacht));
|
||||||
OnPropertyChanged(nameof(UntereSchacht));
|
OnPropertyChanged(nameof(UntereSchacht));
|
||||||
OnPropertyChanged(nameof(Haltungslaenge));
|
OnPropertyChanged(nameof(Haltungslaenge));
|
||||||
|
|||||||
@@ -3,24 +3,10 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"
|
|
||||||
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
|
|
||||||
xmlns:local="clr-namespace:SewerStammGen.WPF.Views"
|
xmlns:local="clr-namespace:SewerStammGen.WPF.Views"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800">
|
d:DesignHeight="450" d:DesignWidth="800">
|
||||||
<UserControl.Resources>
|
|
||||||
<DataTemplate x:Key="headerTemplate">
|
|
||||||
<TextBox x:Name="searchTextBox" Margin="4" Text="{Binding Path=DataContext.SearchText, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=syncfusion:SfMultiColumnDropDownControl}}">
|
|
||||||
<behaviors:Interaction.Triggers>
|
|
||||||
<behaviors:EventTrigger EventName="TextChanged">
|
|
||||||
<local:TextBoxFilterAction TargetObject="{x:Reference Name=MultiColumnControl5}" />
|
|
||||||
</behaviors:EventTrigger>
|
|
||||||
|
|
||||||
</behaviors:Interaction.Triggers>
|
|
||||||
|
|
||||||
</TextBox>
|
|
||||||
</DataTemplate>
|
|
||||||
</UserControl.Resources>
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@@ -43,51 +29,8 @@
|
|||||||
<Label Grid.Row="1" Grid.Column="0" Content="Untere Schacht" />
|
<Label Grid.Row="1" Grid.Column="0" Content="Untere Schacht" />
|
||||||
<Label Grid.Row="2" Grid.Column="0" Content="Haltungsbezeichnung" />
|
<Label Grid.Row="2" Grid.Column="0" Content="Haltungsbezeichnung" />
|
||||||
|
|
||||||
<syncfusion:SfMultiColumnDropDownControl Grid.Column="1" Grid.Row="0"
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="5" Text="{Binding ObereSchacht}" />
|
||||||
Width="250"
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="5" Text="{Binding UntereSchacht}" />
|
||||||
|
|
||||||
Margin="10,0"
|
|
||||||
ItemsSource="{Binding VerfuegbareSchaechte}"
|
|
||||||
SelectedItem="{Binding ObereSchacht, Mode=TwoWay}"
|
|
||||||
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
VerticalAlignment="Top"
|
|
||||||
AllowAutoComplete="True"
|
|
||||||
AllowImmediatePopup="True"
|
|
||||||
AllowIncrementalFiltering="True"
|
|
||||||
AutoGenerateColumns="False"
|
|
||||||
DisplayMember="Objektbezeichnung"
|
|
||||||
HeaderTemplate="{StaticResource headerTemplate}"
|
|
||||||
PopupWidth="400"
|
|
||||||
ValueMember="Cast"
|
|
||||||
>
|
|
||||||
<syncfusion:SfMultiColumnDropDownControl.Columns>
|
|
||||||
<syncfusion:GridTextColumn MappingName="Objektbezeichnung" />
|
|
||||||
</syncfusion:SfMultiColumnDropDownControl.Columns>
|
|
||||||
|
|
||||||
</syncfusion:SfMultiColumnDropDownControl>
|
|
||||||
<syncfusion:SfMultiColumnDropDownControl Grid.Column="1" Grid.Row="1"
|
|
||||||
Width="250"
|
|
||||||
|
|
||||||
Margin="10,0"
|
|
||||||
ItemsSource="{Binding VerfuegbareSchaechte}"
|
|
||||||
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
VerticalAlignment="Top"
|
|
||||||
AllowAutoComplete="True"
|
|
||||||
AllowImmediatePopup="True"
|
|
||||||
AllowIncrementalFiltering="True"
|
|
||||||
AutoGenerateColumns="False"
|
|
||||||
DisplayMember="Objektbezeichnung"
|
|
||||||
HeaderTemplate="{StaticResource headerTemplate}"
|
|
||||||
PopupWidth="400"
|
|
||||||
ValueMember="Cast"
|
|
||||||
SelectedItem="{Binding UntereSchacht }"
|
|
||||||
>
|
|
||||||
<syncfusion:SfMultiColumnDropDownControl.Columns>
|
|
||||||
<syncfusion:GridTextColumn MappingName="Objektbezeichnung" />
|
|
||||||
</syncfusion:SfMultiColumnDropDownControl.Columns>
|
|
||||||
</syncfusion:SfMultiColumnDropDownControl>
|
|
||||||
<TextBox Grid.Row="2" Grid.Column="1" Margin="5" Text="{Binding Haltungsbezeichnung}" />
|
<TextBox Grid.Row="2" Grid.Column="1" Margin="5" Text="{Binding Haltungsbezeichnung}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
@@ -119,7 +62,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
<StackPanel Grid.Row="4">
|
<StackPanel Grid.Row="4">
|
||||||
<Button Content="Speichern" Command="{Binding Speichern}" />
|
<Button Content="Speichern" Command="{Binding Speichern}" />
|
||||||
<ListBox ItemsSource="{Binding VerfuegbareSchaechte }" />
|
<!--<ListBox ItemsSource="{Binding VerfuegbareSchaechte }" />-->
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -11,5 +11,6 @@ namespace SewerStammGen.Shared.Contracts
|
|||||||
public interface ISchachtDataService : IDataService<Schacht>
|
public interface ISchachtDataService : IDataService<Schacht>
|
||||||
{
|
{
|
||||||
Task<IEnumerable<Schacht>> GetAll(int projektID);
|
Task<IEnumerable<Schacht>> GetAll(int projektID);
|
||||||
|
Task<Schacht> GetSchachtByNameAndProjekt(string name, int projektID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,5 +10,6 @@ namespace SewerStammGen.Shared.Contracts
|
|||||||
public interface ISchachtService
|
public interface ISchachtService
|
||||||
{
|
{
|
||||||
Task<Schacht> CreateSchacht(Projekt proj);
|
Task<Schacht> CreateSchacht(Projekt proj);
|
||||||
|
Task<Schacht> FindSchachtByNameAndProjektID(string name, int projektID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,15 @@ namespace SewerStammGen.Shared.Services
|
|||||||
public class SchachtService : ISchachtService
|
public class SchachtService : ISchachtService
|
||||||
{
|
{
|
||||||
private readonly IDataService<Projekt> _projectService;
|
private readonly IDataService<Projekt> _projectService;
|
||||||
|
private readonly ISchachtDataService _schachtDataService;
|
||||||
|
|
||||||
public SchachtService(IDataService<Projekt> projectService)
|
public SchachtService(
|
||||||
|
IDataService<Projekt> projectService,
|
||||||
|
ISchachtDataService schachtDataService
|
||||||
|
)
|
||||||
{
|
{
|
||||||
_projectService = projectService;
|
_projectService = projectService;
|
||||||
|
_schachtDataService = schachtDataService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Schacht> CreateSchacht(Projekt proj)
|
public async Task<Schacht> CreateSchacht(Projekt proj)
|
||||||
@@ -27,5 +32,13 @@ namespace SewerStammGen.Shared.Services
|
|||||||
await _projectService.Update(proj.Id, proj);
|
await _projectService.Update(proj.Id, proj);
|
||||||
return schacht;
|
return schacht;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<Schacht> FindSchachtByNameAndProjektID(string name, int projektID)
|
||||||
|
{
|
||||||
|
Schacht result = await _schachtDataService.GetSchachtByNameAndProjekt(name, projektID);
|
||||||
|
return result;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user