Schäden können nun hinzugefügt werden

This commit is contained in:
Husky
2020-03-29 15:54:58 +02:00
parent 6abd8f663a
commit 3f715adcec
16 changed files with 217 additions and 139 deletions

View File

@@ -7,6 +7,6 @@ namespace KanSan.Base.Interfaces.UI
{ {
public interface ISchaedenListViewModel public interface ISchaedenListViewModel
{ {
List<Schaeden> Schaeden { get; set; } List<Schaeden> Schaeden { get;}
} }
} }

View File

@@ -22,10 +22,6 @@
<ProjectReference Include="..\KanSan.Base\KanSan.Base.csproj" /> <ProjectReference Include="..\KanSan.Base\KanSan.Base.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Schaeden\" />
</ItemGroup>
<Target Name="PreBuild" BeforeTargets="PreBuildEvent"> <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
<Exec Command="git rev-parse HEAD &gt;&quot;$(ProjectDir)\version.txt" /> <Exec Command="git rev-parse HEAD &gt;&quot;$(ProjectDir)\version.txt" />
</Target> </Target>

View File

@@ -2,9 +2,11 @@
using KanSan.Base.Enums; using KanSan.Base.Enums;
using KanSan.Base.Interfaces; using KanSan.Base.Interfaces;
using KanSan.Base.Interfaces.UI; using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics;
using System.Text; using System.Text;
namespace KanSan.ViewModel namespace KanSan.ViewModel
@@ -17,6 +19,7 @@ namespace KanSan.ViewModel
bool rissbruchscherbe; bool rissbruchscherbe;
bool einragendeStutzen; bool einragendeStutzen;
ESanierung sanierungstyp; ESanierung sanierungstyp;
private Schaeden model;
#region GetSetters #region GetSetters
public decimal Entfernung public decimal Entfernung
@@ -78,5 +81,27 @@ namespace KanSan.ViewModel
} }
} }
#endregion #endregion
public SchaedenEditViewModel(Schaeden schaeden)
{
this.model = schaeden;
entfernung = model.Entfernung;
wurzelInkrustation = model.WurzelInkrustationAblagerungen;
rissbruchscherbe = model.RissBruchScherbe;
einragendeStutzen = model.StutzenEinragend;
sanierungstyp = model.SanierungsTyp;
}
public void Speichern()
{
model.Entfernung = entfernung;
model.WurzelInkrustationAblagerungen = wurzelInkrustation;
model.RissBruchScherbe = rissbruchscherbe;
model.StutzenEinragend = einragendeStutzen;
unitOfWork.SchaedenRepository.Update(model);
unitOfWork.Commit();
}
} }
} }

View File

@@ -0,0 +1,44 @@
using KanSan.Base;
using KanSan.Base.Interfaces;
using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace KanSan.ViewModel
{
public class SchaedenListViewModel : ISchaedenListViewModel
{
private Sewer actualSelectedSewer;
IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext());
private List<Schaeden> schaeden;
public List<Schaeden> Schaeden { get => schaeden; }
public SchaedenListViewModel(Sewer actualSelectedSewer)
{
this.actualSelectedSewer = actualSelectedSewer;
schaeden = unitOfWork.SchaedenRepository.Get(x => x.Sewer.Equals(actualSelectedSewer)).ToList();
}
public Schaeden NeueSchaden()
{
Guid guid = Guid.NewGuid();
Schaeden neueSchaden = new Schaeden()
{
GuidNr = guid,
Sewer = actualSelectedSewer
};
unitOfWork.SchaedenRepository.Update(neueSchaden,false);
unitOfWork.Commit();
List<Schaeden> res = unitOfWork.SchaedenRepository.Get(x => x.GuidNr.Equals(guid)).ToList();
if (res.Count < 1) throw new Exception("Der zuvor eingefügte Schäden konnte nicht gefunden werden");
return res.First();
}
}
}

View File

@@ -1,22 +0,0 @@
using KanSan.Base.Interfaces.UI;
using KanSan.Base.Models;
using System;
using System.Collections.Generic;
using System.Text;
namespace KanSan.ViewModel
{
public class SchaedenListViewModel : ISchaedenListViewModel
{
private Sewer actualSelectedSewer;
public List<Schaeden> Schaeden { get => actualSelectedSewer.Schaeden; set => throw new NotImplementedException(); }
public SchaedenListViewModel(Sewer actualSelectedSewer)
{
this.actualSelectedSewer = actualSelectedSewer;
}
}
}

View File

