diff --git a/DaSaSo.Domain/DesignModel/SewerObjectsToCountry.cs b/DaSaSo.Domain/DesignModel/SewerObjectsToCountry.cs new file mode 100644 index 0000000..8a5f311 --- /dev/null +++ b/DaSaSo.Domain/DesignModel/SewerObjectsToCountry.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.DesignModel +{ + public class SewerObjectsToCountry + { + public string CountryName { get; set; } + public IEnumerable StreetsOfSewerobjects { get; set; } + } +} diff --git a/DaSaSo.Domain/DesignModel/SewerObjectsToStreet.cs b/DaSaSo.Domain/DesignModel/SewerObjectsToStreet.cs new file mode 100644 index 0000000..20b6ea2 --- /dev/null +++ b/DaSaSo.Domain/DesignModel/SewerObjectsToStreet.cs @@ -0,0 +1,17 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.DesignModel +{ + public class SewerObjectsToStreet + { + public string Streetname { get; set; } + public string CountryName { get; set; } + public IEnumerable SewerObjects { get; set; } + + } +} diff --git a/DaSaSo.Domain/Model/Buildingsite.cs b/DaSaSo.Domain/Model/Buildingsite.cs index f9edf02..c7d70a3 100644 --- a/DaSaSo.Domain/Model/Buildingsite.cs +++ b/DaSaSo.Domain/Model/Buildingsite.cs @@ -12,6 +12,6 @@ namespace DaSaSo.Domain.Model public string BuildingSiteNumber { get; set; } public string Country { get; set; } public string ContactPerson { get; set; } - public IEnumerable SewerObjects { get; set; } + public IEnumerable SewerObjects { get; set; } } } diff --git a/DaSaSo.Domain/Model/SewerDamage.cs b/DaSaSo.Domain/Model/SewerDamage.cs new file mode 100644 index 0000000..9205b9b --- /dev/null +++ b/DaSaSo.Domain/Model/SewerDamage.cs @@ -0,0 +1,28 @@ +namespace DaSaSo.Domain.Model +{ + public enum EDamageType + { + Riss = 1, + Bruch = 2, + Scherbe = 4, + Wurzel = 8, + Inkrustation = 16, + Ablagerung = 32, + EinrageneStutzen = 64, + Infiltration = 128 + } + public enum EPreparationType + { + CleanedHD = 1, + CleanedMechanisch = 2, + CleanedRoborter = 4, + FaekalienFrei = 8 + } + public class SewerDamage : DomainObject + { + public SewerObject SewerObject { get; set; } + public decimal Distance { get; set; } + public EDamageType DamageType { get; set; } + public EPreparationType PreparationType { get; set; } + } +} \ No newline at end of file diff --git a/DaSaSo.Domain/Model/SewerObject.cs b/DaSaSo.Domain/Model/SewerObject.cs new file mode 100644 index 0000000..498e575 --- /dev/null +++ b/DaSaSo.Domain/Model/SewerObject.cs @@ -0,0 +1,27 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace DaSaSo.Domain.Model +{ + public class SewerObject : DomainObject + { + public Buildingsite BuildingSite { get; set; } + public string StreetName { get; set; } + public string ObjektName { get; set; } + public string PointFrom { get; set; } + public string PointTo { get; set; } + public string Material { get; set; } + public int DN { get; set; } + public decimal SewerLength { get; set; } + public bool SewerActivated { get; set; } + public bool SewerCleaned { get; set; } + public bool WaterBarrier { get; set; } + public bool PermitNeeded { get; set; } + public bool BuildingsiteBarier { get; set; } + public IEnumerable SewerDamages { get; set; } + + //Not for Databinding + [NotMapped] + public bool IsSelected { get; set; } + + } +} \ No newline at end of file diff --git a/DaSaSo.Domain/Model/SewerObjects.cs b/DaSaSo.Domain/Model/SewerObjects.cs deleted file mode 100644 index 8aa9707..0000000 --- a/DaSaSo.Domain/Model/SewerObjects.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace DaSaSo.Domain.Model -{ - public class SewerObjects : DomainObject - { - public Buildingsite BuildingSite { get; set; } - public string StreetName { get; set; } - public string ObjektName { get; set; } - public string PointFrom { get; set; } - public string PointTo { get; set; } - public int DN { get; set; } - public decimal SewerLength { get; set; } - } -} \ No newline at end of file diff --git a/DaSaSo.EntityFramework/DaSaSoDbContext.cs b/DaSaSo.EntityFramework/DaSaSoDbContext.cs index 0503c8a..9060db5 100644 --- a/DaSaSo.EntityFramework/DaSaSoDbContext.cs +++ b/DaSaSo.EntityFramework/DaSaSoDbContext.cs @@ -23,6 +23,8 @@ namespace DaSaSo.EntityFramework public DbSet? Clients { get; set; } public DbSet? Projects { get; set; } public DbSet? Buildingsites { get; set; } + public DbSet? SewerObjects { get; set; } + public DbSet? SewerDamages { get; set; } } } diff --git a/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.Designer.cs b/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.Designer.cs new file mode 100644 index 0000000..9ed362d --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.Designer.cs @@ -0,0 +1,234 @@ +// +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; + +namespace DaSaSo.EntityFramework.Migrations +{ + [DbContext(typeof(DaSaSoDbContext))] + [Migration("20210916075225_SewerDamageAdded")] + partial class SewerDamageAdded + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "6.0.0-preview.7.21378.4") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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.SewerObjects", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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("PointFrom") + .HasColumnType("text"); + + b.Property("PointTo") + .HasColumnType("text"); + + 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.ToTable("SewerObjects"); + }); + + 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.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.SewerObjects", "SewerObject") + .WithMany("SewerDamages") + .HasForeignKey("SewerObjectId"); + + b.Navigation("SewerObject"); + }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObjects", b => + { + b.HasOne("DaSaSo.Domain.Model.Buildingsite", "BuildingSite") + .WithMany("SewerObjects") + .HasForeignKey("BuildingSiteId"); + + b.Navigation("BuildingSite"); + }); + + 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.SewerObjects", b => + { + b.Navigation("SewerDamages"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.cs b/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.cs new file mode 100644 index 0000000..1d773b2 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210916075225_SewerDamageAdded.cs @@ -0,0 +1,109 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace DaSaSo.EntityFramework.Migrations +{ + public partial class SewerDamageAdded : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "BuildingsiteBarier", + table: "SewerObjects", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "Material", + table: "SewerObjects", + type: "text", + nullable: true); + + migrationBuilder.AddColumn( + name: "PermitNeeded", + table: "SewerObjects", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "SewerActivated", + table: "SewerObjects", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "SewerCleaned", + table: "SewerObjects", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "WaterBarrier", + table: "SewerObjects", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.CreateTable( + name: "SewerDamages", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + SewerObjectId = table.Column(type: "integer", nullable: true), + Distance = table.Column(type: "numeric", nullable: false), + DamageType = table.Column(type: "integer", nullable: false), + PreparationType = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_SewerDamages", x => x.Id); + table.ForeignKey( + name: "FK_SewerDamages_SewerObjects_SewerObjectId", + column: x => x.SewerObjectId, + principalTable: "SewerObjects", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_SewerDamages_SewerObjectId", + table: "SewerDamages", + column: "SewerObjectId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "SewerDamages"); + + migrationBuilder.DropColumn( + name: "BuildingsiteBarier", + table: "SewerObjects"); + + migrationBuilder.DropColumn( + name: "Material", + table: "SewerObjects"); + + migrationBuilder.DropColumn( + name: "PermitNeeded", + table: "SewerObjects"); + + migrationBuilder.DropColumn( + name: "SewerActivated", + table: "SewerObjects"); + + migrationBuilder.DropColumn( + name: "SewerCleaned", + table: "SewerObjects"); + + migrationBuilder.DropColumn( + name: "WaterBarrier", + table: "SewerObjects"); + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/20210916135239_SewerObjectsAdded.Designer.cs b/DaSaSo.EntityFramework/Migrations/20210916135239_SewerObjectsAdded.Designer.cs new file mode 100644 index 0000000..34ff294 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210916135239_SewerObjectsAdded.Designer.cs @@ -0,0 +1,234 @@ +// +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; + +namespace DaSaSo.EntityFramework.Migrations +{ + [DbContext(typeof(DaSaSoDbContext))] + [Migration("20210916135239_SewerObjectsAdded")] + partial class SewerObjectsAdded + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Relational:MaxIdentifierLength", 63) + .HasAnnotation("ProductVersion", "6.0.0-preview.7.21378.4") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + modelBuilder.Entity("DaSaSo.Domain.Model.Buildingsite", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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("PointFrom") + .HasColumnType("text"); + + b.Property("PointTo") + .HasColumnType("text"); + + 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.ToTable("SewerObjects"); + }); + + 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.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.Navigation("BuildingSite"); + }); + + 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/20210916135239_SewerObjectsAdded.cs b/DaSaSo.EntityFramework/Migrations/20210916135239_SewerObjectsAdded.cs new file mode 100644 index 0000000..4086c91 --- /dev/null +++ b/DaSaSo.EntityFramework/Migrations/20210916135239_SewerObjectsAdded.cs @@ -0,0 +1,17 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DaSaSo.EntityFramework.Migrations +{ + public partial class SewerObjectsAdded : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs b/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs index 720b6d0..a254825 100644 --- a/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs +++ b/DaSaSo.EntityFramework/Migrations/DaSaSoDbContextModelSnapshot.cs @@ -92,7 +92,33 @@ namespace DaSaSo.EntityFramework.Migrations b.ToTable("Projects"); }); - modelBuilder.Entity("DaSaSo.Domain.Model.SewerObjects", b => + modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + 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() @@ -102,24 +128,42 @@ namespace DaSaSo.EntityFramework.Migrations 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("PointFrom") .HasColumnType("text"); b.Property("PointTo") .HasColumnType("text"); + 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"); @@ -145,7 +189,16 @@ namespace DaSaSo.EntityFramework.Migrations b.Navigation("Client"); }); - modelBuilder.Entity("DaSaSo.Domain.Model.SewerObjects", b => + 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") @@ -168,6 +221,11 @@ namespace DaSaSo.EntityFramework.Migrations { b.Navigation("BuildingSites"); }); + + modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b => + { + b.Navigation("SewerDamages"); + }); #pragma warning restore 612, 618 } } diff --git a/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs b/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs new file mode 100644 index 0000000..2b9949c --- /dev/null +++ b/DaSaSo.EntityFramework/Services/SewerObjectDataService.cs @@ -0,0 +1,59 @@ +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; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.EntityFramework.Services +{ + public class SewerObjectDataService : IDataService + { + private readonly DaSaSoDbContextFactory _contextFactory; + private readonly NonQueryDataService _nonQueryDataService; + + public SewerObjectDataService(DaSaSoDbContextFactory contextFactory) + { + this._contextFactory = contextFactory; + _nonQueryDataService = new NonQueryDataService(contextFactory); + } + + public async Task Create(SewerObject entity) + { + return await _nonQueryDataService.Create(entity); + } + + public async Task Delete(int id) + { + return await _nonQueryDataService.Delete(id); + } + + public Task Get(int id) + { + throw new NotImplementedException(); + } + + public Task> GetAll() + { + throw new NotImplementedException(); + } + + public async Task> GetAllByBuildingsite(Buildingsite buildingsite) + { + int id = buildingsite.Id; + using (DaSaSoDbContext context = _contextFactory.CreateDbContext()) + { + IEnumerable entities = await context.SewerObjects.Where(x => x.BuildingSite.Id == id).ToListAsync(); + return entities; + } + } + + public async Task Update(int id, SewerObject entity) + { + return await _nonQueryDataService.Update(id, entity); + } + } +} diff --git a/DaSaSo.InMemoryProvider/InMemoryObjecteListView.cs b/DaSaSo.InMemoryProvider/InMemoryObjecteListView.cs new file mode 100644 index 0000000..b5cf874 --- /dev/null +++ b/DaSaSo.InMemoryProvider/InMemoryObjecteListView.cs @@ -0,0 +1,37 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.InMemoryProvider +{ + public class InMemoryObjecteListView + { + private ObservableCollection _sewerObjects { get; } + public ObservableCollection SewerObjects { get => _sewerObjects; } + public InMemoryObjecteListView() + { + _sewerObjects = new ObservableCollection(); + _sewerObjects.Add(new SewerObject() + { + DN = 200, + Material = "STZ", + ObjektName = "SW01", + PointFrom = "SW01", + PointTo = "SW02" + }); + _sewerObjects.Add( + new SewerObject() + { + DN = 200, + Material = "STZ", + ObjektName = "SW01", + PointFrom = "SW01", + PointTo = "SW02" + }); + } + } +} diff --git a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs index 3fe963a..9f79d8b 100644 --- a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs +++ b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs @@ -1,6 +1,7 @@ using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.EntityFramework.Services; +using DaSaSo.ViewModel.Commands; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; @@ -8,16 +9,34 @@ using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Input; namespace DaSaSo.ViewModel { public class BuildingsiteListViewModel: BaseViewModel { public ObservableCollection Buildingsites { get; } + private readonly IActualProject _actualProject; private readonly IRenavigator _renavigator; private readonly BuildingsiteDataService _buildingSiteDataService; + private Buildingsite? _selectedBuildingsite; + + public Buildingsite? SelectedBuildingsite + { + get => _selectedBuildingsite; + set + { + if(_selectedBuildingsite != value) + { + _selectedBuildingsite = value; + OnPropertyChanged(); + } + } + } + + public ICommand SelectCommand { get; set; } public BuildingsiteListViewModel(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator) { @@ -25,6 +44,7 @@ namespace DaSaSo.ViewModel _renavigator = renavigator; _buildingSiteDataService = buildingSiteDataService as BuildingsiteDataService; Buildingsites = new ObservableCollection(); + SelectCommand = new SelectBuildingsiteCommand(actualProject, this); LoadBuildingsites(); } diff --git a/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs b/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs new file mode 100644 index 0000000..211a173 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/SelectBuildingsiteCommand.cs @@ -0,0 +1,27 @@ +using DaSaSo.ViewModel.Interface; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.ViewModel.Commands +{ + public class SelectBuildingsiteCommand : AsyncCommandBase + { + private IActualProject _actualProject; + private BuildingsiteListViewModel _buildingsiteListViewModel; + + public SelectBuildingsiteCommand(IActualProject actualProject, BuildingsiteListViewModel buildingsiteListViewModel) + { + this._actualProject = actualProject; + this._buildingsiteListViewModel = buildingsiteListViewModel; + } + + public override async Task ExecuteAsync(object? parameter) + { + var s = _buildingsiteListViewModel.SelectedBuildingsite; + _actualProject.SetBuildingSite(s); + } + } +} diff --git a/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj b/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj index 3d83494..b7f4dbc 100644 --- a/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj +++ b/DaSaSo.ViewModel/DaSaSo.ViewModel.csproj @@ -12,6 +12,7 @@ + diff --git a/DaSaSo.ViewModel/Factories/ViewModelAbstractFactory.cs b/DaSaSo.ViewModel/Factories/ViewModelAbstractFactory.cs index 8eef0e3..634263b 100644 --- a/DaSaSo.ViewModel/Factories/ViewModelAbstractFactory.cs +++ b/DaSaSo.ViewModel/Factories/ViewModelAbstractFactory.cs @@ -18,19 +18,21 @@ namespace DaSaSo.ViewModel.Factories private CreateViewModel _createClientEditViewModel; private CreateViewModel _createProjektListViewModel; private CreateViewModel _createBuildingsiteListViewModel; + private CreateViewModel _createSewerObjectListViewModel; public ViewModelAbstractFactory( CreateViewModel createHomeViewModel, CreateViewModel createClientListViewModel, CreateViewModel createClientEditViewModel, CreateViewModel createProjektListViewModel, - CreateViewModel createBuildingsiteListViewModel) + CreateViewModel createBuildingsiteListViewModel, CreateViewModel createSewerObjectListViewModel) { _createHomeViewModel = createHomeViewModel; _createClientListViewModel = createClientListViewModel; _createClientEditViewModel = createClientEditViewModel; _createProjektListViewModel = createProjektListViewModel; _createBuildingsiteListViewModel = createBuildingsiteListViewModel; + _createSewerObjectListViewModel = createSewerObjectListViewModel; } public BaseViewModel CreateViewModel(EViewType viewType) @@ -48,9 +50,9 @@ namespace DaSaSo.ViewModel.Factories return _createProjektListViewModel(); case EViewType.Buildingsites: return _createBuildingsiteListViewModel(); - /*case EViewType.SewerObjects: - break; - */ + case EViewType.SewerObjects: + return _createSewerObjectListViewModel(); + default: throw new ArgumentException("The Viewtype does not have a ViewModel.", "viewType"); } diff --git a/DaSaSo.ViewModel/SewerObjectListViewModel.cs b/DaSaSo.ViewModel/SewerObjectListViewModel.cs new file mode 100644 index 0000000..7a685f5 --- /dev/null +++ b/DaSaSo.ViewModel/SewerObjectListViewModel.cs @@ -0,0 +1,92 @@ +using DaSaSo.Domain.DesignModel; +using DaSaSo.Domain.Model; +using DaSaSo.Domain.Services; +using DaSaSo.EntityFramework.Services; +using DaSaSo.InMemoryProvider; +using DaSaSo.ViewModel.Interface; +using Microsoft.Toolkit.Mvvm.Input; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace DaSaSo.ViewModel +{ + public class SewerObjectListViewModel : BaseViewModel + { + private readonly SewerObjectDataService _sewerObjectDataService; + private readonly IActualProject _actualProject; + public ObservableCollection SewerObjects { get; } + public object Testme { get; set; } + public ICommand Bearbeiten { get; set; } + + public SewerObjectListViewModel(IDataService sewerObjectDataService, IActualProject actualProject) + { + SewerObjects = new ObservableCollection(); + this._sewerObjectDataService = (sewerObjectDataService as SewerObjectDataService); + this._actualProject = actualProject; + + LoadSewerObjects(); + Bearbeiten = new RelayCommand(function); + } + + private void function() + { + SewerObject? SelectedSewer = GetSelectedSewer(); + if (SelectedSewer == null) return; + Debugger.Break(); + } + + private SewerObject? GetSelectedSewer() + { + SewerObject? result = null; + foreach(SewerObjectsToStreet? streetcollection in SewerObjects) + { + foreach(SewerObject? sewer in streetcollection.SewerObjects) + { + if (sewer.IsSelected) + { + result = sewer; + break; + } + } + if (result != null) + break; + } + + return result; + } + + private async void LoadSewerObjects() + { + IEnumerable? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle); + List _sewers = sewerobjects.ToList(); + + // Get all Streetnames + IEnumerable? streetnames = sewerobjects.Select(x => x.StreetName).Distinct(); + List result = new List(); + + foreach(string streetname in streetnames) + { + SewerObjectsToStreet res = new SewerObjectsToStreet(); + res.Streetname = streetname; + // Get all Objects that called in street + res.SewerObjects = _sewers.FindAll(x => x.StreetName.Equals(streetname)); + + result.Add(res); + } + InitCollection(SewerObjects, result); + } + + private void InitCollection(ObservableCollection target, List source) + { + target.Clear(); + foreach (var i in source) + target.Add(i); + } + } +} diff --git a/DaSaSo.Wpf/App.xaml.cs b/DaSaSo.Wpf/App.xaml.cs index 9d11d9b..2e12669 100644 --- a/DaSaSo.Wpf/App.xaml.cs +++ b/DaSaSo.Wpf/App.xaml.cs @@ -43,6 +43,7 @@ namespace DaSaSo.Wpf services.AddSingleton, ClientDataService>(); services.AddSingleton, ProjectDataService>(); services.AddSingleton, BuildingsiteDataService>(); + services.AddSingleton, SewerObjectDataService>(); services.AddSingleton(); @@ -89,6 +90,14 @@ namespace DaSaSo.Wpf services.GetRequiredService())); }); + services.AddSingleton>(services => + { + return () => new SewerObjectListViewModel( + services.GetRequiredService>(), + services.GetRequiredService() + ); + }); + //services.AddSingleton(); services.AddScoped(); services.AddScoped(); diff --git a/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user b/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user index 483d867..ad1be3b 100644 --- a/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user +++ b/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user @@ -25,6 +25,9 @@ Code + + Code + @@ -51,6 +54,9 @@ Designer + + Designer + Designer diff --git a/DaSaSo.Wpf/Sampledata/SewerObjectListSampleData.cs b/DaSaSo.Wpf/Sampledata/SewerObjectListSampleData.cs new file mode 100644 index 0000000..98f441b --- /dev/null +++ b/DaSaSo.Wpf/Sampledata/SewerObjectListSampleData.cs @@ -0,0 +1,50 @@ +using DaSaSo.Domain.DesignModel; +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Wpf.Sampledata +{ + + + public class SewerObjectListSampleData + { + public ObservableCollection SewerObjects { get; private set; } + public SewerObjectListSampleData() + { + SewerObjects = new ObservableCollection(); + List _objecte = new List(); + + _objecte.Add(new SewerObject() + { + DN = 200, + Material = "STZ", + ObjektName = "SW01", + PointFrom = "SW01", + PointTo = "SW02", + StreetName = "Barenberg" + }); + _objecte.Add( + new SewerObject() + { + DN = 200, + Material = "STZ", + ObjektName = "SW01", + PointFrom = "SW01", + PointTo = "SW02", + StreetName = "Barenberg" + }); + + SewerObjects.Add(new SewerObjectsToStreet() + { + Streetname = "Barenberg", + SewerObjects = _objecte + }); + + } + } +} diff --git a/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml index 1580023..1725205 100644 --- a/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml +++ b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteListView.xaml @@ -7,6 +7,9 @@ mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + + +