diff --git a/DaSaSo.Domain/Model/Project.cs b/DaSaSo.Domain/Model/Project.cs index 379dbd9..bf256d2 100644 --- a/DaSaSo.Domain/Model/Project.cs +++ b/DaSaSo.Domain/Model/Project.cs @@ -9,6 +9,7 @@ namespace DaSaSo.Domain.Model public class Project : DomainObject { public string Name { get; set; } + public string Projektnummer { get; set; } public Client Client { get; set; } public ICollection BuildingSites { get; set; } = new List(); } diff --git a/DaSaSo.Domain/Services/ISewerPointDataService.cs b/DaSaSo.Domain/Services/ISewerPointDataService.cs new file mode 100644 index 0000000..9f4d9f4 --- /dev/null +++ b/DaSaSo.Domain/Services/ISewerPointDataService.cs @@ -0,0 +1,14 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.Services +{ + public interface ISewerPointDataService : IDataService + { + Task GetbyObjektname(string objektname); + } +} diff --git a/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs b/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs index 0543581..dba981b 100644 --- a/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs +++ b/DaSaSo.Domain/Services/SewerPointServices/SewerpointService.cs @@ -1,6 +1,7 @@ using DaSaSo.Domain.Model; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,20 +10,25 @@ namespace DaSaSo.Domain.Services.SewerPointServices { public class SewerpointService : ISewerpointService { - private readonly IDataService _sewerPointService; + private readonly ISewerPointDataService _sewerPointService; - public SewerpointService(IDataService sewerPointService) + public SewerpointService(ISewerPointDataService sewerPointService) { _sewerPointService = sewerPointService; } public async Task CreateOrFindSewerpoint(string objektbezeichnung) { - SewerPoint result = new SewerPoint() + SewerPoint result = await _sewerPointService.GetbyObjektname(objektbezeichnung); + if(result == null) { - Objektnummer = objektbezeichnung - }; - return await _sewerPointService.Create(result); + SewerPoint newPoint = new SewerPoint() + { + Objektnummer = objektbezeichnung + }; + result = await _sewerPointService.Create(newPoint); + } + return result; } } } diff --git a/DaSaSo.EntityFramework/DaSaSoDbContext.cs b/DaSaSo.EntityFramework/DaSaSoDbContext.cs index 6fd77d5..eca15d1 100644 --- a/DaSaSo.EntityFramework/DaSaSoDbContext.cs +++ b/DaSaSo.EntityFramework/DaSaSoDbContext.cs @@ -27,6 +27,7 @@ namespace DaSaSo.EntityFramework public DbSet? SewerDamages { get; set; } public DbSet? PipeLiners { get; set; } public DbSet? Impregnations { get; set; } + public DbSet? SewerPoints { get; set; } } } diff --git a/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs b/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs index ebfea52..3341ebb 100644 --- a/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs +++ b/DaSaSo.EntityFramework/DaSaSoDbContextFactory.cs @@ -8,10 +8,12 @@ using System.Threading.Tasks; namespace DaSaSo.EntityFramework { - public class DaSaSoDbContextFactory + public class DaSaSoDbContextFactory : IDesignTimeDbContextFactory { private readonly Action _configureDbContext; + public DaSaSoDbContextFactory() { } + public DaSaSoDbContextFactory(Action configureDbContext) { _configureDbContext = configureDbContext; @@ -27,14 +29,22 @@ namespace DaSaSo.EntityFramework //DaSaSoDbContext result = new DaSaSoDbContext(options.Options); return new DaSaSoDbContext(options.Options); } - /* - public DaSaSoDbContext CreateDbContext(string[]? args = null) + + public DaSaSoDbContext CreateDbContext(string[] args) { var options = new DbContextOptionsBuilder(); options.UseNpgsql("Host = localhost; Database = dasaso; Username = kansan; Password = kansan"); DaSaSoDbContext result = new DaSaSoDbContext(options.Options); return result; } - */ + /* +public DaSaSoDbContext CreateDbContext(string[]? args = null) +{ + var options = new DbContextOptionsBuilder(); + options.UseNpgsql("Host = localhost; Database = dasaso; Username = kansan; Password = kansan"); + DaSaSoDbContext result = new DaSaSoDbContext(options.Options); + return result; +} +*/ } } diff --git a/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.Designer.cs b/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.Designer.cs new file mode 100644 index 0000000..e816821 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.Designer.cs @@ -0,0 +1,403 @@ +// +using System; +using DaSaSo.EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace DaSaSo.EntityFramework.Migrations +{ + [DbContext(typeof(DaSaSoDbContext))] + [Migration("20210928140403_SewerPointsAdded")] + partial class SewerPointsAdded + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0-rc.1.21452.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuildingSiteNumber") + .HasColumnType("text"); + + b.Property("ContactPerson") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("ProjectId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ProjectId"); + + b.ToTable("Buildingsites"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("Firstname") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("Postcode") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Impregnation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DN") + .HasColumnType("integer"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("IsAvaible") + .HasColumnType("boolean"); + + b.Property("LinerNumber") + .HasColumnType("text"); + + b.Property("Linerlength") + .HasColumnType("numeric"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("WallThickness") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.ToTable("Impregnations"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.PipeLiner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CleanedHD") + .HasColumnType("boolean"); + + b.Property("CleanedMechanisch") + .HasColumnType("boolean"); + + b.Property("CleanedRoborter") + .HasColumnType("boolean"); + + b.Property("ClosedEnd") + .HasColumnType("boolean"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("ImpregnationId") + .HasColumnType("integer"); + + b.Property("InversionPressure") + .HasColumnType("numeric"); + + b.Property("LinerLength") + .HasColumnType("numeric"); + + b.Property("Operator") + .HasColumnType("text"); + + b.Property("PermitNeeded") + .HasColumnType("boolean"); + + b.Property("Preliner") + .HasColumnType("boolean"); + + b.Property("STVO") + .HasColumnType("boolean"); + + b.Property("TemperaturAssembly") + .HasColumnType("numeric"); + + b.Property("TemperaturStorage") + .HasColumnType("numeric"); + + b.Property("TemperatureOutdoors") + .HasColumnType("numeric"); + + b.Property("TemperatureSewer") + .HasColumnType("numeric"); + + b.Property("WaterBaried") + .HasColumnType("boolean"); + + b.Property("Weather") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ImpregnationId"); + + b.ToTable("PipeLiners"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("Name") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Projects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DamageType") + .HasColumnType("integer"); + + b.Property("Distance") + .HasColumnType("numeric"); + + b.Property("PreparationType") + .HasColumnType("integer"); + + b.Property("SewerObjectId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SewerObjectId"); + + b.ToTable("SewerDamages"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuildingSiteId") + .HasColumnType("integer"); + + b.Property("BuildingsiteBarier") + .HasColumnType("boolean"); + + b.Property("DN") + .HasColumnType("integer"); + + b.Property("Material") + .HasColumnType("text"); + + b.Property("ObjektName") + .HasColumnType("text"); + + b.Property("PermitNeeded") + .HasColumnType("boolean"); + + b.Property("PipeLinerId") + .HasColumnType("integer"); + + b.Property("PunktObenId") + .HasColumnType("integer"); + + b.Property("PunktObenType") + .HasColumnType("integer"); + + b.Property("PunktUntenId") + .HasColumnType("integer"); + + b.Property("PunktUntenType") + .HasColumnType("integer"); + + b.Property("SewerActivated") + .HasColumnType("boolean"); + + b.Property("SewerCleaned") + .HasColumnType("boolean"); + + b.Property("SewerLength") + .HasColumnType("numeric"); + + b.Property("StreetName") + .HasColumnType("text"); + + b.Property("WaterBarrier") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("BuildingSiteId"); + + b.HasIndex("PipeLinerId"); + + b.HasIndex("PunktObenId"); + + b.HasIndex("PunktUntenId"); + + b.ToTable("SewerObjects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Objektnummer") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("SewerPoints"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.HasOne("DaSaSo.Domain.Model.Project", "Project") + .WithMany("BuildingSites") + .HasForeignKey("ProjectId"); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.PipeLiner", b => + { + b.HasOne("DaSaSo.Domain.Model.Impregnation", "Impregnation") + .WithMany() + .HasForeignKey("ImpregnationId"); + + b.Navigation("Impregnation"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.HasOne("DaSaSo.Domain.Model.Client", "Client") + .WithMany("Projects") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => + { + b.HasOne("DaSaSo.Domain.Model.SewerObject", "SewerObject") + .WithMany("SewerDamages") + .HasForeignKey("SewerObjectId"); + + b.Navigation("SewerObject"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.HasOne("DaSaSo.Domain.Model.Buildingsite", "BuildingSite") + .WithMany("SewerObjects") + .HasForeignKey("BuildingSiteId"); + + b.HasOne("DaSaSo.Domain.Model.PipeLiner", "PipeLiner") + .WithMany() + .HasForeignKey("PipeLinerId"); + + b.HasOne("DaSaSo.Domain.Model.SewerPoint", "PunktOben") + .WithMany() + .HasForeignKey("PunktObenId"); + + b.HasOne("DaSaSo.Domain.Model.SewerPoint", "PunktUnten") + .WithMany() + .HasForeignKey("PunktUntenId"); + + b.Navigation("BuildingSite"); + + b.Navigation("PipeLiner"); + + b.Navigation("PunktOben"); + + b.Navigation("PunktUnten"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Navigation("SewerObjects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Client", b => + { + b.Navigation("Projects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.Navigation("BuildingSites"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.Navigation("SewerDamages"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.cs b/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.cs new file mode 100644 index 0000000..80c546d --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210928140403_SewerPointsAdded.cs @@ -0,0 +1,118 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DaSaSo.EntityFramework.Migrations +{ + public partial class SewerPointsAdded : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_SewerObjects_SewerPoint_PunktObenId", + table: "SewerObjects"); + + migrationBuilder.DropForeignKey( + name: "FK_SewerObjects_SewerPoint_PunktUntenId", + table: "SewerObjects"); + + migrationBuilder.DropPrimaryKey( + name: "PK_SewerPoint", + table: "SewerPoint"); + + migrationBuilder.RenameTable( + name: "SewerPoint", + newName: "SewerPoints"); + + migrationBuilder.AlterColumn( + name: "Date", + table: "PipeLiners", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AlterColumn( + name: "Date", + table: "Impregnations", + type: "timestamp with time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp without time zone"); + + migrationBuilder.AddPrimaryKey( + name: "PK_SewerPoints", + table: "SewerPoints", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_SewerObjects_SewerPoints_PunktObenId", + table: "SewerObjects", + column: "PunktObenId", + principalTable: "SewerPoints", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_SewerObjects_SewerPoints_PunktUntenId", + table: "SewerObjects", + column: "PunktUntenId", + principalTable: "SewerPoints", + principalColumn: "Id"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_SewerObjects_SewerPoints_PunktObenId", + table: "SewerObjects"); + + migrationBuilder.DropForeignKey( + name: "FK_SewerObjects_SewerPoints_PunktUntenId", + table: "SewerObjects"); + + migrationBuilder.DropPrimaryKey( + name: "PK_SewerPoints", + table: "SewerPoints"); + + migrationBuilder.RenameTable( + name: "SewerPoints", + newName: "SewerPoint"); + + migrationBuilder.AlterColumn( + name: "Date", + table: "PipeLiners", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AlterColumn( + name: "Date", + table: "Impregnations", + type: "timestamp without time zone", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone"); + + migrationBuilder.AddPrimaryKey( + name: "PK_SewerPoint", + table: "SewerPoint", + column: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_SewerObjects_SewerPoint_PunktObenId", + table: "SewerObjects", + column: "PunktObenId", + principalTable: "SewerPoint", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_SewerObjects_SewerPoint_PunktUntenId", + table: "SewerObjects", + column: "PunktUntenId", + principalTable: "SewerPoint", + principalColumn: "Id"); + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.Designer.cs b/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.Designer.cs new file mode 100644 index 0000000..631e243 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.Designer.cs @@ -0,0 +1,406 @@ +// +using System; +using DaSaSo.EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace DaSaSo.EntityFramework.Migrations +{ + [DbContext(typeof(DaSaSoDbContext))] + [Migration("20210928153745_ProjectNumberAdded")] + partial class ProjectNumberAdded + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "6.0.0-rc.1.21452.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuildingSiteNumber") + .HasColumnType("text"); + + b.Property("ContactPerson") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("ProjectId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ProjectId"); + + b.ToTable("Buildingsites"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("Firstname") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnType("text"); + + b.Property("Postcode") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Impregnation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DN") + .HasColumnType("integer"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("IsAvaible") + .HasColumnType("boolean"); + + b.Property("LinerNumber") + .HasColumnType("text"); + + b.Property("Linerlength") + .HasColumnType("numeric"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("WallThickness") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.ToTable("Impregnations"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.PipeLiner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CleanedHD") + .HasColumnType("boolean"); + + b.Property("CleanedMechanisch") + .HasColumnType("boolean"); + + b.Property("CleanedRoborter") + .HasColumnType("boolean"); + + b.Property("ClosedEnd") + .HasColumnType("boolean"); + + b.Property("Date") + .HasColumnType("timestamp with time zone"); + + b.Property("ImpregnationId") + .HasColumnType("integer"); + + b.Property("InversionPressure") + .HasColumnType("numeric"); + + b.Property("LinerLength") + .HasColumnType("numeric"); + + b.Property("Operator") + .HasColumnType("text"); + + b.Property("PermitNeeded") + .HasColumnType("boolean"); + + b.Property("Preliner") + .HasColumnType("boolean"); + + b.Property("STVO") + .HasColumnType("boolean"); + + b.Property("TemperaturAssembly") + .HasColumnType("numeric"); + + b.Property("TemperaturStorage") + .HasColumnType("numeric"); + + b.Property("TemperatureOutdoors") + .HasColumnType("numeric"); + + b.Property("TemperatureSewer") + .HasColumnType("numeric"); + + b.Property("WaterBaried") + .HasColumnType("boolean"); + + b.Property("Weather") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ImpregnationId"); + + b.ToTable("PipeLiners"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Projektnummer") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("Projects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DamageType") + .HasColumnType("integer"); + + b.Property("Distance") + .HasColumnType("numeric"); + + b.Property("PreparationType") + .HasColumnType("integer"); + + b.Property("SewerObjectId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SewerObjectId"); + + b.ToTable("SewerDamages"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BuildingSiteId") + .HasColumnType("integer"); + + b.Property("BuildingsiteBarier") + .HasColumnType("boolean"); + + b.Property("DN") + .HasColumnType("integer"); + + b.Property("Material") + .HasColumnType("text"); + + b.Property("ObjektName") + .HasColumnType("text"); + + b.Property("PermitNeeded") + .HasColumnType("boolean"); + + b.Property("PipeLinerId") + .HasColumnType("integer"); + + b.Property("PunktObenId") + .HasColumnType("integer"); + + b.Property("PunktObenType") + .HasColumnType("integer"); + + b.Property("PunktUntenId") + .HasColumnType("integer"); + + b.Property("PunktUntenType") + .HasColumnType("integer"); + + b.Property("SewerActivated") + .HasColumnType("boolean"); + + b.Property("SewerCleaned") + .HasColumnType("boolean"); + + b.Property("SewerLength") + .HasColumnType("numeric"); + + b.Property("StreetName") + .HasColumnType("text"); + + b.Property("WaterBarrier") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("BuildingSiteId"); + + b.HasIndex("PipeLinerId"); + + b.HasIndex("PunktObenId"); + + b.HasIndex("PunktUntenId"); + + b.ToTable("SewerObjects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerPoint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Objektnummer") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("SewerPoints"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.HasOne("DaSaSo.Domain.Model.Project", "Project") + .WithMany("BuildingSites") + .HasForeignKey("ProjectId"); + + b.Navigation("Project"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.PipeLiner", b => + { + b.HasOne("DaSaSo.Domain.Model.Impregnation", "Impregnation") + .WithMany() + .HasForeignKey("ImpregnationId"); + + b.Navigation("Impregnation"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.HasOne("DaSaSo.Domain.Model.Client", "Client") + .WithMany("Projects") + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => + { + b.HasOne("DaSaSo.Domain.Model.SewerObject", "SewerObject") + .WithMany("SewerDamages") + .HasForeignKey("SewerObjectId"); + + b.Navigation("SewerObject"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.HasOne("DaSaSo.Domain.Model.Buildingsite", "BuildingSite") + .WithMany("SewerObjects") + .HasForeignKey("BuildingSiteId"); + + b.HasOne("DaSaSo.Domain.Model.PipeLiner", "PipeLiner") + .WithMany() + .HasForeignKey("PipeLinerId"); + + b.HasOne("DaSaSo.Domain.Model.SewerPoint", "PunktOben") + .WithMany() + .HasForeignKey("PunktObenId"); + + b.HasOne("DaSaSo.Domain.Model.SewerPoint", "PunktUnten") + .WithMany() + .HasForeignKey("PunktUntenId"); + + b.Navigation("BuildingSite"); + + b.Navigation("PipeLiner"); + + b.Navigation("PunktOben"); + + b.Navigation("PunktUnten"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Navigation("SewerObjects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Client", b => + { + b.Navigation("Projects"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => + { + b.Navigation("BuildingSites"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.Navigation("SewerDamages"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.cs b/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.cs new file mode 100644 index 0000000..5b7c890 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210928153745_ProjectNumberAdded.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DaSaSo.EntityFramework.Migrations +{ + public partial class ProjectNumberAdded : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Projektnummer", + table: "Projects", + type: "text", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Projektnummer", + table: "Projects"); + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs b/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs index c63bdd6..24c9897 100644 --- a/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs +++ b/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs @@ -6,6 +6,8 @@ using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +#nullable disable + namespace DaSaSo.EntityFramework.Migrations { [DbContext(typeof(DaSaSoDbContext))] @@ -15,16 +17,18 @@ namespace DaSaSo.EntityFramework.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("Relational:MaxIdentifierLength", 63) - .HasAnnotation("ProductVersion", "6.0.0-preview.7.21378.4") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasAnnotation("ProductVersion", "6.0.0-rc.1.21452.10") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BuildingSiteNumber") .HasColumnType("text"); @@ -42,15 +46,16 @@ namespace DaSaSo.EntityFramework.Migrations b.HasIndex("ProjectId"); - b.ToTable("Buildingsites", (string)null); + b.ToTable("Buildingsites"); }); modelBuilder.Entity("DaSaSo.Domain.Model.Client", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Country") .HasColumnType("text"); @@ -69,21 +74,22 @@ namespace DaSaSo.EntityFramework.Migrations b.HasKey("Id"); - b.ToTable("Clients", (string)null); + b.ToTable("Clients"); }); modelBuilder.Entity("DaSaSo.Domain.Model.Impregnation", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("DN") .HasColumnType("integer"); b.Property("Date") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("IsAvaible") .HasColumnType("boolean"); @@ -102,15 +108,16 @@ namespace DaSaSo.EntityFramework.Migrations b.HasKey("Id"); - b.ToTable("Impregnations", (string)null); + b.ToTable("Impregnations"); }); modelBuilder.Entity("DaSaSo.Domain.Model.PipeLiner", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CleanedHD") .HasColumnType("boolean"); @@ -125,7 +132,7 @@ namespace DaSaSo.EntityFramework.Migrations .HasColumnType("boolean"); b.Property("Date") - .HasColumnType("timestamp without time zone"); + .HasColumnType("timestamp with time zone"); b.Property("ImpregnationId") .HasColumnType("integer"); @@ -170,15 +177,16 @@ namespace DaSaSo.EntityFramework.Migrations b.HasIndex("ImpregnationId"); - b.ToTable("PipeLiners", (string)null); + b.ToTable("PipeLiners"); }); modelBuilder.Entity("DaSaSo.Domain.Model.Project", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClientId") .HasColumnType("integer"); @@ -186,19 +194,23 @@ namespace DaSaSo.EntityFramework.Migrations b.Property("Name") .HasColumnType("text"); + b.Property("Projektnummer") + .HasColumnType("text"); + b.HasKey("Id"); b.HasIndex("ClientId"); - b.ToTable("Projects", (string)null); + b.ToTable("Projects"); }); modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("DamageType") .HasColumnType("integer"); @@ -216,15 +228,16 @@ namespace DaSaSo.EntityFramework.Migrations b.HasIndex("SewerObjectId"); - b.ToTable("SewerDamages", (string)null); + b.ToTable("SewerDamages"); }); modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BuildingSiteId") .HasColumnType("integer"); @@ -284,22 +297,23 @@ namespace DaSaSo.EntityFramework.Migrations b.HasIndex("PunktUntenId"); - b.ToTable("SewerObjects", (string)null); + b.ToTable("SewerObjects"); }); modelBuilder.Entity("DaSaSo.Domain.Model.SewerPoint", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Objektnummer") .HasColumnType("text"); b.HasKey("Id"); - b.ToTable("SewerPoint", (string)null); + b.ToTable("SewerPoints"); }); modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => diff --git a/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs b/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs index a58b9d0..2a5e13f 100644 --- a/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs +++ b/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs @@ -40,7 +40,11 @@ namespace DaSaSo.EntityFramework.Services { using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) { - SewerObject? s = await context.SewerObjects.Include("BuildingSite").FirstOrDefaultAsync((e) => e.Id == id); + SewerObject? s = await context.SewerObjects + .Include("BuildingSite") + .Include("PunktOben") + .Include("PunktUnten") + .FirstOrDefaultAsync((e) => e.Id == id); return s; } } diff --git a/DaSaSo.EntityFramework/Services/SewerpointDataService.cs b/DaSaSo.EntityFramework/Services/SewerpointDataService.cs index f2de6f8..f0170c0 100644 --- a/DaSaSo.EntityFramework/Services/SewerpointDataService.cs +++ b/DaSaSo.EntityFramework/Services/SewerpointDataService.cs @@ -1,6 +1,7 @@ using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.EntityFramework.Services.Common; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; @@ -9,7 +10,7 @@ using System.Threading.Tasks; namespace DaSaSo.EntityFramework.Services { - public class SewerpointDataService : IDataService + public class SewerpointDataService : ISewerPointDataService { private readonly DaSaSoDbContextFactory _contextFactory; private readonly NonQueryDataService _nonQueryDataService; @@ -45,6 +46,14 @@ namespace DaSaSo.EntityFramework.Services throw new NotImplementedException(); } + public async Task GetbyObjektname(string objektname) + { + using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) + { + return await context.SewerPoints.FirstOrDefaultAsync((e) => e.Objektnummer == objektname); + } + } + public async Task Update(int id, SewerPoint entity) { return await _nonQueryDataService.Update(id, entity); diff --git a/DaSaSo.ViewModel/Commands/AddClientCommand.cs b/DaSaSo.ViewModel/Commands/AddClientCommand.cs index 73c0d89..53e83b2 100644 --- a/DaSaSo.ViewModel/Commands/AddClientCommand.cs +++ b/DaSaSo.ViewModel/Commands/AddClientCommand.cs @@ -28,7 +28,7 @@ namespace DaSaSo.ViewModel.Commands { Client newClient = await dataservice.Create(new Client()); - actualProject.SetClient(newClient); + actualProject.SetClient(newClient,false); //actualProject.SetClient(clientListViewModel.SelectedClient); renavigator.Renavigate(new ClientEditViewModel(dataservice, actualProject, renavigator)); } diff --git a/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs b/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs index aa62986..82e3184 100644 --- a/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs +++ b/DaSaSo.ViewModel/Commands/SaveSewerCommand.cs @@ -22,7 +22,8 @@ namespace DaSaSo.ViewModel.Commands private readonly IRenavigator _renavigator; private readonly ISewerMainNavigator _navigator; - public SaveSewerCommand(SewerMainListViewModel sewerMainListViewModel, + public SaveSewerCommand( + SewerMainListViewModel sewerMainListViewModel, IDataService dataService, IActualProject actualProject, ISewerObjectService sewerObjectService, @@ -43,11 +44,11 @@ namespace DaSaSo.ViewModel.Commands public override async Task ExecuteAsync(object? parameter) { _navigator.CurrentViewModel = null; - var s = _navigator; + //Debugger.Break(); - //var d = await _sewerPointService.CreateOrFindSewerpoint("123"); + //_actualProject.AktuellSewerObject.PunktOben = d; - _ = await _dataService.Update(_actualProject.AktuellSewerObject.Id, _actualProject.AktuellSewerObject); + //_ = await _dataService.Update(_actualProject.AktuellSewerObject.Id, _actualProject.AktuellSewerObject); _renavigator.Renavigate(new SewerObjectListViewModel(_dataService, _actualProject, _sewerObjectService)); } } diff --git a/DaSaSo.ViewModel/Commands/SaveSewerStammdatenCommand.cs b/DaSaSo.ViewModel/Commands/SaveSewerStammdatenCommand.cs new file mode 100644 index 0000000..9c43d01 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/SaveSewerStammdatenCommand.cs @@ -0,0 +1,51 @@ +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.Domain.Services.SewerPointServices; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.ViewModel.Commands +{ + class SaveSewerStammdatenCommand : AsyncCommandBase + { + private readonly SewerStammdatenViewModel _stammdatenViewModel; + private IDataService _dataService; + private readonly ISewerpointService _sewerPointService; + + public SaveSewerStammdatenCommand(SewerStammdatenViewModel stammdatenViewModel, IDataService dataService, ISewerpointService sewerpointService) + { + _stammdatenViewModel = stammdatenViewModel; + _dataService = dataService; + _sewerPointService = sewerpointService; + } + public override async Task ExecuteAsync(object? parameter) + { + if (_stammdatenViewModel._oberepunkt != null) + { + if ((_stammdatenViewModel.Model.PunktOben == null) || (_stammdatenViewModel._oberepunkt != _stammdatenViewModel.Model.PunktOben.Objektnummer)) + { + SewerPoint punktOben = await _sewerPointService.CreateOrFindSewerpoint(_stammdatenViewModel._oberepunkt); + _stammdatenViewModel.Model.PunktOben = punktOben; + } + } + if (_stammdatenViewModel._unterepunkt != null) + { + if ((_stammdatenViewModel.Model.PunktUnten == null) || (_stammdatenViewModel._unterepunkt != _stammdatenViewModel.Model.PunktUnten.Objektnummer)) + { + SewerPoint punktUnten = await _sewerPointService.CreateOrFindSewerpoint(_stammdatenViewModel._unterepunkt); + _stammdatenViewModel.Model.PunktUnten = punktUnten; + } + } + + + + + _stammdatenViewModel.Model = await _dataService.Update(_stammdatenViewModel.Model.Id, _stammdatenViewModel.Model); + Trace.WriteLine("Daten gespeichert"); + } + } +} diff --git a/DaSaSo.ViewModel/Interface/IActualProject.cs b/DaSaSo.ViewModel/Interface/IActualProject.cs index a418023..217dcd1 100644 --- a/DaSaSo.ViewModel/Interface/IActualProject.cs +++ b/DaSaSo.ViewModel/Interface/IActualProject.cs @@ -18,7 +18,7 @@ namespace DaSaSo.ViewModel.Interface Buildingsite AktuellBaustelle { get; } SewerObject AktuellSewerObject { get; } - void SetClient(Client client); + void SetClient(Client client, bool notification = true); void SetProject(Project project, bool notification = true); void SetBuildingSite(Buildingsite buildingsite); void SetSewerObject(SewerObject sewerObject, bool notification = true); diff --git a/DaSaSo.ViewModel/ProjectEditViewModel.cs b/DaSaSo.ViewModel/ProjectEditViewModel.cs index 87db7a3..4598312 100644 --- a/DaSaSo.ViewModel/ProjectEditViewModel.cs +++ b/DaSaSo.ViewModel/ProjectEditViewModel.cs @@ -34,6 +34,18 @@ namespace DaSaSo.ViewModel } } } + public string ProjektNummer + { + get => _model.Projektnummer; + set + { + if(_model.Projektnummer != value) + { + _model.Projektnummer = value; + OnPropertyChanged(); + } + } + } public ProjectEditViewModel(IDataService dataservice, IActualProject actualProject,IRenavigator renavigator, IProjectService projectService) { diff --git a/DaSaSo.ViewModel/ProjectListViewModel.cs b/DaSaSo.ViewModel/ProjectListViewModel.cs index 7852338..fbcf389 100644 --- a/DaSaSo.ViewModel/ProjectListViewModel.cs +++ b/DaSaSo.ViewModel/ProjectListViewModel.cs @@ -56,14 +56,9 @@ namespace DaSaSo.ViewModel LoadProjecte(); } - public async void LoadProjecte() + public void LoadProjecte() { - - var projekte = await genericDataService.GetAllByClient(actualProject.AktuellClient); - // - InitCollection(Projekte, projekte); - - + InitCollection(Projekte, actualProject.AktuellClient.Projects); } private void InitCollection(ObservableCollection target, IEnumerable source) diff --git a/DaSaSo.ViewModel/SewerStammdatenViewModel.cs b/DaSaSo.ViewModel/SewerStammdatenViewModel.cs index e31fe81..fb0d914 100644 --- a/DaSaSo.ViewModel/SewerStammdatenViewModel.cs +++ b/DaSaSo.ViewModel/SewerStammdatenViewModel.cs @@ -1,6 +1,8 @@ using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; +using DaSaSo.Domain.Services.SewerPointServices; using DaSaSo.EntityFramework.Services; +using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; @@ -8,14 +10,20 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Input; namespace DaSaSo.ViewModel { public class SewerStammdatenViewModel : BaseViewModel { private readonly IActualProject _actualProject; + private readonly ISewerpointService _sewerpointService; private SewerObject _model; + public ICommand SaveCommand { get; set; } + public string _oberepunkt { get; set; } + public string _unterepunkt { get; set; } + public string Haltungsname { get => Model.ObjektName; @@ -28,8 +36,39 @@ namespace DaSaSo.ViewModel } } } - public string Oberepunkt { get; set; } - public string Unterepunkt { get; set; } + + public string Oberepunkt + { + get + { + if (_model.PunktOben != null) + return _model.PunktOben.Objektnummer; + return _oberepunkt; + } + set + { + if(_oberepunkt != value) + { + _oberepunkt = value; + } + } + } + public string Unterepunkt + { + get + { + if (_model.PunktUnten != null) + return _model.PunktUnten.Objektnummer; + return _unterepunkt; + } + set + { + if(_unterepunkt != value) + { + _unterepunkt = value; + } + } + } public int Durchmesser { get => Model.DN; @@ -110,13 +149,12 @@ namespace DaSaSo.ViewModel } } - public SewerStammdatenViewModel(IActualProject actualProject) + public SewerStammdatenViewModel(IActualProject actualProject, IDataService dataService, ISewerpointService sewerpointService) { _actualProject = actualProject; Model = _actualProject.AktuellSewerObject; - - + SaveCommand = new SaveSewerStammdatenCommand(this, dataService, sewerpointService); } ~SewerStammdatenViewModel() diff --git a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs index dfba01b..5962b87 100644 --- a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs +++ b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs @@ -39,10 +39,11 @@ namespace DaSaSo.ViewModel.State.ActualState SewerObjectChanged?.Invoke(this, new EventArgs()); } #endregion - public void SetClient(Client client) + public void SetClient(Client client, bool notification = true) { AktuellClient = client; - OnClientChanged(); + if(notification) + OnClientChanged(); } public void SetProject(Project project, bool notification = true) diff --git a/DaSaSo.Wpf/DaSaSo.Wpf.csproj b/DaSaSo.Wpf/DaSaSo.Wpf.csproj index 5215f87..462d56f 100644 --- a/DaSaSo.Wpf/DaSaSo.Wpf.csproj +++ b/DaSaSo.Wpf/DaSaSo.Wpf.csproj @@ -8,6 +8,10 @@ + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs index c0f532d..32790e4 100644 --- a/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs +++ b/DaSaSo.Wpf/HostBuilders/AddServicesHostBuilderExtensions.cs @@ -30,6 +30,7 @@ namespace DaSaSo.Wpf.HostBuilders services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); }); return host; } diff --git a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs index 8b499bb..e5955ac 100644 --- a/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/DaSaSo.Wpf/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -48,7 +48,9 @@ namespace DaSaSo.Wpf.HostBuilders services.AddTransient>(services => { return () => new SewerStammdatenViewModel( - services.GetRequiredService() + services.GetRequiredService(), + services.GetRequiredService>(), + services.GetRequiredService() ); }); services.AddSingleton>(services => diff --git a/DaSaSo.Wpf/View/Project/ProjectEditView.xaml b/DaSaSo.Wpf/View/Project/ProjectEditView.xaml index 7051a77..62d4bd5 100644 --- a/DaSaSo.Wpf/View/Project/ProjectEditView.xaml +++ b/DaSaSo.Wpf/View/Project/ProjectEditView.xaml @@ -13,8 +13,16 @@ -