@@ -9,12 +9,17 @@ namespace KanSan.ViewModel
public class SewerMainMenuViewModel : PropertyChangedClass,INotifyPropertyChanged public class SewerMainMenuViewModel : PropertyChangedClass,INotifyPropertyChanged
{ {
private Sewer model; private Sewer model;
public Sewer Objekt
{
get => model;
}
public string ObjektBezeichnung public string ObjektBezeichnung
{ {
get get
{ {
return model.ObjektNummer; return string.Format("{0} ({1})",model.ObjektNummer,model.StrasseName);
} }
} }

View File

@@ -43,7 +43,7 @@
<Compile Update="UI\Schäden\UCSchaedenEdit.xaml.cs"> <Compile Update="UI\Schäden\UCSchaedenEdit.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="UI\UCSewerMainMenu.xaml.cs"> <Compile Update="UI\UCSewerMainWindow.xaml.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
@@ -90,7 +90,7 @@
<Page Update="UI\Schäden\UCSchaedenEdit.xaml"> <Page Update="UI\Schäden\UCSchaedenEdit.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Update="UI\UCSewerMainMenu.xaml"> <Page Update="UI\UCSewerMainWindow.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
</ItemGroup> </ItemGroup>

View File

@@ -32,7 +32,6 @@
<RadioButton Name="rbProjekte" Content="Projekte" Style="{StaticResource ToggelButtonList}" Checked="rbProjekte_Checked" /> <RadioButton Name="rbProjekte" Content="Projekte" Style="{StaticResource ToggelButtonList}" Checked="rbProjekte_Checked" />
<RadioButton Name="rbBaustellen" Content="Baustellen" Style="{StaticResource ToggelButtonList}" Checked="rbBaustellen_Checked" /> <RadioButton Name="rbBaustellen" Content="Baustellen" Style="{StaticResource ToggelButtonList}" Checked="rbBaustellen_Checked" />
<RadioButton x:Name="rbObjekte" Content="Objekte" Style="{StaticResource ToggelButtonList}" Checked="rbObjekte_Checked" /> <RadioButton x:Name="rbObjekte" Content="Objekte" Style="{StaticResource ToggelButtonList}" Checked="rbObjekte_Checked" />
<ContentControl Name="SewerMainMenu" />
</StackPanel> </StackPanel>
<ContentControl Grid.Column="1" Name="ContentController" Content="KanSan"/> <ContentControl Grid.Column="1" Name="ContentController" Content="KanSan"/>
<StatusBar Grid.ColumnSpan="2" Margin="0,1,0,0" Grid.Row="1"> <StatusBar Grid.ColumnSpan="2" Margin="0,1,0,0" Grid.Row="1">

View File

@@ -117,28 +117,7 @@ namespace KanSan
uCSewerMainMenu = new UI.UCSewerMainMenu(e.Objekt); uCSewerMainMenu = new UI.UCSewerMainMenu(e.Objekt);
uCSewerMainMenu.SewerMainMenuSelected += UCSewerMainMenu_SewerMainMenuSelected; ContentController.Content = uCSewerMainMenu;
SewerMainMenu.Content = uCSewerMainMenu;
}
private void UCSewerMainMenu_SewerMainMenuSelected(object sender, UI.SewerMainMenuItemSelectedEventArgs e)
{
Sewer actualSelectedSewer = (DataContext as MainWindowViewModel).SelectedObjekt;
switch(e.Command)
{
case UI.ESewerMainMenuCommand.STAMMDATEN:
ContentController.Content = new UI.UCObjektEdit(actualSelectedSewer);
break;
case UI.ESewerMainMenuCommand.SCHAEDEN:
ContentController.Content = new UI.UCSchaedenList(actualSelectedSewer);
break;
case UI.ESewerMainMenuCommand.NONE:
ContentController.Content = "Wird nicht unterstützt";
break;
}
} }

View File

