Objectliste angefangen

This commit is contained in:
HuskyTeufel
2021-09-16 20:36:55 +02:00
parent 4123cc7aba
commit 0f11ce7f0f
26 changed files with 1127 additions and 21 deletions

View File

@@ -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<SewerObjectsToStreet> StreetsOfSewerobjects { get; set; }
}
}

View File

@@ -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<SewerObject> SewerObjects { get; set; }
}
}

View File

@@ -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> SewerObjects { get; set; }
public IEnumerable<SewerObject> SewerObjects { get; set; }
}
}

View File

@@ -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; }
}
}

View File

@@ -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<SewerDamage> SewerDamages { get; set; }
//Not for Databinding
[NotMapped]
public bool IsSelected { get; set; }
}
}

View File

@@ -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; }
}
}

View File

@@ -23,6 +23,8 @@ namespace DaSaSo.EntityFramework
public DbSet<Client>? Clients { get; set; }
public DbSet<Project>? Projects { get; set; }
public DbSet<Buildingsite>? Buildingsites { get; set; }
public DbSet<SewerObject>? SewerObjects { get; set; }
public DbSet<SewerDamage>? SewerDamages { get; set; }
}
}

View File

@@ -0,0 +1,234 @@
// <auto-generated />
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<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("BuildingSiteNumber")
.HasColumnType("text");
b.Property<string>("ContactPerson")
.HasColumnType("text");
b.Property<string>("Country")
.HasColumnType("text");
b.Property<int?>("ProjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("Buildingsites");
});
modelBuilder.Entity("DaSaSo.Domain.Model.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Country")
.HasColumnType("text");
b.Property<string>("Firstname")
.HasColumnType("text");
b.Property<string>("LastName")
.HasColumnType("text");
b.Property<string>("Postcode")
.HasColumnType("text");
b.Property<string>("Street")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("DaSaSo.Domain.Model.Project", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("ClientId")
.HasColumnType("integer");
b.Property<string>("Name")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ClientId");
b.ToTable("Projects");
});
modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int>("DamageType")
.HasColumnType("integer");
b.Property<decimal>("Distance")
.HasColumnType("numeric");
b.Property<int>("PreparationType")
.HasColumnType("integer");
b.Property<int?>("SewerObjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SewerObjectId");
b.ToTable("SewerDamages");
});
modelBuilder.Entity("DaSaSo.Domain.Model.SewerObjects", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("BuildingSiteId")
.HasColumnType("integer");
b.Property<bool>("BuildingsiteBarier")
.HasColumnType("boolean");
b.Property<int>("DN")
.HasColumnType("integer");
b.Property<string>("Material")
.HasColumnType("text");
b.Property<string>("ObjektName")
.HasColumnType("text");
b.Property<bool>("PermitNeeded")
.HasColumnType("boolean");
b.Property<string>("PointFrom")
.HasColumnType("text");
b.Property<string>("PointTo")
.HasColumnType("text");
b.Property<bool>("SewerActivated")
.HasColumnType("boolean");
b.Property<bool>("SewerCleaned")
.HasColumnType("boolean");
b.Property<decimal>("SewerLength")
.HasColumnType("numeric");
b.Property<string>("StreetName")
.HasColumnType("text");
b.Property<bool>("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
}
}
}

View File

@@ -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<bool>(
name: "BuildingsiteBarier",
table: "SewerObjects",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<string>(
name: "Material",
table: "SewerObjects",
type: "text",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "PermitNeeded",
table: "SewerObjects",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "SewerActivated",
table: "SewerObjects",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "SewerCleaned",
table: "SewerObjects",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "WaterBarrier",
table: "SewerObjects",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.CreateTable(
name: "SewerDamages",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
SewerObjectId = table.Column<int>(type: "integer", nullable: true),
Distance = table.Column<decimal>(type: "numeric", nullable: false),
DamageType = table.Column<int>(type: "integer", nullable: false),
PreparationType = table.Column<int>(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");
}
}
}

View File

@@ -0,0 +1,234 @@
// <auto-generated />
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<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("BuildingSiteNumber")
.HasColumnType("text");
b.Property<string>("ContactPerson")
.HasColumnType("text");
b.Property<string>("Country")
.HasColumnType("text");
b.Property<int?>("ProjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("ProjectId");
b.ToTable("Buildingsites");
});
modelBuilder.Entity("DaSaSo.Domain.Model.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("Country")
.HasColumnType("text");
b.Property<string>("Firstname")
.HasColumnType("text");
b.Property<string>("LastName")
.HasColumnType("text");
b.Property<string>("Postcode")
.HasColumnType("text");
b.Property<string>("Street")
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("DaSaSo.Domain.Model.Project", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("ClientId")
.HasColumnType("integer");
b.Property<string>("Name")
.HasColumnType("text");
b.HasKey("Id");
b.HasIndex("ClientId");
b.ToTable("Projects");
});
modelBuilder.Entity("DaSaSo.Domain.Model.SewerDamage", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int>("DamageType")
.HasColumnType("integer");
b.Property<decimal>("Distance")
.HasColumnType("numeric");
b.Property<int>("PreparationType")
.HasColumnType("integer");
b.Property<int?>("SewerObjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SewerObjectId");
b.ToTable("SewerDamages");
});
modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int?>("BuildingSiteId")
.HasColumnType("integer");
b.Property<bool>("BuildingsiteBarier")
.HasColumnType("boolean");
b.Property<int>("DN")
.HasColumnType("integer");
b.Property<string>("Material")
.HasColumnType("text");
b.Property<string>("ObjektName")
.HasColumnType("text");
b.Property<bool>("PermitNeeded")
.HasColumnType("boolean");
b.Property<string>("PointFrom")
.HasColumnType("text");
b.Property<string>("PointTo")
.HasColumnType("text");
b.Property<bool>("SewerActivated")
.HasColumnType("boolean");
b.Property<bool>("SewerCleaned")
.HasColumnType("boolean");
b.Property<decimal>("SewerLength")
.HasColumnType("numeric");
b.Property<string>("StreetName")
.HasColumnType("text");
b.Property<bool>("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
}
}
}

View File

@@ -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)
{
}
}
}

View File

@@ -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<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<int>("DamageType")
.HasColumnType("integer");
b.Property<decimal>("Distance")
.HasColumnType("numeric");
b.Property<int>("PreparationType")
.HasColumnType("integer");
b.Property<int?>("SewerObjectId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("SewerObjectId");
b.ToTable("SewerDamages");
});
modelBuilder.Entity("DaSaSo.Domain.Model.SewerObject", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
@@ -102,24 +128,42 @@ namespace DaSaSo.EntityFramework.Migrations
b.Property<int?>("BuildingSiteId")
.HasColumnType("integer");
b.Property<bool>("BuildingsiteBarier")
.HasColumnType("boolean");
b.Property<int>("DN")
.HasColumnType("integer");
b.Property<string>("Material")
.HasColumnType("text");
b.Property<string>("ObjektName")
.HasColumnType("text");
b.Property<bool>("PermitNeeded")
.HasColumnType("boolean");
b.Property<string>("PointFrom")
.HasColumnType("text");
b.Property<string>("PointTo")
.HasColumnType("text");
b.Property<bool>("SewerActivated")
.HasColumnType("boolean");
b.Property<bool>("SewerCleaned")
.HasColumnType("boolean");
b.Property<decimal>("SewerLength")
.HasColumnType("numeric");
b.Property<string>("StreetName")
.HasColumnType("text");
b.Property<bool>("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
}
}

View File

@@ -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<SewerObject>
{
private readonly DaSaSoDbContextFactory _contextFactory;
private readonly NonQueryDataService<SewerObject> _nonQueryDataService;
public SewerObjectDataService(DaSaSoDbContextFactory contextFactory)
{
this._contextFactory = contextFactory;
_nonQueryDataService = new NonQueryDataService<SewerObject>(contextFactory);
}
public async Task<SewerObject> Create(SewerObject entity)
{
return await _nonQueryDataService.Create(entity);
}
public async Task<bool> Delete(int id)
{
return await _nonQueryDataService.Delete(id);
}
public Task<SewerObject> Get(int id)
{
throw new NotImplementedException();
}
public Task<IEnumerable<SewerObject>> GetAll()
{
throw new NotImplementedException();
}
public async Task<IEnumerable<SewerObject>> GetAllByBuildingsite(Buildingsite buildingsite)
{
int id = buildingsite.Id;
using (DaSaSoDbContext context = _contextFactory.CreateDbContext())
{
IEnumerable<SewerObject> entities = await context.SewerObjects.Where(x => x.BuildingSite.Id == id).ToListAsync();
return entities;
}
}
public async Task<SewerObject> Update(int id, SewerObject entity)
{
return await _nonQueryDataService.Update(id, entity);
}
}
}

View File

@@ -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<SewerObject> _sewerObjects { get; }
public ObservableCollection<SewerObject> SewerObjects { get => _sewerObjects; }
public InMemoryObjecteListView()
{
_sewerObjects = new ObservableCollection<SewerObject>();
_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"
});
}
}
}

View File

@@ -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<Buildingsite> 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<Buildingsite> buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator)
{
@@ -25,6 +44,7 @@ namespace DaSaSo.ViewModel
_renavigator = renavigator;
_buildingSiteDataService = buildingSiteDataService as BuildingsiteDataService;
Buildingsites = new ObservableCollection<Buildingsite>();
SelectCommand = new SelectBuildingsiteCommand(actualProject, this);
LoadBuildingsites();
}

View File

@@ -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);
}
}
}

View File

@@ -12,6 +12,7 @@
<ItemGroup>
<ProjectReference Include="..\DaSaSo.Domain\DaSaSo.Domain.csproj" />
<ProjectReference Include="..\DaSaSo.EntityFramework\DaSaSo.EntityFramework.csproj" />
<ProjectReference Include="..\DaSaSo.InMemoryProvider\DaSaSo.InMemoryProvider.csproj" />
</ItemGroup>
</Project>

View File

@@ -18,19 +18,21 @@ namespace DaSaSo.ViewModel.Factories
private CreateViewModel<ClientEditViewModel> _createClientEditViewModel;
private CreateViewModel<ProjectListViewModel> _createProjektListViewModel;
private CreateViewModel<BuildingsiteListViewModel> _createBuildingsiteListViewModel;
private CreateViewModel<SewerObjectListViewModel> _createSewerObjectListViewModel;
public ViewModelAbstractFactory(
CreateViewModel<HomeViewModel> createHomeViewModel,
CreateViewModel<ClientListViewModel> createClientListViewModel,
CreateViewModel<ClientEditViewModel> createClientEditViewModel,
CreateViewModel<ProjectListViewModel> createProjektListViewModel,
CreateViewModel<BuildingsiteListViewModel> createBuildingsiteListViewModel)
CreateViewModel<BuildingsiteListViewModel> createBuildingsiteListViewModel, CreateViewModel<SewerObjectListViewModel> 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");
}

View File

@@ -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<SewerObjectsToStreet> SewerObjects { get; }
public object Testme { get; set; }
public ICommand Bearbeiten { get; set; }
public SewerObjectListViewModel(IDataService<SewerObject> sewerObjectDataService, IActualProject actualProject)
{
SewerObjects = new ObservableCollection<SewerObjectsToStreet>();
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<SewerObject>? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle);
List<SewerObject> _sewers = sewerobjects.ToList();
// Get all Streetnames
IEnumerable<string>? streetnames = sewerobjects.Select(x => x.StreetName).Distinct();
List<SewerObjectsToStreet> result = new List<SewerObjectsToStreet>();
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<SewerObjectsToStreet> target, List<SewerObjectsToStreet> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -43,6 +43,7 @@ namespace DaSaSo.Wpf
services.AddSingleton<IDataService<Client>, ClientDataService>();
services.AddSingleton<IDataService<Project>, ProjectDataService>();
services.AddSingleton<IDataService<Buildingsite>, BuildingsiteDataService>();
services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>();
services.AddSingleton<ClientListViewModel>();
@@ -89,6 +90,14 @@ namespace DaSaSo.Wpf
services.GetRequiredService<INavigator>()));
});
services.AddSingleton<CreateViewModel<SewerObjectListViewModel>>(services =>
{
return () => new SewerObjectListViewModel(
services.GetRequiredService<IDataService<SewerObject>>(),
services.GetRequiredService<IActualProject>()
);
});
//services.AddSingleton<INavigator, Navigator>();
services.AddScoped<IActualProject, ActualProject>();
services.AddScoped<INavigator, Navigator>();

