From 8b1336a014615d110306d7fab8094555e757b786 Mon Sep 17 00:00:00 2001 From: Husky Date: Tue, 17 Mar 2020 14:26:11 +0100 Subject: [PATCH] ObjekteListe angefangen --- .../Interfaces/UI/IObjekteListViewModel.cs | 12 + ...7101951_Güteschutzverlinkungen.Designer.cs | 592 ++++++++++++++++++ .../20200317101951_Güteschutzverlinkungen.cs | 366 +++++++++++ .../Migrations/KanSanContextModelSnapshot.cs | 306 +++++---- KanSan.Base/Models/Taetigkeiten.cs | 1 + .../Objekte/ObjekteAddViewModel.cs | 72 +++ .../Objekte/ObjekteListViewModel.cs | 52 +- KanSan/KanSan.csproj.user | 12 + KanSan/MainWindow.xaml | 2 +- KanSan/MainWindow.xaml.cs | 6 + .../ObjekteListViewModelSampleData.cs | 32 + KanSan/UI/Objekte/FrmNewObjekt.xaml | 28 + KanSan/UI/Objekte/FrmNewObjekt.xaml.cs | 34 + KanSan/UI/Objekte/UCObjekteList.xaml | 37 ++ KanSan/UI/Objekte/UCObjekteList.xaml.cs | 37 ++ 15 files changed, 1422 insertions(+), 167 deletions(-) create mode 100644 KanSan.Base/Interfaces/UI/IObjekteListViewModel.cs create mode 100644 KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.Designer.cs create mode 100644 KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.cs create mode 100644 KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs create mode 100644 KanSan/SampleData/ObjekteListViewModelSampleData.cs create mode 100644 KanSan/UI/Objekte/FrmNewObjekt.xaml create mode 100644 KanSan/UI/Objekte/FrmNewObjekt.xaml.cs create mode 100644 KanSan/UI/Objekte/UCObjekteList.xaml create mode 100644 KanSan/UI/Objekte/UCObjekteList.xaml.cs diff --git a/KanSan.Base/Interfaces/UI/IObjekteListViewModel.cs b/KanSan.Base/Interfaces/UI/IObjekteListViewModel.cs new file mode 100644 index 0000000..75b2345 --- /dev/null +++ b/KanSan.Base/Interfaces/UI/IObjekteListViewModel.cs @@ -0,0 +1,12 @@ +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.Base.Interfaces.UI +{ + public interface IObjekteListViewModel + { + List KanalObjekte { get; } + } +} diff --git a/KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.Designer.cs b/KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.Designer.cs new file mode 100644 index 0000000..7f8cc56 --- /dev/null +++ b/KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.Designer.cs @@ -0,0 +1,592 @@ +// +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("20200317101951_Güteschutzverlinkungen")] + partial class Güteschutzverlinkungen + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.2") + .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("GuidNr") + .HasColumnType("uuid"); + + b.Property("Infiltation") + .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("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("Position") + .HasColumnType("numeric"); + + 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/20200317101951_Güteschutzverlinkungen.cs b/KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.cs new file mode 100644 index 0000000..f2a2500 --- /dev/null +++ b/KanSan.Base/Migrations/20200317101951_Güteschutzverlinkungen.cs @@ -0,0 +1,366 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace KanSan.Base.Migrations +{ + public partial class Güteschutzverlinkungen : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_KurzlinerSanierung_Schaeden_SchadPositionID", + table: "KurzlinerSanierung"); + + migrationBuilder.DropTable( + name: "HutprofilSanierung"); + + migrationBuilder.DropPrimaryKey( + name: "PK_KurzlinerSanierung", + table: "KurzlinerSanierung"); + + migrationBuilder.RenameTable( + name: "KurzlinerSanierung", + newName: "GueteschutzProtokoll"); + + migrationBuilder.RenameIndex( + name: "IX_KurzlinerSanierung_SchadPositionID", + table: "GueteschutzProtokoll", + newName: "IX_GueteschutzProtokoll_SchadPositionID"); + + migrationBuilder.AddColumn( + name: "GueteschutzProtokolID", + table: "Taetigkeiten", + nullable: true); + + migrationBuilder.AlterColumn( + name: "PackerDruckEnde", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(double), + oldType: "double precision"); + + migrationBuilder.AlterColumn( + name: "PackerDruckAnfang", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(double), + oldType: "double precision"); + + migrationBuilder.AlterColumn( + name: "MischZeit", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Lang", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(double), + oldType: "double precision"); + + migrationBuilder.AlterColumn( + name: "Flaechengewicht", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(int), + oldType: "integer"); + + migrationBuilder.AlterColumn( + name: "FixierungAufPacker", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(bool), + oldType: "boolean"); + + migrationBuilder.AlterColumn( + name: "EntlueftenPacker", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Breit", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(double), + oldType: "double precision"); + + migrationBuilder.AlterColumn( + name: "Auffaelligkeit", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(bool), + oldType: "boolean"); + + migrationBuilder.AlterColumn( + name: "AnpressenPacker", + table: "GueteschutzProtokoll", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AddColumn( + name: "Discriminator", + table: "GueteschutzProtokoll", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "InnenBeschichtung", + table: "GueteschutzProtokoll", + nullable: true); + + migrationBuilder.AddColumn( + name: "RohrDN", + table: "GueteschutzProtokoll", + nullable: true); + + migrationBuilder.AddColumn( + name: "SeitenKanalDruckAnfang", + table: "GueteschutzProtokoll", + nullable: true); + + migrationBuilder.AddColumn( + name: "SeitenKanalDruckEnde", + table: "GueteschutzProtokoll", + nullable: true); + + migrationBuilder.AddColumn( + name: "Winkel", + table: "GueteschutzProtokoll", + nullable: true); + + migrationBuilder.AddPrimaryKey( + name: "PK_GueteschutzProtokoll", + table: "GueteschutzProtokoll", + column: "ID"); + + migrationBuilder.CreateIndex( + name: "IX_Taetigkeiten_GueteschutzProtokolID", + table: "Taetigkeiten", + column: "GueteschutzProtokolID"); + + migrationBuilder.AddForeignKey( + name: "FK_GueteschutzProtokoll_Schaeden_SchadPositionID", + table: "GueteschutzProtokoll", + column: "SchadPositionID", + principalTable: "Schaeden", + principalColumn: "ID", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Taetigkeiten_GueteschutzProtokoll_GueteschutzProtokolID", + table: "Taetigkeiten", + column: "GueteschutzProtokolID", + principalTable: "GueteschutzProtokoll", + principalColumn: "ID", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_GueteschutzProtokoll_Schaeden_SchadPositionID", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropForeignKey( + name: "FK_Taetigkeiten_GueteschutzProtokoll_GueteschutzProtokolID", + table: "Taetigkeiten"); + + migrationBuilder.DropIndex( + name: "IX_Taetigkeiten_GueteschutzProtokolID", + table: "Taetigkeiten"); + + migrationBuilder.DropPrimaryKey( + name: "PK_GueteschutzProtokoll", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "GueteschutzProtokolID", + table: "Taetigkeiten"); + + migrationBuilder.DropColumn( + name: "Discriminator", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "InnenBeschichtung", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "RohrDN", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "SeitenKanalDruckAnfang", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "SeitenKanalDruckEnde", + table: "GueteschutzProtokoll"); + + migrationBuilder.DropColumn( + name: "Winkel", + table: "GueteschutzProtokoll"); + + migrationBuilder.RenameTable( + name: "GueteschutzProtokoll", + newName: "KurzlinerSanierung"); + + migrationBuilder.RenameIndex( + name: "IX_GueteschutzProtokoll_SchadPositionID", + table: "KurzlinerSanierung", + newName: "IX_KurzlinerSanierung_SchadPositionID"); + + migrationBuilder.AlterColumn( + name: "Lang", + table: "KurzlinerSanierung", + type: "double precision", + nullable: false, + oldClrType: typeof(double), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "Breit", + table: "KurzlinerSanierung", + type: "double precision", + nullable: false, + oldClrType: typeof(double), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "PackerDruckEnde", + table: "KurzlinerSanierung", + type: "double precision", + nullable: false, + oldClrType: typeof(double), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "PackerDruckAnfang", + table: "KurzlinerSanierung", + type: "double precision", + nullable: false, + oldClrType: typeof(double), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "MischZeit", + table: "KurzlinerSanierung", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "Flaechengewicht", + table: "KurzlinerSanierung", + type: "integer", + nullable: false, + oldClrType: typeof(int), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "FixierungAufPacker", + table: "KurzlinerSanierung", + type: "boolean", + nullable: false, + oldClrType: typeof(bool), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "EntlueftenPacker", + table: "KurzlinerSanierung", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "Auffaelligkeit", + table: "KurzlinerSanierung", + type: "boolean", + nullable: false, + oldClrType: typeof(bool), + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "AnpressenPacker", + table: "KurzlinerSanierung", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldNullable: true); + + migrationBuilder.AddPrimaryKey( + name: "PK_KurzlinerSanierung", + table: "KurzlinerSanierung", + column: "ID"); + + migrationBuilder.CreateTable( + name: "HutprofilSanierung", + columns: table => new + { + ID = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + AnpressenPacker = table.Column(type: "timestamp without time zone", nullable: false), + Auffaelligkeit = table.Column(type: "boolean", nullable: false), + AussenTemp = table.Column(type: "integer", nullable: false), + Bericht = table.Column(type: "boolean", nullable: false), + Dichtheit = table.Column(type: "boolean", nullable: false), + EntlueftenPacker = table.Column(type: "timestamp without time zone", nullable: false), + Film = table.Column(type: "boolean", nullable: false), + FixierungAufPacker = table.Column(type: "boolean", nullable: false), + Flaechengewicht = table.Column(type: "integer", nullable: false), + GuidNr = table.Column(type: "uuid", nullable: false), + HarzMaterialArt = table.Column(type: "text", nullable: true), + HarzmaterialHersteller = table.Column(type: "text", nullable: true), + InnenBeschichtung = table.Column(type: "boolean", nullable: false), + KanalTemp = table.Column(type: "integer", nullable: false), + KompACharge = table.Column(type: "text", nullable: true), + KompBCharge = table.Column(type: "text", nullable: true), + MischZeit = table.Column(type: "timestamp without time zone", nullable: false), + PackerDruckAnfang = table.Column(type: "double precision", nullable: false), + PackerDruckEnde = table.Column(type: "double precision", nullable: false), + RohrDN = table.Column(type: "text", nullable: true), + SchadPositionID = table.Column(type: "integer", nullable: true), + SeitenKanalDruckAnfang = table.Column(type: "double precision", nullable: false), + SeitenKanalDruckEnde = table.Column(type: "double precision", nullable: false), + Sichtkontrolle = table.Column(type: "boolean", nullable: false), + TraegerCharge = table.Column(type: "text", nullable: true), + TraegerHersteller = table.Column(type: "text", nullable: true), + TraegerKurzliner = table.Column(type: "text", nullable: true), + Video = table.Column(type: "boolean", nullable: false), + Wetter = table.Column(type: "integer", nullable: false), + Winkel = table.Column(type: "text", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HutprofilSanierung", x => x.ID); + table.ForeignKey( + name: "FK_HutprofilSanierung_Schaeden_SchadPositionID", + column: x => x.SchadPositionID, + principalTable: "Schaeden", + principalColumn: "ID", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_HutprofilSanierung_SchadPositionID", + table: "HutprofilSanierung", + column: "SchadPositionID"); + + migrationBuilder.AddForeignKey( + name: "FK_KurzlinerSanierung_Schaeden_SchadPositionID", + table: "KurzlinerSanierung", + column: "SchadPositionID", + principalTable: "Schaeden", + principalColumn: "ID", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs index 5d2e0a6..ed12d99 100644 --- a/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs +++ b/KanSan.Base/Migrations/KanSanContextModelSnapshot.cs @@ -63,19 +63,13 @@ namespace KanSan.Base.Migrations b.ToTable("Fahrzeuge"); }); - modelBuilder.Entity("KanSan.Base.Models.HutprofilSan", b => + modelBuilder.Entity("KanSan.Base.Models.GueteschutzProtokoll", b => { b.Property("ID") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property("AnpressenPacker") - .HasColumnType("timestamp without time zone"); - - b.Property("Auffaelligkeit") - .HasColumnType("boolean"); - b.Property("AussenTemp") .HasColumnType("integer"); @@ -85,86 +79,38 @@ namespace KanSan.Base.Migrations b.Property("Dichtheit") .HasColumnType("boolean"); - b.Property("EntlueftenPacker") - .HasColumnType("timestamp without time zone"); + b.Property("Discriminator") + .IsRequired() + .HasColumnType("text"); b.Property("Film") .HasColumnType("boolean"); - b.Property("FixierungAufPacker") - .HasColumnType("boolean"); - - b.Property("Flaechengewicht") - .HasColumnType("integer"); - b.Property("GuidNr") .HasColumnType("uuid"); - b.Property("HarzMaterialArt") - .HasColumnType("text"); - - b.Property("HarzmaterialHersteller") - .HasColumnType("text"); - - b.Property("InnenBeschichtung") - .HasColumnType("boolean"); - b.Property("KanalTemp") .HasColumnType("integer"); - 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("SchadPositionID") .HasColumnType("integer"); - b.Property("SeitenKanalDruckAnfang") - .HasColumnType("double precision"); - - b.Property("SeitenKanalDruckEnde") - .HasColumnType("double precision"); - b.Property("Sichtkontrolle") .HasColumnType("boolean"); - b.Property("TraegerCharge") - .HasColumnType("text"); - - b.Property("TraegerHersteller") - .HasColumnType("text"); - - b.Property("TraegerKurzliner") - .HasColumnType("text"); - b.Property("Video") .HasColumnType("boolean"); b.Property("Wetter") .HasColumnType("integer"); - b.Property("Winkel") - .HasColumnType("text"); - b.HasKey("ID"); b.HasIndex("SchadPositionID"); - b.ToTable("HutprofilSanierung"); + b.ToTable("GueteschutzProtokoll"); + + b.HasDiscriminator("Discriminator").HasValue("GueteschutzProtokoll"); }); modelBuilder.Entity("KanSan.Base.Models.Kunde", b => @@ -197,101 +143,6 @@ namespace KanSan.Base.Migrations b.ToTable("Kunden"); }); - modelBuilder.Entity("KanSan.Base.Models.KurzlinerSan", b => - { - b.Property("ID") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("AnpressenPacker") - .HasColumnType("timestamp without time zone"); - - b.Property("Auffaelligkeit") - .HasColumnType("boolean"); - - b.Property("AussenTemp") - .HasColumnType("integer"); - - b.Property("Bericht") - .HasColumnType("boolean"); - - b.Property("Breit") - .HasColumnType("double precision"); - - b.Property("Dichtheit") - .HasColumnType("boolean"); - - b.Property("EntlueftenPacker") - .HasColumnType("timestamp without time zone"); - - b.Property("Film") - .HasColumnType("boolean"); - - b.Property("FixierungAufPacker") - .HasColumnType("boolean"); - - b.Property("Flaechengewicht") - .HasColumnType("integer"); - - b.Property("GuidNr") - .HasColumnType("uuid"); - - b.Property("HarzMaterialArt") - .HasColumnType("text"); - - b.Property("HarzmaterialHersteller") - .HasColumnType("text"); - - b.Property("KanalTemp") - .HasColumnType("integer"); - - 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("SchadPositionID") - .HasColumnType("integer"); - - b.Property("Sichtkontrolle") - .HasColumnType("boolean"); - - b.Property("TraegerCharge") - .HasColumnType("text"); - - b.Property("TraegerHersteller") - .HasColumnType("text"); - - b.Property("TraegerKurzliner") - .HasColumnType("text"); - - b.Property("Video") - .HasColumnType("boolean"); - - b.Property("Wetter") - .HasColumnType("integer"); - - b.HasKey("ID"); - - b.HasIndex("SchadPositionID"); - - b.ToTable("KurzlinerSanierung"); - }); - modelBuilder.Entity("KanSan.Base.Models.LeitungsverzeichnisPosition", b => { b.Property("ID") @@ -509,6 +360,9 @@ namespace KanSan.Base.Migrations b.Property("FahrzeugID") .HasColumnType("integer"); + b.Property("GueteschutzProtokolID") + .HasColumnType("integer"); + b.Property("GuidNr") .HasColumnType("uuid"); @@ -531,6 +385,8 @@ namespace KanSan.Base.Migrations b.HasIndex("FahrzeugID"); + b.HasIndex("GueteschutzProtokolID"); + b.HasIndex("LeitungsverzeichnisPositionID"); b.HasIndex("SanierungskonzeptID"); @@ -538,6 +394,131 @@ namespace KanSan.Base.Migrations 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") @@ -545,14 +526,7 @@ namespace KanSan.Base.Migrations .HasForeignKey("ProjektID"); }); - modelBuilder.Entity("KanSan.Base.Models.HutprofilSan", b => - { - b.HasOne("KanSan.Base.Models.Schaeden", "SchadPosition") - .WithMany() - .HasForeignKey("SchadPositionID"); - }); - - modelBuilder.Entity("KanSan.Base.Models.KurzlinerSan", b => + modelBuilder.Entity("KanSan.Base.Models.GueteschutzProtokoll", b => { b.HasOne("KanSan.Base.Models.Schaeden", "SchadPosition") .WithMany() @@ -598,6 +572,10 @@ namespace KanSan.Base.Migrations .WithMany() .HasForeignKey("FahrzeugID"); + b.HasOne("KanSan.Base.Models.GueteschutzProtokoll", "GueteschutzProtokol") + .WithMany() + .HasForeignKey("GueteschutzProtokolID"); + b.HasOne("KanSan.Base.Models.LeitungsverzeichnisPosition", "LeitungsverzeichnisPosition") .WithMany() .HasForeignKey("LeitungsverzeichnisPositionID"); diff --git a/KanSan.Base/Models/Taetigkeiten.cs b/KanSan.Base/Models/Taetigkeiten.cs index 2b922d1..0481796 100644 --- a/KanSan.Base/Models/Taetigkeiten.cs +++ b/KanSan.Base/Models/Taetigkeiten.cs @@ -14,5 +14,6 @@ namespace KanSan.Base.Models public decimal Position { get; set; } public LeitungsverzeichnisPosition LeitungsverzeichnisPosition { get; set; } public decimal Anzahl { get; set; } + public GueteschutzProtokoll GueteschutzProtokol { get; set; } } } diff --git a/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs new file mode 100644 index 0000000..338a285 --- /dev/null +++ b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs @@ -0,0 +1,72 @@ +using KanSan.Base; +using KanSan.Base.Interfaces; +using KanSan.Base.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace KanSan.ViewModel.Objekte +{ + public class ObjekteAddViewModel + { + IUnitOfWork unitOfWork; + private Baustelle baustelle; + + public string PunktOben { get; set; } + public string PunktUnten { get; set; } + public string Strasse { get; set; } + public int DN { get; set; } + public bool InBetrieb { get; set; } + + + public ObjekteAddViewModel(Baustelle baustelle) + { + this.baustelle = baustelle; + unitOfWork = new UnitOfWork(new KanSanContext()); + } + + public void Hinzufügen() + { + SewerPoint PointOben = getPoint(PunktOben,true); + SewerPoint PointUnten = getPoint(PunktUnten,true); + + + Sewer newSewer = new Sewer(); + newSewer.Baustelle = baustelle; + newSewer.GuidNr = Guid.NewGuid(); + newSewer.PunktOben = PointOben; + newSewer.PunktUnten = PointUnten; + newSewer.DN = DN; + newSewer.RohrleitungInBetrieb = InBetrieb; + newSewer.StrasseName = Strasse; + newSewer.ObjektNummer = PunktOben; + + unitOfWork.KanaeleRepository.Update(newSewer); + unitOfWork.Commit(); + } + + private SewerPoint getPoint(string objektnummer, bool createIfNotFound = false) + { + List sewerPoints = unitOfWork.ObjekteRepository.Get(x => x.Objektnummer.Equals(objektnummer)).ToList(); + if (sewerPoints.Count < 1) + { + if (createIfNotFound == false) + return null; + else + { + Guid guidNr = Guid.NewGuid(); + unitOfWork.ObjekteRepository.Update(new SewerPoint() + { + Objektnummer = objektnummer, + GuidNr = guidNr + }); + unitOfWork.Commit(); + + return unitOfWork.ObjekteRepository.Get(x => x.GuidNr.Equals(guidNr)).ToList().First(); + } + } + return sewerPoints.First(); + } + } +} diff --git a/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs index 4d12e3b..67f9e46 100644 --- a/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs @@ -1,10 +1,58 @@ -using System; +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 { - class ObjekteListViewModel + public class ObjekteTransfer { + public string Strassename { get; set; } + public IEnumerable Objekte { get; set; } + } + public class ObjekteListViewModel + { + IUnitOfWork unitOfWork = new UnitOfWork(new KanSanContext()); + + List kanalObjekte = new List(); + private Baustelle selectedBaustelle; + public List KanalObjekte => kanalObjekte; + + + public ObjekteListViewModel(Baustelle selectedBaustelle) + { + this.selectedBaustelle = selectedBaustelle; + // + List list = unitOfWork.KanaeleRepository.Get(x => x.Baustelle.Equals(selectedBaustelle)).ToList(); + var x = list.GroupBy(x => x.StrasseName).Select(x => new ObjekteTransfer + { + Strassename = x.Key, + Objekte = x + }).ToList(); + kanalObjekte = x; + + //kanalObjekte = unitOfWork.KanaeleRepository.Get(x => x.Baustelle.Equals(selectedBaustelle)).ToList(); + } + + public Sewer NeueObjektHinzufügen() + { + Guid guid = Guid.NewGuid(); + Sewer sewer = new Sewer() + { + Baustelle = selectedBaustelle, + GuidNr = guid + }; + + unitOfWork.KanaeleRepository.Update(sewer); + unitOfWork.Commit(); + + List t = unitOfWork.KanaeleRepository.Get(x => x.GuidNr.Equals(guid)).ToList(); + if(t.Count < 1) throw new Exception("Der zuvor eingefügte Objekt konnte nicht in der Datenbank gefunden werden"); + return t.First(); + } } } diff --git a/KanSan/KanSan.csproj.user b/KanSan/KanSan.csproj.user index 2e42406..4b5c465 100644 --- a/KanSan/KanSan.csproj.user +++ b/KanSan/KanSan.csproj.user @@ -7,6 +7,9 @@ + + Code + Code @@ -28,11 +31,17 @@ Code + + Code + Designer + + Designer + Designer @@ -54,5 +63,8 @@ Designer + + Designer + \ No newline at end of file diff --git a/KanSan/MainWindow.xaml b/KanSan/MainWindow.xaml index 6a0281e..49e5dcd 100644 --- a/KanSan/MainWindow.xaml +++ b/KanSan/MainWindow.xaml @@ -20,7 +20,7 @@