@@ -31,8 +31,11 @@
<Label Grid.Row="0" Content="Entfernung" /> <Label Grid.Row="0" Content="Entfernung" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Entfernung}" /> <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Entfernung}" />
<CheckBox Grid.Row="1" Grid.ColumnSpan="2" Content="Wurzel / Inkrustation / Ablagerungen" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding WurzelInkrustationAblagerungen}" /> <StackPanel Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="2">
<CheckBox Grid.Row="2" Grid.ColumnSpan="2" Content="Einragende Stutzen" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding EinragendeStutzen}" /> <CheckBox Content="Wurzel / Inkrustation / Ablagerungen" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding WurzelInkrustationAblagerungen}" />
<CheckBox Grid.Row="3" Grid.ColumnSpan="2" Content="Riss / Bruch / Scherbe" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding RissBruchScherbe}" /> <CheckBox Content="Einragende Stutzen" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding EinragendeStutzen}" />
<CheckBox Content="Riss / Bruch / Scherbe" Style="{StaticResource checkBoxCircle}" IsChecked="{Binding RissBruchScherbe}" />
</StackPanel>
<Button Grid.Row="3" Grid.ColumnSpan="2" Name="Speichern" Content="Speichern" Click="Speichern_Click" />
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -1,4 +1,6 @@
using System; using KanSan.Base.Models;
using KanSan.ViewModel;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Windows; using System.Windows;
@@ -18,9 +20,24 @@ namespace KanSan.UI
/// </summary> /// </summary>
public partial class UCSchaedenEdit : UserControl public partial class UCSchaedenEdit : UserControl
{ {
public UCSchaedenEdit() public event EventHandler SpeichernClicked;
public UCSchaedenEdit(Schaeden schaeden)
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = new SchaedenEditViewModel(schaeden);
}
protected virtual void OnSpeichernClick(EventArgs e)
{
EventHandler handler = SpeichernClicked;
if (handler != null)
handler(this, e);
}
private void Speichern_Click(object sender, RoutedEventArgs e)
{
(DataContext as SchaedenEditViewModel).Speichern();
OnSpeichernClick(EventArgs.Empty);
} }
} }
} }

View File

@@ -37,6 +37,6 @@
<DataGridCheckBoxColumn Header="Einragende&#x0a;Stutzen" Width="auto" IsReadOnly="True" ElementStyle="{StaticResource checkBoxCircleSmall}" Binding="{Binding StutzenEinragend}" /> <DataGridCheckBoxColumn Header="Einragende&#x0a;Stutzen" Width="auto" IsReadOnly="True" ElementStyle="{StaticResource checkBoxCircleSmall}" Binding="{Binding StutzenEinragend}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
<Button Grid.Row="1">Neue Schaden Hinzufügen</Button> <Button Grid.Row="1" Name="NewSchaden" Click="NewSchaden_Click" Content="Neue Schäden Hinzufügen" />
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -20,10 +20,31 @@ namespace KanSan.UI
/// </summary> /// </summary>
public partial class UCSchaedenList : UserControl public partial class UCSchaedenList : UserControl
{ {
public event EventHandler<SelectSchaedenEventArgs> SchaedenSelected;
public UCSchaedenList(Sewer actualSelectedSewer) public UCSchaedenList(Sewer actualSelectedSewer)
{ {
InitializeComponent(); InitializeComponent();
this.DataContext = new SchaedenListViewModel(actualSelectedSewer); this.DataContext = new SchaedenListViewModel(actualSelectedSewer);
} }
protected virtual void OnClickSchaedenSelect(SelectSchaedenEventArgs e)
{
EventHandler<SelectSchaedenEventArgs> handler = SchaedenSelected;
if (handler != null)
handler(this, e);
}
private void NewSchaden_Click(object sender, RoutedEventArgs e)
{
OnClickSchaedenSelect(
new SelectSchaedenEventArgs()
{
schaeden = (DataContext as SchaedenListViewModel).NeueSchaden()
});
}
}
public class SelectSchaedenEventArgs : EventArgs
{
public Schaeden schaeden { get; set; }
} }
} }

View File

@@ -1,77 +0,0 @@
using KanSan.Base.Models;
using KanSan.ViewModel;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
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 KanSan.UI
{
/// <summary>
/// Interaktionslogik für UCSewerMainMenu.xaml
/// </summary>
public partial class UCSewerMainMenu : UserControl
{
public event EventHandler<SewerMainMenuItemSelectedEventArgs> SewerMainMenuSelected;
protected virtual void OnSewerMenuSelected(SewerMainMenuItemSelectedEventArgs e)
{
EventHandler<SewerMainMenuItemSelectedEventArgs> handler = SewerMainMenuSelected;
if (handler != null)
handler(this, e);
}
public UCSewerMainMenu(Sewer objekt)
{
InitializeComponent();
this.DataContext = new SewerMainMenuViewModel(objekt);
Style style = this.FindResource("ToggelButtonList") as Style;
RadioButton radioButton = new RadioButton();
radioButton.Name = "Schlauch122123";
radioButton.Content = "Schlauchliner";
radioButton.Style = style;
radioButton.Checked += rbSewerMenuItem_Checked;
MenuItems.Children.Add(radioButton);
}
private void rbSewerMenuItem_Checked(object sender, RoutedEventArgs e)
{
RadioButton radioButton = (RadioButton)sender;
if (radioButton == null) return;
//Debugger.Break();
ESewerMainMenuCommand command = ESewerMainMenuCommand.NONE;
if (radioButton.Name.Equals("rbStammdaten")) command = ESewerMainMenuCommand.STAMMDATEN;
else if (radioButton.Name.Equals("rbSchaeden")) command = ESewerMainMenuCommand.SCHAEDEN;
OnSewerMenuSelected(new SewerMainMenuItemSelectedEventArgs()
{
Command = command
});
}
}
public enum ESewerMainMenuCommand
{
NONE,
STAMMDATEN,
SCHAEDEN,
SANIERUNG,
SCHAEDENEDIT
}
public class SewerMainMenuItemSelectedEventArgs : EventArgs
{
public ESewerMainMenuCommand Command { get; set; }
public int Parameter { get; set; }
}
}

