From a48d28ba226a668aad8ff1a2c9957988746909ac Mon Sep 17 00:00:00 2001 From: Husky Date: Sun, 5 Apr 2020 16:05:24 +0200 Subject: [PATCH] =?UTF-8?q?Sanierungsma=C3=9Fnahmen=20k=C3=B6nnen=20hinzug?= =?UTF-8?q?ef=C3=BCgt=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UI/ISanierungskonzeptListViewModel.cs | 15 + .../Interfaces/UI/ITaetigkeitEditViewModel.cs | 18 + .../20200405135558_BemerkungHinzu.Designer.cs | 598 ++++++++++++++++++ .../20200405135558_BemerkungHinzu.cs | 22 + .../Migrations/KanSanContextModelSnapshot.cs | 3 + .../Models/LeitungsverzeichnisPosition.cs | 1 - KanSan.Base/Models/Taetigkeiten.cs | 1 + .../Objekte/ObjekteAddViewModel.cs | 1 + .../SanierungskonzeptListViewModel.cs | 72 +++ KanSan.ViewModel/TaetigkeitEditViewModel.cs | 109 ++++ KanSan/KanSan.csproj.user | 6 + .../UI/SanMaßnahmen/UCSanMaßnahmenList.xaml | 18 + .../SanMaßnahmen/UCSanMaßnahmenList.xaml.cs | 63 +- KanSan/UI/SanMaßnahmen/UCTaetigkeitEdit.xaml | 32 + .../UI/SanMaßnahmen/UCTaetigkeitEdit.xaml.cs | 43 ++ KanSan/UI/UCSewerMainWindow.xaml.cs | 10 +- 16 files changed, 1008 insertions(+), 4 deletions(-) create mode 100644 KanSan.Base/Interfaces/UI/ISanierungskonzeptListViewModel.cs create mode 100644 KanSan.Base/Interfaces/UI/ITaetigkeitEditViewModel.cs create mode 100644 KanSan.Base/Migrations/20200405135558_BemerkungHinzu.Designer.cs create mode 100644 KanSan.Base/Migrations/20200405135558_BemerkungHinzu.cs create mode 100644 KanSan.ViewModel/Sanierungsmaßnahmen/SanierungskonzeptListViewModel.cs create mode 100644 KanSan.ViewModel/TaetigkeitEditViewModel.cs create mode 100644 KanSan/UI/SanMaßnahmen/UCTaetigkeitEdit.xaml create mode 100644 KanSan/UI/SanMaßnahmen/UCTaetigkeitEdit.xaml.cs diff --git a/KanSan.Base/Interfaces/UI/ISanierungskonzeptListViewModel.cs b/KanSan.Base/Interfaces/UI/ISanierungskonzeptListViewModel.cs new file mode 100644 index 0000000..26e4105 --- /dev/null +++ b/KanSan.Base/Interfaces/UI/ISanierungskonzeptListViewModel.cs @@ -0,0 +1,15 @@ +using KanSan.Base.Enums; +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.Base.Interfaces.UI +{ + public interface ISanierungskonzeptListViewModel + { + ESanierung Sanierung { get; } + List Taetigkeiten { get; } + bool CanAddNewSan { get; } + } +} diff --git a/KanSan.Base/Interfaces/UI/ITaetigkeitEditViewModel.cs b/KanSan.Base/Interfaces/UI/ITaetigkeitEditViewModel.cs new file mode 100644 index 0000000..56fedc4 --- /dev/null +++ b/KanSan.Base/Interfaces/UI/ITaetigkeitEditViewModel.cs @@ -0,0 +1,18 @@ +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.Base.Interfaces.UI +{ + public interface ITaetigkeitEditViewModel + { + Fahrzeug Fahrzeug { get; set; } + string Mitarbeiter { get; set; } + DateTime ZeitStempel { get; set; } + bool Erledigt { get; } + decimal Anzahl { get; set; } + string Bemerkung { get; set; } + LeitungsverzeichnisPosition Leistungsverzeichnis { get; set; } + } +} diff --git a/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.Designer.cs b/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.Designer.cs new file mode 100644 index 0000000..baf7853 --- /dev/null +++ b/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.Designer.cs @@ -0,0 +1,598 @@ +// +using System; +using KanSan.Base; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace KanSan.Base.Migrations +{ + [DbContext(typeof(KanSanContext))] + [Migration("20200405135558_BemerkungHinzu")] + partial class BemerkungHinzu + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.3") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("KanSan.Base.Models.Baustelle", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("BaustelleNummer") + .HasColumnType("text"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("OrtTeil") + .HasColumnType("text"); + + b.Property("ProjektID") + .HasColumnType("integer"); + + b.HasKey("ID"); + + b.HasIndex("ProjektID"); + + b.ToTable("Baustelle"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Fahrzeug", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("Kennzeichen") + .HasColumnType("text"); + + b.HasKey("ID"); + + b.ToTable("Fahrzeuge"); + }); + + modelBuilder.Entity("KanSan.Base.Models.GueteschutzProtokoll", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("AussenTemp") + .HasColumnType("integer"); + + b.Property("Bericht") + .HasColumnType("boolean"); + + b.Property("Dichtheit") + .HasColumnType("boolean"); + + b.Property("Discriminator") + .IsRequired() + .HasColumnType("text"); + + b.Property("Film") + .HasColumnType("boolean"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("KanalTemp") + .HasColumnType("integer"); + + b.Property("SchadPositionID") + .HasColumnType("integer"); + + b.Property("Sichtkontrolle") + .HasColumnType("boolean"); + + b.Property("Video") + .HasColumnType("boolean"); + + b.Property("Wetter") + .HasColumnType("integer"); + + b.HasKey("ID"); + + b.HasIndex("SchadPositionID"); + + b.ToTable("GueteschutzProtokoll"); + + b.HasDiscriminator("Discriminator").HasValue("GueteschutzProtokoll"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Kunde", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("Nachname") + .HasColumnType("text"); + + b.Property("Ort") + .HasColumnType("text"); + + b.Property("PLZ") + .HasColumnType("text"); + + b.Property("Strasse") + .HasColumnType("text"); + + b.Property("Vorname") + .HasColumnType("text"); + + b.HasKey("ID"); + + b.ToTable("Kunden"); + }); + + modelBuilder.Entity("KanSan.Base.Models.LeitungsverzeichnisPosition", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Beschreibung") + .HasColumnType("text"); + + b.Property("Einheit") + .HasColumnType("text"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("Positionsnummer") + .HasColumnType("text"); + + b.HasKey("ID"); + + b.ToTable("LeitungsverzeichnisPositionen"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Projekt", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("KundeID") + .HasColumnType("integer"); + + b.Property("Ort") + .HasColumnType("text"); + + b.Property("Projektnummer") + .HasColumnType("text"); + + b.HasKey("ID"); + + b.HasIndex("KundeID"); + + b.ToTable("Projekte"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Sanierungskonzept", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("SanierungsTyp") + .HasColumnType("integer"); + + b.HasKey("ID"); + + b.ToTable("Sanierungskonzept"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Schaeden", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Entfernung") + .HasColumnType("numeric"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("Infiltration") + .HasColumnType("boolean"); + + b.Property("RissBruchScherbe") + .HasColumnType("boolean"); + + b.Property("SanierungsTyp") + .HasColumnType("integer"); + + b.Property("SanierungskonzeptID") + .HasColumnType("integer"); + + b.Property("SchadstelleFaekalienFrei") + .HasColumnType("boolean"); + + b.Property("SewerID") + .HasColumnType("integer"); + + b.Property("StutzenEinragend") + .HasColumnType("boolean"); + + b.Property("VorbehandeltFraeser") + .HasColumnType("boolean"); + + b.Property("VorbehandeltHD") + .HasColumnType("boolean"); + + b.Property("VorbehandeltMech") + .HasColumnType("boolean"); + + b.Property("WurzelInkrustationAblagerungen") + .HasColumnType("boolean"); + + b.HasKey("ID"); + + b.HasIndex("SanierungskonzeptID"); + + b.HasIndex("SewerID"); + + b.ToTable("Schaeden"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Sewer", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("BaustelleID") + .HasColumnType("integer"); + + b.Property("BaustellensicherungErforderlich") + .HasColumnType("boolean"); + + b.Property("DN") + .HasColumnType("integer"); + + b.Property("GenehmigungErforderlich") + .HasColumnType("boolean"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("HaltungGespuelt") + .HasColumnType("boolean"); + + b.Property("Haltungslaenge") + .HasColumnType("numeric"); + + b.Property("Material") + .HasColumnType("integer"); + + b.Property("ObjektNummer") + .HasColumnType("text"); + + b.Property("PunktObenID") + .HasColumnType("integer"); + + b.Property("PunktTypeOben") + .HasColumnType("integer"); + + b.Property("PunktTypeUnten") + .HasColumnType("integer"); + + b.Property("PunktUntenID") + .HasColumnType("integer"); + + b.Property("RohrleitungInBetrieb") + .HasColumnType("boolean"); + + b.Property("SewerType") + .HasColumnType("integer"); + + b.Property("StrasseName") + .HasColumnType("text"); + + b.Property("WasserHaltungDurchgefuehrt") + .HasColumnType("boolean"); + + b.HasKey("ID"); + + b.HasIndex("BaustelleID"); + + b.HasIndex("PunktObenID"); + + b.HasIndex("PunktUntenID"); + + b.ToTable("Kanaele"); + }); + + modelBuilder.Entity("KanSan.Base.Models.SewerPoint", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("Objektnummer") + .HasColumnType("text"); + + b.HasKey("ID"); + + b.ToTable("SewerPoints"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Taetigkeiten", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Anzahl") + .HasColumnType("numeric"); + + b.Property("Bemerkung") + .HasColumnType("text"); + + b.Property("FahrzeugID") + .HasColumnType("integer"); + + b.Property("GueteschutzProtokolID") + .HasColumnType("integer"); + + b.Property("GuidNr") + .HasColumnType("uuid"); + + b.Property("LeitungsverzeichnisPositionID") + .HasColumnType("integer"); + + b.Property("Mitarbeiter") + .HasColumnType("text"); + + b.Property("SanierungskonzeptID") + .HasColumnType("integer"); + + b.Property("ZeitStempel") + .HasColumnType("timestamp without time zone"); + + b.HasKey("ID"); + + b.HasIndex("FahrzeugID"); + + b.HasIndex("GueteschutzProtokolID"); + + b.HasIndex("LeitungsverzeichnisPositionID"); + + b.HasIndex("SanierungskonzeptID"); + + b.ToTable("Taetigkeiten"); + }); + + modelBuilder.Entity("KanSan.Base.Models.HutprofilSan", b => + { + b.HasBaseType("KanSan.Base.Models.GueteschutzProtokoll"); + + b.Property("AnpressenPacker") + .HasColumnType("timestamp without time zone"); + + b.Property("Auffaelligkeit") + .HasColumnType("boolean"); + + b.Property("EntlueftenPacker") + .HasColumnType("timestamp without time zone"); + + b.Property("FixierungAufPacker") + .HasColumnType("boolean"); + + b.Property("Flaechengewicht") + .HasColumnType("integer"); + + b.Property("HarzMaterialArt") + .HasColumnType("text"); + + b.Property("HarzmaterialHersteller") + .HasColumnType("text"); + + b.Property("InnenBeschichtung") + .HasColumnType("boolean"); + + b.Property("KompACharge") + .HasColumnType("text"); + + b.Property("KompBCharge") + .HasColumnType("text"); + + b.Property("MischZeit") + .HasColumnType("timestamp without time zone"); + + b.Property("PackerDruckAnfang") + .HasColumnType("double precision"); + + b.Property("PackerDruckEnde") + .HasColumnType("double precision"); + + b.Property("RohrDN") + .HasColumnType("text"); + + b.Property("SeitenKanalDruckAnfang") + .HasColumnType("double precision"); + + b.Property("SeitenKanalDruckEnde") + .HasColumnType("double precision"); + + b.Property("TraegerCharge") + .HasColumnType("text"); + + b.Property("TraegerHersteller") + .HasColumnType("text"); + + b.Property("TraegerKurzliner") + .HasColumnType("text"); + + b.Property("Winkel") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("HutprofilSan"); + }); + + modelBuilder.Entity("KanSan.Base.Models.KurzlinerSan", b => + { + b.HasBaseType("KanSan.Base.Models.GueteschutzProtokoll"); + + b.Property("AnpressenPacker") + .HasColumnType("timestamp without time zone"); + + b.Property("Auffaelligkeit") + .HasColumnType("boolean"); + + b.Property("Breit") + .HasColumnType("double precision"); + + b.Property("EntlueftenPacker") + .HasColumnType("timestamp without time zone"); + + b.Property("FixierungAufPacker") + .HasColumnType("boolean"); + + b.Property("Flaechengewicht") + .HasColumnType("integer"); + + b.Property("HarzMaterialArt") + .HasColumnType("text"); + + b.Property("HarzmaterialHersteller") + .HasColumnType("text"); + + b.Property("KompACharge") + .HasColumnType("text"); + + b.Property("KompBCharge") + .HasColumnType("text"); + + b.Property("Lang") + .HasColumnType("double precision"); + + b.Property("MischZeit") + .HasColumnType("timestamp without time zone"); + + b.Property("PackerDruckAnfang") + .HasColumnType("double precision"); + + b.Property("PackerDruckEnde") + .HasColumnType("double precision"); + + b.Property("TraegerCharge") + .HasColumnType("text"); + + b.Property("TraegerHersteller") + .HasColumnType("text"); + + b.Property("TraegerKurzliner") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("KurzlinerSan"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Baustelle", b => + { + b.HasOne("KanSan.Base.Models.Projekt", "Projekt") + .WithMany() + .HasForeignKey("ProjektID"); + }); + + modelBuilder.Entity("KanSan.Base.Models.GueteschutzProtokoll", b => + { + b.HasOne("KanSan.Base.Models.Schaeden", "SchadPosition") + .WithMany() + .HasForeignKey("SchadPositionID"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Projekt", b => + { + b.HasOne("KanSan.Base.Models.Kunde", "Kunde") + .WithMany("Baustellen") + .HasForeignKey("KundeID"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Schaeden", b => + { + b.HasOne("KanSan.Base.Models.Sanierungskonzept", "Sanierungskonzept") + .WithMany() + .HasForeignKey("SanierungskonzeptID"); + + b.HasOne("KanSan.Base.Models.Sewer", "Sewer") + .WithMany("Schaeden") + .HasForeignKey("SewerID"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Sewer", b => + { + b.HasOne("KanSan.Base.Models.Baustelle", "Baustelle") + .WithMany("Kanaele") + .HasForeignKey("BaustelleID"); + + b.HasOne("KanSan.Base.Models.SewerPoint", "PunktOben") + .WithMany() + .HasForeignKey("PunktObenID"); + + b.HasOne("KanSan.Base.Models.SewerPoint", "PunktUnten") + .WithMany() + .HasForeignKey("PunktUntenID"); + }); + + modelBuilder.Entity("KanSan.Base.Models.Taetigkeiten", b => + { + b.HasOne("KanSan.Base.Models.Fahrzeug", "Fahrzeug") + .WithMany() + .HasForeignKey("FahrzeugID"); + + b.HasOne("KanSan.Base.Models.GueteschutzProtokoll", "GueteschutzProtokol") + .WithMany() + .HasForeignKey("GueteschutzProtokolID"); + + b.HasOne("KanSan.Base.Models.LeitungsverzeichnisPosition", "LeitungsverzeichnisPosition") + .WithMany() + .HasForeignKey("LeitungsverzeichnisPositionID"); + + b.HasOne("KanSan.Base.Models.Sanierungskonzept", "Sanierungskonzept") + .WithMany("Taetigkeiten") + .HasForeignKey("SanierungskonzeptID"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.cs b/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.cs new file mode 100644 index 0000000..7d2000c --- /dev/null +++ b/KanSan.Base/Migrations/20200405135558_BemerkungHinzu.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace KanSan.Base.Migrations +{ + public partial class BemerkungHinzu : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Bemerkung", + table: "Taetigkeiten", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Bemerkung", + table: "Taetigkeiten"); + } + } +} diff --git a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs index 2373d0b..8d5ffc2 100644 --- a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs +++ b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs @@ -363,6 +363,9 @@ namespace KanSan.Base.Migrations b.Property("Anzahl") .HasColumnType("numeric"); + b.Property("Bemerkung") + .HasColumnType("text"); + b.Property("FahrzeugID") .HasColumnType("integer"); diff --git a/KanSan.Base/Models/LeitungsverzeichnisPosition.cs b/KanSan.Base/Models/LeitungsverzeichnisPosition.cs index 4571c08..c1c2ee2 100644 --- a/KanSan.Base/Models/LeitungsverzeichnisPosition.cs +++ b/KanSan.Base/Models/LeitungsverzeichnisPosition.cs @@ -10,6 +10,5 @@ namespace KanSan.Base.Models public string Positionsnummer { get; set; } public string Beschreibung { get; set; } public string Einheit { get; set; } - } } diff --git a/KanSan.Base/Models/Taetigkeiten.cs b/KanSan.Base/Models/Taetigkeiten.cs index d7bdc4e..02ce86f 100644 --- a/KanSan.Base/Models/Taetigkeiten.cs +++ b/KanSan.Base/Models/Taetigkeiten.cs @@ -15,5 +15,6 @@ namespace KanSan.Base.Models public LeitungsverzeichnisPosition LeitungsverzeichnisPosition { get; set; } public decimal Anzahl { get; set; } public GueteschutzProtokoll GueteschutzProtokol { get; set; } + public string Bemerkung { get; set; } } } diff --git a/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs index 9f40ea8..d64a782 100644 --- a/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs @@ -41,6 +41,7 @@ namespace KanSan.ViewModel.Objekte newSewer.RohrleitungInBetrieb = InBetrieb; newSewer.StrasseName = Strasse; newSewer.ObjektNummer = PunktOben; + unitOfWork.KanaeleRepository.Update(newSewer,false); unitOfWork.Commit(); diff --git a/KanSan.ViewModel/Sanierungsmaßnahmen/SanierungskonzeptListViewModel.cs b/KanSan.ViewModel/Sanierungsmaßnahmen/SanierungskonzeptListViewModel.cs new file mode 100644 index 0000000..7cb7a72 --- /dev/null +++ b/KanSan.ViewModel/Sanierungsmaßnahmen/SanierungskonzeptListViewModel.cs @@ -0,0 +1,72 @@ +using KanSan.Base; +using KanSan.Base.Enums; +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 SanierungskonzeptListViewModel : ISanierungskonzeptListViewModel + { + IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext()); + private bool canAddNewSan = true; + Sanierungskonzept sanKonzept; + private ESanierung sanierung; + private Schaeden schaden; + private List taetigkeiten = new List(); + public ESanierung Sanierung => sanierung; + public bool CanAddNewSan => canAddNewSan; + + + public List Taetigkeiten => taetigkeiten; + + public SanierungskonzeptListViewModel(Schaeden schaden) + { + //this.schaden = schaden; + + var d = unitOfWork.SchaedenRepository.Get(x => x.GuidNr.Equals(schaden.GuidNr),includeProperties: "Sanierungskonzept").First(); + canAddNewSan = (d.Sanierungskonzept == null); + this.schaden = d; + if (!canAddNewSan) + { + sanierung = d.Sanierungskonzept.SanierungsTyp; + sanKonzept = unitOfWork.SanierungskonzeptRepository.Get(x => x.GuidNr.Equals(d.Sanierungskonzept.GuidNr),includeProperties:"Taetigkeiten").FirstOrDefault(); + taetigkeiten = sanKonzept.Taetigkeiten; + } + } + + public Taetigkeiten NeueTaetigkeit() + { + Guid guid = Guid.NewGuid(); + Taetigkeiten taetigkeiten = new Taetigkeiten() + { + Sanierungskonzept = this.sanKonzept, + GuidNr = guid + }; + sanKonzept.Taetigkeiten.Add(taetigkeiten); + unitOfWork.SanierungskonzeptRepository.Update(sanKonzept); + unitOfWork.Commit(); + + return taetigkeiten; + } + + public Sanierungskonzept NeueSanierungskonzept() + { + Guid guid = Guid.NewGuid(); + Sanierungskonzept san = new Sanierungskonzept() + { + GuidNr = guid, + }; + + schaden.Sanierungskonzept = san; + unitOfWork.SchaedenRepository.Update(schaden); + unitOfWork.Commit(); + + return san; + } + } +} diff --git a/KanSan.ViewModel/TaetigkeitEditViewModel.cs b/KanSan.ViewModel/TaetigkeitEditViewModel.cs new file mode 100644 index 0000000..3668351 --- /dev/null +++ b/KanSan.ViewModel/TaetigkeitEditViewModel.cs @@ -0,0 +1,109 @@ +using KanSan.Base; +using KanSan.Base.Interfaces; +using KanSan.Base.Interfaces.UI; +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Text; + +namespace KanSan.ViewModel +{ + public class TaetigkeitEditViewModel : PropertyChangedClass, INotifyPropertyChanged, ITaetigkeitEditViewModel + { + IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext()); + Fahrzeug fahrzeug; + string mitarbeiter; + DateTime zeitStempel; + decimal anzahl; + string bemerkung; + Taetigkeiten model; + LeitungsverzeichnisPosition leistungsverzeichnis; + #region getsetters + public Fahrzeug Fahrzeug + { + get => fahrzeug; + set + { + if (fahrzeug == value) return; + fahrzeug = value; + OnPropertyChanged(); + } + } + public string Mitarbeiter + { + get => mitarbeiter; + set + { + if (mitarbeiter == value) return; + mitarbeiter = value; + OnPropertyChanged(); + } + } + public DateTime ZeitStempel + { + get => zeitStempel; + set + { + if (zeitStempel == value) return; + zeitStempel = value; + OnPropertyChanged(); + } + } + public bool Erledigt => !zeitStempel.Equals(DateTime.MinValue); + public decimal Anzahl + { + get => anzahl; + set + { + if (anzahl == value) return; + anzahl = value; + OnPropertyChanged(); + } + } + public string Bemerkung + { + get => bemerkung; + set + { + if (bemerkung == value) return; + bemerkung = value; + OnPropertyChanged(); + } + } + public LeitungsverzeichnisPosition Leistungsverzeichnis + { + get => leistungsverzeichnis; + set + { + if (leistungsverzeichnis == value) return; + leistungsverzeichnis = value; + OnPropertyChanged(); + } + } + #endregion + + public TaetigkeitEditViewModel(Taetigkeiten taetigkeiten) + { + model = taetigkeiten; + mitarbeiter = model.Mitarbeiter; + anzahl = model.Anzahl; + zeitStempel = model.ZeitStempel; + bemerkung = model.Bemerkung; + fahrzeug = model.Fahrzeug; + } + + public void Speichern() + { + model.Mitarbeiter = mitarbeiter; + model.Anzahl = anzahl; + model.ZeitStempel = zeitStempel; + model.Bemerkung = bemerkung; + model.Fahrzeug = fahrzeug; + + unitOfWork.TaetigkeitenRepository.Update(model); + unitOfWork.Commit(); + } + + } +} diff --git a/KanSan/KanSan.csproj.user b/KanSan/KanSan.csproj.user index 530f8ae..c8887ac 100644 --- a/KanSan/KanSan.csproj.user +++ b/KanSan/KanSan.csproj.user @@ -49,6 +49,9 @@ Code + + Code + @@ -99,5 +102,8 @@ Designer + + Designer + \ No newline at end of file diff --git a/KanSan/UI/SanMaßnahmen/UCSanMaßnahmenList.xaml b/KanSan/UI/SanMaßnahmen/UCSanMaßnahmenList.xaml index 849326a..1d0d127 100644 --- a/KanSan/UI/SanMaßnahmen/UCSanMaßnahmenList.xaml +++ b/KanSan/UI/SanMaßnahmen/UCSanMaßnahmenList.xaml @@ -3,10 +3,28 @@ 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:self="clr-namespace:KanSan.ViewModel;assembly=KanSan.ViewModel" + xmlns:model="clr-namespace:KanSan.Base.Models;assembly=KanSan.Base" xmlns:local="clr-namespace:KanSan.UI" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> + + + + + + + + + + + + + + +