diff --git a/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs b/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs index 812634e..8c9b14a 100644 --- a/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs +++ b/KanSan.Base/Interfaces/UI/IObjekteEditViewModel.cs @@ -17,5 +17,6 @@ namespace KanSan.Base.Interfaces.UI bool HaltungGespuelt { get; set; } bool GenehmigungErforderlich { get; set; } bool BaustellenAbsicherung { get; set; } + decimal Haltungslaenge { get; set; } } } diff --git a/KanSan.Base/Migrations/20200330174150_HaltungslaengeAdded.Designer.cs b/KanSan.Base/Migrations/20200330174150_HaltungslaengeAdded.Designer.cs new file mode 100644 index 0000000..02083ab --- /dev/null +++ b/KanSan.Base/Migrations/20200330174150_HaltungslaengeAdded.Designer.cs @@ -0,0 +1,595 @@ +// +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("20200330174150_HaltungslaengeAdded")] + partial class HaltungslaengeAdded + { + 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("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/20200330174150_HaltungslaengeAdded.cs b/KanSan.Base/Migrations/20200330174150_HaltungslaengeAdded.cs new file mode 100644 index 0000000..cf09267 --- /dev/null +++ b/KanSan.Base/Migrations/20200330174150_HaltungslaengeAdded.cs @@ -0,0 +1,23 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace KanSan.Base.Migrations +{ + public partial class HaltungslaengeAdded : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Haltungslaenge", + table: "Kanaele", + nullable: false, + defaultValue: 0m); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Haltungslaenge", + table: "Kanaele"); + } + } +} diff --git a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs index c17bacd..2373d0b 100644 --- a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs +++ b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs @@ -16,7 +16,7 @@ namespace KanSan.Base.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) - .HasAnnotation("ProductVersion", "3.1.2") + .HasAnnotation("ProductVersion", "3.1.3") .HasAnnotation("Relational:MaxIdentifierLength", 63); modelBuilder.Entity("KanSan.Base.Models.Baustelle", b => @@ -291,6 +291,9 @@ namespace KanSan.Base.Migrations b.Property("HaltungGespuelt") .HasColumnType("boolean"); + b.Property("Haltungslaenge") + .HasColumnType("numeric"); + b.Property("Material") .HasColumnType("integer"); diff --git a/KanSan.Base/Models/Sewer.cs b/KanSan.Base/Models/Sewer.cs index 8a03e1e..9f55376 100644 --- a/KanSan.Base/Models/Sewer.cs +++ b/KanSan.Base/Models/Sewer.cs @@ -24,7 +24,7 @@ namespace KanSan.Base.Models public bool WasserHaltungDurchgefuehrt { get; set; } public bool GenehmigungErforderlich { get; set; } public bool BaustellensicherungErforderlich { get; set; } - + public decimal Haltungslaenge { get; set; } public List Schaeden { get; } = new List(); } diff --git a/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs index b3fcffb..1c52a0c 100644 --- a/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteEditViewModel.cs @@ -23,6 +23,7 @@ namespace KanSan.ViewModel bool haltungGespuelt; bool genehmigungErforderlich; bool baustellenAbsicherung; + decimal haltungslaenge; private Sewer objekt; @@ -138,6 +139,16 @@ namespace KanSan.ViewModel OnPropertyChanged(); } } + public decimal Haltungslaenge + { + get => haltungslaenge; + set + { + if (haltungslaenge == value) return; + haltungslaenge = value; + OnPropertyChanged(); + } + } #endregion public ObjekteEditViewModel(Sewer sewer) @@ -154,12 +165,14 @@ namespace KanSan.ViewModel haltungGespuelt = objekt.HaltungGespuelt; genehmigungErforderlich = objekt.GenehmigungErforderlich; baustellenAbsicherung = objekt.BaustellensicherungErforderlich; + haltungslaenge = objekt.Haltungslaenge; } public void Speichern() { objekt.StrasseName = strassename; objekt.DN = durchmesser; + objekt.Haltungslaenge = haltungslaenge; objekt.RohrleitungInBetrieb = rohrleitungInBetrieb; objekt.WasserHaltungDurchgefuehrt = wasserHaltungdurchgefuehrt; objekt.BaustellensicherungErforderlich = baustellenAbsicherung; diff --git a/KanSan/SampleData/ObjekteEditViewModelSampleData.cs b/KanSan/SampleData/ObjekteEditViewModelSampleData.cs index 4d6b6bc..8175735 100644 --- a/KanSan/SampleData/ObjekteEditViewModelSampleData.cs +++ b/KanSan/SampleData/ObjekteEditViewModelSampleData.cs @@ -18,6 +18,7 @@ namespace KanSan.SampleData bool haltungGespuelt; bool genehmigungErforderlich; bool baustellenAbsicherung; + decimal haltungslaenge; public string StrasseName { get => strasseName; set => throw new NotImplementedException(); } @@ -31,7 +32,7 @@ namespace KanSan.SampleData public bool HaltungGespuelt { get => haltungGespuelt; set => throw new NotImplementedException(); } public bool GenehmigungErforderlich { get => genehmigungErforderlich; set => throw new NotImplementedException(); } public bool BaustellenAbsicherung { get => baustellenAbsicherung; set => throw new NotImplementedException(); } - + public decimal Haltungslaenge { get => haltungslaenge; set => throw new NotImplementedException(); } public ObjekteEditViewModelSampleData() { strasseName = "Grader Weg"; @@ -40,6 +41,7 @@ namespace KanSan.SampleData punktUnten = "SW02"; durchmesser = 150; material = "Steinzeug"; + haltungslaenge = 10.3m; rohrleitungInBetrieb = false; wasserHaltungdurchgefuehrt = true; haltungGespuelt = true; diff --git a/KanSan/UI/Objekte/UCObjektEdit.xaml b/KanSan/UI/Objekte/UCObjektEdit.xaml index d7e4dde..4f0eb78 100644 --- a/KanSan/UI/Objekte/UCObjektEdit.xaml +++ b/KanSan/UI/Objekte/UCObjektEdit.xaml @@ -48,20 +48,23 @@ +