View File

@@ -15,14 +15,24 @@
</ResourceDictionary> </ResourceDictionary>
</UserControl.Resources> </UserControl.Resources>
<Grid> <Grid>
<Grid.ColumnDefinitions>
<StackPanel Name="MenuItems"> <ColumnDefinition Width="150" />
<TextBlock Text="{Binding Path=(self:SewerMainMenuViewModel.ObjektBezeichnung)}" /> <ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23*" />
<RowDefinition Height="277*" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="{Binding Path=(self:SewerMainMenuViewModel.ObjektBezeichnung)}" />
<StackPanel Grid.Column="0" Grid.Row="1" Grid.RowSpan="2" Name="MenuItems">
<RadioButton Name="rbStammdaten" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Stammdaten" /> <RadioButton Name="rbStammdaten" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Stammdaten" />
<RadioButton Name="rbSchaeden" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schäden" /> <RadioButton Name="rbSchaeden" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schäden" />
<RadioButton Name="rbSchlauch1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schlauchliner" /> <RadioButton Name="rbSchlauch1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schlauchliner" />
<RadioButton Name="rbSchachtAnb1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schachtanbindung 1" /> <RadioButton Name="rbSchachtAnb1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Schachtanbindung 1" />
<RadioButton Name="Kurzliner1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Kurzliner" /> <RadioButton Name="Kurzliner1" Checked="rbSewerMenuItem_Checked" Style="{StaticResource ToggelButtonList}" Content="Kurzliner" />
</StackPanel> </StackPanel>
<ContentControl Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" Name="ObjektContentcontroller" />
</Grid> </Grid>
</UserControl> </UserControl>

View File

@@ -0,0 +1,78 @@
using KanSan.Base.Models;
using KanSan.ViewModel;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
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 KanSan.UI
{
/// <summary>
/// Interaktionslogik für UCSewerMainMenu.xaml
/// </summary>
public partial class UCSewerMainMenu : UserControl
{
public UCSewerMainMenu(Sewer objekt)
{
InitializeComponent();
this.DataContext = new SewerMainMenuViewModel(objekt);
UI.UCObjektEdit uCObjektEdit = new UCObjektEdit(objekt);
ObjektContentcontroller.Content = uCObjektEdit;
Style style = this.FindResource("ToggelButtonList") as Style;
RadioButton radioButton = new RadioButton();
radioButton.Name = "Schlauch122123";
radioButton.Content = "Schlauchliner";
radioButton.Style = style;
radioButton.Checked += rbSewerMenuItem_Checked;
MenuItems.Children.Add(radioButton);
}
private void rbSewerMenuItem_Checked(object sender, RoutedEventArgs e)
{
RadioButton btn = (RadioButton)sender;
if (btn == null) return;
switch(btn.Name)
{
case "rbStammdaten":
UI.UCObjektEdit uCObjektEdit = new UCObjektEdit((DataContext as SewerMainMenuViewModel).Objekt);
ObjektContentcontroller.Content = uCObjektEdit;
break;
case "rbSchaeden":
UI.UCSchaedenList uCSchaedenList = new UCSchaedenList((DataContext as SewerMainMenuViewModel).Objekt);
uCSchaedenList.SchaedenSelected += UCSchaedenList_SchaedenSelected;
ObjektContentcontroller.Content = uCSchaedenList;
break;
}
}
private void UCSchaedenList_SchaedenSelected(object sender, SelectSchaedenEventArgs e)
{
rbSchaeden.IsChecked = true;
UI.UCSchaedenEdit uCSchaedenEdit = new UCSchaedenEdit(e.schaeden);
uCSchaedenEdit.SpeichernClicked += UCSchaedenEdit_SpeichernClicked;
ObjektContentcontroller.Content = uCSchaedenEdit;
//throw new NotImplementedException();
}
private void UCSchaedenEdit_SpeichernClicked(object sender, EventArgs e)
{
UI.UCSchaedenList uCSchaedenList = new UCSchaedenList((DataContext as SewerMainMenuViewModel).Objekt);
uCSchaedenList.SchaedenSelected += UCSchaedenList_SchaedenSelected;
ObjektContentcontroller.Content = uCSchaedenList;
}
}
}