View File

@@ -25,6 +25,9 @@
<Compile Update="View\Project\ProjectListView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="View\SewerObjecte\SewerObjecteListView.xaml.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Page Update="Controls\NavigationBar.xaml">
@@ -51,6 +54,9 @@
<Page Update="View\Project\ProjectListView.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="View\SewerObjecte\SewerObjecteListView.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="Window\MainWindow.xaml">
<SubType>Designer</SubType>
</Page>

View File

@@ -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<SewerObjectsToStreet> SewerObjects { get; private set; }
public SewerObjectListSampleData()
{
SewerObjects = new ObservableCollection<SewerObjectsToStreet>();
List<SewerObject> _objecte = new List<SewerObject>();
_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
});
}
}
}

View File

@@ -7,6 +7,9 @@
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<DataGrid ItemsSource="{Binding Buildingsites}" />
<StackPanel>
<DataGrid ItemsSource="{Binding Buildingsites}" SelectedItem="{Binding SelectedBuildingsite}" />
<Button Content="Selektiere" Command="{Binding SelectCommand}" />
</StackPanel>
</Grid>
</UserControl>

View File

@@ -0,0 +1,39 @@
<UserControl x:Class="DaSaSo.Wpf.View.SewerObjecte.SewerObjecteListView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:model="clr-namespace:DaSaSo.Domain.Model;assembly=DaSaSo.Domain"
xmlns:dsmodel="clr-namespace:DaSaSo.Domain.DesignModel;assembly=DaSaSo.Domain"
xmlns:local="clr-namespace:DaSaSo.Wpf.View.SewerObjecte"
xmlns:ds="clr-namespace:DaSaSo.Wpf.Sampledata"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<d:UserControl.DataContext>
<ds:SewerObjectListSampleData />
</d:UserControl.DataContext>
<Grid>
<StackPanel>
<TreeView ItemsSource="{Binding SewerObjects}" SelectedValuePath="{Binding Testme}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type dsmodel:SewerObjectsToStreet}" ItemsSource="{Binding SewerObjects}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Streetname}" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type model:SewerObject}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Material}" />
</StackPanel>
</DataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</TreeView.Resources>
</TreeView>
<Button Content="Bearbeiten" Command="{Binding Bearbeiten}" />
</StackPanel>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace DaSaSo.Wpf.View.SewerObjecte
{
/// <summary>
/// Interaction logic for SewerObjecteListView.xaml
/// </summary>
public partial class SewerObjecteListView : UserControl
{
public SewerObjecteListView()
{
InitializeComponent();
}
}
}

View File

@@ -6,6 +6,7 @@
xmlns:ClientViews="clr-namespace:DaSaSo.Wpf.View.Client"
xmlns:ProjektViews="clr-namespace:DaSaSo.Wpf.View.Project"
xmlns:BuildingsiteViews="clr-namespace:DaSaSo.Wpf.View.Buildingsites"
xmlns:SewerObjectViews="clr-namespace:DaSaSo.Wpf.View.SewerObjecte"
xmlns:controls="clr-namespace:DaSaSo.Wpf.Controls"
xmlns:View="clr-namespace:DaSaSo.Wpf.View"
xmlns:local="clr-namespace:DaSaSo.Wpf" xmlns:viewmodel="clr-namespace:DaSaSo.ViewModel;assembly=DaSaSo.ViewModel" d:DataContext="{d:DesignInstance Type=viewmodel:MainWindowViewModel}"
@@ -27,6 +28,9 @@
<DataTemplate DataType="{x:Type viewmodel:BuildingsiteListViewModel}">
<BuildingsiteViews:BuildingSiteListView />
</DataTemplate>
<DataTemplate DataType="{x:Type viewmodel:SewerObjectListViewModel}">
<SewerObjectViews:SewerObjecteListView />
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
@@ -41,6 +45,8 @@
<ContentControl Grid.Column="1" Grid.Row="0" Content="{Binding Navigator.CurrentViewModel}" />
<StatusBar Grid.Row="1" Grid.ColumnSpan="2">
<StatusBarItem Content="{Binding ClientName}" />
<StatusBarItem Content="{Binding Projektname}" />
<StatusBarItem Content="{Binding Buildingsitename}" />
</StatusBar>
</Grid>
</Window>