diff --git a/.gitignore b/.gitignore index c4aec5c..a3c55d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,5 @@ /.vs/* -/KanSan/bin/Debug/* -/KanSan/obj/Debug/* -/KanSan/obj/* -/KanSan.Base/bin/* -/KanSan.Base/kansan.db -/KanSan.Base/obj/* -/KanSan/version.txt -/KanSan.ViewModel/bin/* -/KanSan.ViewModel/obj/* +*/bin/* */version.txt +*/bin/* +*/obj/* diff --git a/ConsoleClient/ConsoleClient.csproj b/ConsoleClient/ConsoleClient.csproj new file mode 100644 index 0000000..a4092ac --- /dev/null +++ b/ConsoleClient/ConsoleClient.csproj @@ -0,0 +1,23 @@ + + + + Exe + netcoreapp3.1 + + + + + + + + + + + + + + PreserveNewest + + + + diff --git a/ConsoleClient/Program.cs b/ConsoleClient/Program.cs new file mode 100644 index 0000000..cee53b4 --- /dev/null +++ b/ConsoleClient/Program.cs @@ -0,0 +1,29 @@ + +using KanSan.CrossCutting.DataClasses; +using KanSan.DependencyInjection.Mappings; +using KundenManagement.Contract; +using Ninject; +using System; +using System.Collections.Generic; + +namespace ConsoleClient +{ + class Program + { + static void Main(string[] args) + { + StandardKernel kernel = new StandardKernel(); + new KernelInitializer().Initialize(kernel); + + IKundeManager manager = kernel.Get(); + + List kunden = manager.GetAllKunden(); + + kunden.ForEach(a => Console.WriteLine(a.Vorname + " " + a.ID)); + + Console.WriteLine("Hello World!"); + + Console.ReadKey(); + } + } +} diff --git a/ConsoleClient/kunden.csv b/ConsoleClient/kunden.csv new file mode 100644 index 0000000..8ecde3c --- /dev/null +++ b/ConsoleClient/kunden.csv @@ -0,0 +1,2 @@ +1,Damian,Bodde +2,Cynthia,Schreuder \ No newline at end of file diff --git a/DataClasses/DataClasses.csproj b/DataClasses/DataClasses.csproj new file mode 100644 index 0000000..76fc1b4 --- /dev/null +++ b/DataClasses/DataClasses.csproj @@ -0,0 +1,8 @@ + + + + netcoreapp3.1 + KanSan.CrossCutting.DataClasses + + + diff --git a/DataClasses/Kunde.cs b/DataClasses/Kunde.cs new file mode 100644 index 0000000..18a1b5a --- /dev/null +++ b/DataClasses/Kunde.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.CrossCutting.DataClasses +{ + public class Kunde + { + public int ID { get; set; } + public Guid GuidNr { get; set; } + public string Vorname { get; set; } + public string Nachname { get; set; } + public string Strasse { get; set; } + public string PLZ { get; set; } + public string Ort { get; set; } + //public List Baustellen { get; } = new List(); + } +} diff --git a/DataStoring.CSV/DataStoring.CSV.csproj b/DataStoring.CSV/DataStoring.CSV.csproj new file mode 100644 index 0000000..a07c700 --- /dev/null +++ b/DataStoring.CSV/DataStoring.CSV.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp3.1 + + + + + + + diff --git a/DataStoring.CSV/KundenRepository.cs b/DataStoring.CSV/KundenRepository.cs new file mode 100644 index 0000000..d90011b --- /dev/null +++ b/DataStoring.CSV/KundenRepository.cs @@ -0,0 +1,23 @@ +using KanSan.CrossCutting.DataClasses; +using KanSan.DataStoring.Contract; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace KanSan.DataStoring.CSV +{ + public class KundenRepository : IKundenRepository + { + public List Query => File + .ReadAllLines("kunden.csv") + .Select(l => l.Split(',')) + .Select(p => new Kunde + { + ID = int.Parse(p[0]), + Vorname = p[1], + Nachname = p[2] + }) + .ToList(); + } +} diff --git a/DataStoring.Contract/DataStoring.Contract.csproj b/DataStoring.Contract/DataStoring.Contract.csproj new file mode 100644 index 0000000..336022d --- /dev/null +++ b/DataStoring.Contract/DataStoring.Contract.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp3.1 + + + + + + + diff --git a/DataStoring.Contract/IKundenRepository.cs b/DataStoring.Contract/IKundenRepository.cs new file mode 100644 index 0000000..2e783e8 --- /dev/null +++ b/DataStoring.Contract/IKundenRepository.cs @@ -0,0 +1,12 @@ +using KanSan.CrossCutting.DataClasses; +using System; +using System.Collections.Generic; +using System.Text; + +namespace KanSan.DataStoring.Contract +{ + public interface IKundenRepository + { + List Query { get; } + } +} diff --git a/DataStoring.Contract/IRepository.cs b/DataStoring.Contract/IRepository.cs new file mode 100644 index 0000000..fcba3bb --- /dev/null +++ b/DataStoring.Contract/IRepository.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace KanSan.DataStoring.Contract +{ + public interface IRepository where TEntity : class + { + void Delete(TEntity entityToDelete); + void Delete(int id); + IEnumerable GetAll(string include); + IEnumerable Get( + Expression> filter = null, + Func, IOrderedQueryable> orderBy = null, + string includeProperties = ""); + TEntity GetByID(object id); + void Insert(TEntity entity); + void Update(TEntity entity); + IQueryable Include(params Expression>[] includes); + IQueryable Query { get; } + } +} diff --git a/DataStoring.EF/DataStoring.EF.csproj b/DataStoring.EF/DataStoring.EF.csproj new file mode 100644 index 0000000..120b068 --- /dev/null +++ b/DataStoring.EF/DataStoring.EF.csproj @@ -0,0 +1,17 @@ + + + + netcoreapp3.1 + + + + + + + + + + + + + diff --git a/DataStoring.EF/KanSanContext.cs b/DataStoring.EF/KanSanContext.cs new file mode 100644 index 0000000..9e9ee07 --- /dev/null +++ b/DataStoring.EF/KanSanContext.cs @@ -0,0 +1,31 @@ +using KanSan.CrossCutting.DataClasses; +using Microsoft.EntityFrameworkCore; + +namespace DataStoring.EF +{ + public class KanSanContext : DbContext + { + public DbSet Projekte { get; set; } + public DbSet Kunden { get; set; } + public DbSet Kanaele { get; set; } + public DbSet SewerPoints { get; set; } + public DbSet Schaeden { get; set; } + public DbSet Sanierungskonzept { get; set; } + public DbSet Taetigkeiten { get; set; } + public DbSet LeistungsverzeichnisPositionen { get; set; } + public DbSet LeistungsverzeichnisBaustellen { get; set; } + public DbSet Fahrzeuge { get; set; } + public DbSet KurzlinerSanierung { get; set; } + public DbSet HutprofilSanierung { get; set; } + + public KanSanContext() + { + + } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseNpgsql("Host = 192.168.122.1; Database = kanSan; Username = husky; Password = bodde05"); + } + } +} \ No newline at end of file diff --git a/DataStoring.EF/Repository.cs b/DataStoring.EF/Repository.cs new file mode 100644 index 0000000..faaf8e6 --- /dev/null +++ b/DataStoring.EF/Repository.cs @@ -0,0 +1,111 @@ +using KanSan.DataStoring.Contract; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Linq.Expressions; +using System.Text; + +namespace DataStoring.EF +{ + public class Repository : IRepository where TEntity : class + { + private readonly KanSanContext _db; + private readonly DbSet dbSet; + + public IQueryable Query => dbSet; + + public Repository(KanSanContext db) + { + _db = db; + this.dbSet = db.Set(); + } + public virtual void Delete(TEntity entityToDelete) + { + if (_db.Entry(entityToDelete).State == EntityState.Detached) + dbSet.Attach(entityToDelete); + dbSet.Remove(entityToDelete); + } + + public void Delete(int id) + { + try + { + var entity = _db.Set().Find(id); + if(entity == null) + { + throw new Exception("Id not found"); + } + } + catch(Exception e) + { + throw new Exception("Cant delete id"); + } + + } + + public IEnumerable GetAll(string include) + { + return dbSet.Include(include); + } + + public IEnumerable Get(Expression> filter = null, Func, IOrderedQueryable> orderBy = null, string includeProperties = "") + { + IQueryable query = dbSet; + + + if (filter != null) + { + query = query.Where(filter); + } + + if (includeProperties != null) + { + foreach (var includeProperty in includeProperties.Split + (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) + { + query = query.Include(includeProperty); + } + } + + + if (orderBy != null) + { + return orderBy(query).ToList(); + } + else + { + return query.ToList(); + } + } + + public TEntity GetByID(object id) + { + return dbSet.Find(id); + } + + public virtual void Insert(TEntity entity) + { + _db.Set().Add(entity); + _db.SaveChanges(); + + } + + public IQueryable Include(params Expression>[] includeExpressions) + { + IQueryable query = null; + foreach (var include in includeExpressions) + { + query = dbSet.Include(include); + } + return query ?? dbSet; + } + + public void Update(TEntity entity) + { + _db.Entry(entity).State = EntityState.Modified; + _db.SaveChanges(); + } + } +} diff --git a/KanSan.Base/KanSan.Base.csproj b/KanSan.Base/KanSan.Base.csproj index e2cc664..8334a52 100644 --- a/KanSan.Base/KanSan.Base.csproj +++ b/KanSan.Base/KanSan.Base.csproj @@ -25,4 +25,8 @@ + + + + diff --git a/KanSan.Base/KanSanContext.cs b/KanSan.Base/KanSanContext.cs index f9bbfa6..cd90ecb 100644 --- a/KanSan.Base/KanSanContext.cs +++ b/KanSan.Base/KanSanContext.cs @@ -21,7 +21,7 @@ namespace KanSan.Base protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - optionsBuilder.UseNpgsql("Host = localhost; Database = kanSan; Username = kansan; Password = kansan"); + optionsBuilder.UseNpgsql("Host = 192.168.122.1; Database = kanSan; Username = husky; Password = bodde05"); //optionsBuilder.UseSqlite("Data Source=kansan.db"); } } diff --git a/KanSan.Base/Models/Baustelle.cs b/KanSan.DataClasses/Baustelle.cs similarity index 70% rename from KanSan.Base/Models/Baustelle.cs rename to KanSan.DataClasses/Baustelle.cs index 843d4e0..099de59 100644 --- a/KanSan.Base/Models/Baustelle.cs +++ b/KanSan.DataClasses/Baustelle.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; -using System.Text; -namespace KanSan.Base.Models + +namespace KanSan.CrossCutting.DataClasses { - public class Baustelle : IDatabaseEntry + public class Baustelle { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/BaustelleLeistungsverzeichnisReferenz.cs b/KanSan.DataClasses/BaustelleLeistungsverzeichnisReferenz.cs similarity index 64% rename from KanSan.Base/Models/BaustelleLeistungsverzeichnisReferenz.cs rename to KanSan.DataClasses/BaustelleLeistungsverzeichnisReferenz.cs index 803c341..01e6353 100644 --- a/KanSan.Base/Models/BaustelleLeistungsverzeichnisReferenz.cs +++ b/KanSan.DataClasses/BaustelleLeistungsverzeichnisReferenz.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class BaustelleLeistungsverzeichnisReferenz : IDatabaseEntry + public class BaustelleLeistungsverzeichnisReferenz { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Enums/EMaterial.cs b/KanSan.DataClasses/Enums/EMaterial.cs similarity index 65% rename from KanSan.Base/Enums/EMaterial.cs rename to KanSan.DataClasses/Enums/EMaterial.cs index b7e4ad8..15d1a42 100644 --- a/KanSan.Base/Enums/EMaterial.cs +++ b/KanSan.DataClasses/Enums/EMaterial.cs @@ -1,4 +1,4 @@ -namespace KanSan.Base.Enums +namespace KanSan.CrossCutting.DataClasses.Enums { public enum EMaterial { diff --git a/KanSan.Base/Enums/EPunktType.cs b/KanSan.DataClasses/Enums/EPunktType.cs similarity index 69% rename from KanSan.Base/Enums/EPunktType.cs rename to KanSan.DataClasses/Enums/EPunktType.cs index 34aae0d..4026fd2 100644 --- a/KanSan.Base/Enums/EPunktType.cs +++ b/KanSan.DataClasses/Enums/EPunktType.cs @@ -1,4 +1,4 @@ -namespace KanSan.Base.Enums +namespace KanSan.CrossCutting.DataClasses.Enums { public enum EPunktType { diff --git a/KanSan.Base/Enums/ESanierung.cs b/KanSan.DataClasses/Enums/ESanierung.cs similarity index 69% rename from KanSan.Base/Enums/ESanierung.cs rename to KanSan.DataClasses/Enums/ESanierung.cs index e298635..1a19ab7 100644 --- a/KanSan.Base/Enums/ESanierung.cs +++ b/KanSan.DataClasses/Enums/ESanierung.cs @@ -1,4 +1,4 @@ -namespace KanSan.Base.Enums +namespace KanSan.CrossCutting.DataClasses.Enums { public enum ESanierung { diff --git a/KanSan.Base/Models/Fahrzeug.cs b/KanSan.DataClasses/Fahrzeug.cs similarity index 54% rename from KanSan.Base/Models/Fahrzeug.cs rename to KanSan.DataClasses/Fahrzeug.cs index 50eb09c..dbda727 100644 --- a/KanSan.Base/Models/Fahrzeug.cs +++ b/KanSan.DataClasses/Fahrzeug.cs @@ -1,9 +1,8 @@ -using KanSan.Base.Interfaces; -using System; +using System; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Fahrzeug : IDatabaseEntry + public class Fahrzeug { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/GueteschutzProtokoll.cs b/KanSan.DataClasses/GueteschutzProtokoll.cs similarity index 81% rename from KanSan.Base/Models/GueteschutzProtokoll.cs rename to KanSan.DataClasses/GueteschutzProtokoll.cs index ff2947a..0ea58e0 100644 --- a/KanSan.Base/Models/GueteschutzProtokoll.cs +++ b/KanSan.DataClasses/GueteschutzProtokoll.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public abstract class GueteschutzProtokoll : IDatabaseEntry + public abstract class GueteschutzProtokoll { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/HutprofilSan.cs b/KanSan.DataClasses/HutprofilSan.cs similarity index 90% rename from KanSan.Base/Models/HutprofilSan.cs rename to KanSan.DataClasses/HutprofilSan.cs index 0efde60..a8bd0b2 100644 --- a/KanSan.Base/Models/HutprofilSan.cs +++ b/KanSan.DataClasses/HutprofilSan.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { public class HutprofilSan : PHarzSanierung { diff --git a/KanSan.DataClasses/KanSan.DataClasses.csproj b/KanSan.DataClasses/KanSan.DataClasses.csproj new file mode 100644 index 0000000..cb63190 --- /dev/null +++ b/KanSan.DataClasses/KanSan.DataClasses.csproj @@ -0,0 +1,7 @@ + + + + netcoreapp3.1 + + + diff --git a/KanSan.Base/Models/Kunde.cs b/KanSan.DataClasses/Kunde.cs similarity index 78% rename from KanSan.Base/Models/Kunde.cs rename to KanSan.DataClasses/Kunde.cs index 92e7492..f4c52d0 100644 --- a/KanSan.Base/Models/Kunde.cs +++ b/KanSan.DataClasses/Kunde.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Kunde : IDatabaseEntry + public class Kunde { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/KurzlinerSan.cs b/KanSan.DataClasses/KurzlinerSan.cs similarity index 83% rename from KanSan.Base/Models/KurzlinerSan.cs rename to KanSan.DataClasses/KurzlinerSan.cs index 80d9c6d..35381d0 100644 --- a/KanSan.Base/Models/KurzlinerSan.cs +++ b/KanSan.DataClasses/KurzlinerSan.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { public class KurzlinerSan : PHarzSanierung { diff --git a/KanSan.Base/Models/LeistungsverzeichnisPosition.cs b/KanSan.DataClasses/LeistungsverzeichnisPosition.cs similarity index 70% rename from KanSan.Base/Models/LeistungsverzeichnisPosition.cs rename to KanSan.DataClasses/LeistungsverzeichnisPosition.cs index 25dad46..209a0ab 100644 --- a/KanSan.Base/Models/LeistungsverzeichnisPosition.cs +++ b/KanSan.DataClasses/LeistungsverzeichnisPosition.cs @@ -1,9 +1,8 @@ -using KanSan.Base.Interfaces; -using System; +using System; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class LeistungsverzeichnisPosition : IDatabaseEntry + public class LeistungsverzeichnisPosition { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/PHarzSanierung.cs b/KanSan.DataClasses/PHarzSanierung.cs similarity index 95% rename from KanSan.Base/Models/PHarzSanierung.cs rename to KanSan.DataClasses/PHarzSanierung.cs index c711950..83dfa81 100644 --- a/KanSan.Base/Models/PHarzSanierung.cs +++ b/KanSan.DataClasses/PHarzSanierung.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { public class PHarzSanierung : GueteschutzProtokoll { diff --git a/KanSan.Base/Models/Projekt.cs b/KanSan.DataClasses/Projekt.cs similarity index 70% rename from KanSan.Base/Models/Projekt.cs rename to KanSan.DataClasses/Projekt.cs index dc824aa..5a0b113 100644 --- a/KanSan.Base/Models/Projekt.cs +++ b/KanSan.DataClasses/Projekt.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; using System.Text; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Projekt : IDatabaseEntry + public class Projekt { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/Sanierungskonzept.cs b/KanSan.DataClasses/Sanierungskonzept.cs similarity index 67% rename from KanSan.Base/Models/Sanierungskonzept.cs rename to KanSan.DataClasses/Sanierungskonzept.cs index 11e0320..493107d 100644 --- a/KanSan.Base/Models/Sanierungskonzept.cs +++ b/KanSan.DataClasses/Sanierungskonzept.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Enums; -using KanSan.Base.Interfaces; -using System; +using System; using System.Collections.Generic; +using KanSan.CrossCutting.DataClasses.Enums; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Sanierungskonzept : IDatabaseEntry + public class Sanierungskonzept { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/Schaeden.cs b/KanSan.DataClasses/Schaeden.cs similarity index 85% rename from KanSan.Base/Models/Schaeden.cs rename to KanSan.DataClasses/Schaeden.cs index bcdca58..3431bed 100644 --- a/KanSan.Base/Models/Schaeden.cs +++ b/KanSan.DataClasses/Schaeden.cs @@ -1,10 +1,9 @@ -using KanSan.Base.Enums; -using KanSan.Base.Interfaces; +using KanSan.CrossCutting.DataClasses.Enums; using System; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Schaeden : IDatabaseEntry + public class Schaeden { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/Sewer.cs b/KanSan.DataClasses/Sewer.cs similarity index 89% rename from KanSan.Base/Models/Sewer.cs rename to KanSan.DataClasses/Sewer.cs index 9f55376..8660df4 100644 --- a/KanSan.Base/Models/Sewer.cs +++ b/KanSan.DataClasses/Sewer.cs @@ -1,11 +1,10 @@ -using KanSan.Base.Enums; -using KanSan.Base.Interfaces; +using KanSan.CrossCutting.DataClasses.Enums; using System; using System.Collections.Generic; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Sewer : IDatabaseEntry + public class Sewer { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/SewerPoint.cs b/KanSan.DataClasses/SewerPoint.cs similarity index 54% rename from KanSan.Base/Models/SewerPoint.cs rename to KanSan.DataClasses/SewerPoint.cs index 9d6d785..352e63f 100644 --- a/KanSan.Base/Models/SewerPoint.cs +++ b/KanSan.DataClasses/SewerPoint.cs @@ -1,9 +1,8 @@ -using KanSan.Base.Interfaces; -using System; +using System; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class SewerPoint : IDatabaseEntry + public class SewerPoint { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.Base/Models/Taetigkeiten.cs b/KanSan.DataClasses/Taetigkeiten.cs similarity index 82% rename from KanSan.Base/Models/Taetigkeiten.cs rename to KanSan.DataClasses/Taetigkeiten.cs index 7fb1af3..1b308c8 100644 --- a/KanSan.Base/Models/Taetigkeiten.cs +++ b/KanSan.DataClasses/Taetigkeiten.cs @@ -1,9 +1,8 @@ -using KanSan.Base.Interfaces; -using System; +using System; -namespace KanSan.Base.Models +namespace KanSan.CrossCutting.DataClasses { - public class Taetigkeiten : IDatabaseEntry + public class Taetigkeiten { public int ID { get; set; } public Guid GuidNr { get; set; } diff --git a/KanSan.ViewModel/MainWindowViewModel.cs b/KanSan.ViewModel/MainWindowViewModel.cs index e155da1..a6ebdc5 100644 --- a/KanSan.ViewModel/MainWindowViewModel.cs +++ b/KanSan.ViewModel/MainWindowViewModel.cs @@ -186,6 +186,7 @@ namespace KanSan.ViewModel } public MainWindowViewModel() { + //InitDB(); LadeRegistry(); LoadBaustellenLeistungsverzeichnis(); } @@ -194,5 +195,27 @@ namespace KanSan.ViewModel { } + + void InitDB() + { + Projekt projekt = new Projekt(); + + Kunde kunde = new Kunde(); + kunde.Vorname = "Damian"; + kunde.Nachname = "Bodde"; + + kunde.GuidNr = Guid.NewGuid(); + projekt.Kunde = kunde; + projekt.GuidNr = Guid.NewGuid(); + + Baustelle baustelle = new Baustelle(); + baustelle.Projekt = projekt; + baustelle.GuidNr = Guid.NewGuid(); + + + + unitOfWork.ProjekteRepository.Insert(projekt); + unitOfWork.Commit(); + } } } diff --git a/KanSan.sln b/KanSan.sln index c20820a..7236163 100644 --- a/KanSan.sln +++ b/KanSan.sln @@ -7,7 +7,27 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KanSan", "KanSan\KanSan.csp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KanSan.Base", "KanSan.Base\KanSan.Base.csproj", "{2184A91C-8DFD-45DD-B83F-5D036BADEA52}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KanSan.ViewModel", "KanSan.ViewModel\KanSan.ViewModel.csproj", "{77F25493-7A1C-4F03-92CF-D0EA00328181}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KanSan.ViewModel", "KanSan.ViewModel\KanSan.ViewModel.csproj", "{77F25493-7A1C-4F03-92CF-D0EA00328181}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KanSan.DataClasses", "KanSan.DataClasses\KanSan.DataClasses.csproj", "{6C30FBF5-D894-4055-A899-4702EDBEE224}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStoring.Contract", "DataStoring.Contract\DataStoring.Contract.csproj", "{212025C0-50A2-4D6B-9B4E-E226CAA4E551}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStoring.CSV", "DataStoring.CSV\DataStoring.CSV.csproj", "{5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleClient", "ConsoleClient\ConsoleClient.csproj", "{2C721355-C42E-4DBB-A3B0-31C9CE68448C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mappings", "Mappings\Mappings.csproj", "{2FB8401E-78BE-46A5-BE51-6A67029BC43F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KundenManagement.Contract", "KundenManagement.Contract\KundenManagement.Contract.csproj", "{CE02508A-F590-4577-A88E-AA4ED6558C4F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KundenManagement", "KundenManagment\KundenManagement.csproj", "{CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{2ED2E266-89C3-46C9-9B4E-BB52BBD4F305}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{890D5DD6-3258-4A65-ABF3-AFDFBE115BDC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataStoring.EF", "DataStoring.EF\DataStoring.EF.csproj", "{177643C2-502C-4613-A00C-50429922D67D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -27,10 +47,49 @@ Global {77F25493-7A1C-4F03-92CF-D0EA00328181}.Debug|Any CPU.Build.0 = Debug|Any CPU {77F25493-7A1C-4F03-92CF-D0EA00328181}.Release|Any CPU.ActiveCfg = Release|Any CPU {77F25493-7A1C-4F03-92CF-D0EA00328181}.Release|Any CPU.Build.0 = Release|Any CPU + {6C30FBF5-D894-4055-A899-4702EDBEE224}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6C30FBF5-D894-4055-A899-4702EDBEE224}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6C30FBF5-D894-4055-A899-4702EDBEE224}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6C30FBF5-D894-4055-A899-4702EDBEE224}.Release|Any CPU.Build.0 = Release|Any CPU + {212025C0-50A2-4D6B-9B4E-E226CAA4E551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {212025C0-50A2-4D6B-9B4E-E226CAA4E551}.Debug|Any CPU.Build.0 = Debug|Any CPU + {212025C0-50A2-4D6B-9B4E-E226CAA4E551}.Release|Any CPU.ActiveCfg = Release|Any CPU + {212025C0-50A2-4D6B-9B4E-E226CAA4E551}.Release|Any CPU.Build.0 = Release|Any CPU + {5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E}.Release|Any CPU.Build.0 = Release|Any CPU + {2C721355-C42E-4DBB-A3B0-31C9CE68448C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C721355-C42E-4DBB-A3B0-31C9CE68448C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C721355-C42E-4DBB-A3B0-31C9CE68448C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C721355-C42E-4DBB-A3B0-31C9CE68448C}.Release|Any CPU.Build.0 = Release|Any CPU + {2FB8401E-78BE-46A5-BE51-6A67029BC43F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2FB8401E-78BE-46A5-BE51-6A67029BC43F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2FB8401E-78BE-46A5-BE51-6A67029BC43F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2FB8401E-78BE-46A5-BE51-6A67029BC43F}.Release|Any CPU.Build.0 = Release|Any CPU + {CE02508A-F590-4577-A88E-AA4ED6558C4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CE02508A-F590-4577-A88E-AA4ED6558C4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE02508A-F590-4577-A88E-AA4ED6558C4F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CE02508A-F590-4577-A88E-AA4ED6558C4F}.Release|Any CPU.Build.0 = Release|Any CPU + {CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B}.Release|Any CPU.Build.0 = Release|Any CPU + {177643C2-502C-4613-A00C-50429922D67D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {177643C2-502C-4613-A00C-50429922D67D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {177643C2-502C-4613-A00C-50429922D67D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {177643C2-502C-4613-A00C-50429922D67D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {212025C0-50A2-4D6B-9B4E-E226CAA4E551} = {890D5DD6-3258-4A65-ABF3-AFDFBE115BDC} + {5CF0EC47-9C81-40A5-8EBA-F1DA3C8BC41E} = {890D5DD6-3258-4A65-ABF3-AFDFBE115BDC} + {CE02508A-F590-4577-A88E-AA4ED6558C4F} = {2ED2E266-89C3-46C9-9B4E-BB52BBD4F305} + {CFB14A1D-14D9-42D0-B9AD-27E8CAEA761B} = {2ED2E266-89C3-46C9-9B4E-BB52BBD4F305} + {177643C2-502C-4613-A00C-50429922D67D} = {890D5DD6-3258-4A65-ABF3-AFDFBE115BDC} + EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BA021C9A-6B88-4B87-8189-93AC075F3D8F} EndGlobalSection diff --git a/KanSan/MainWindow.xaml.cs b/KanSan/MainWindow.xaml.cs index 90af54a..5e4c960 100644 --- a/KanSan/MainWindow.xaml.cs +++ b/KanSan/MainWindow.xaml.cs @@ -140,6 +140,7 @@ namespace KanSan rbLeistungsverzeichnis.IsChecked = false; rbLeistungsverzeichnisBaustellen.IsChecked = false; Kunde client = (DataContext as MainWindowViewModel).SelectedKunde; + //Debugger.Break(); if (client == null) return; UCProjektList = new UI.UCProjektList(client); UCProjektList.ProjektSelected += UCProjektList_ProjektSelected; diff --git a/KundenManagement.Contract/IKundeManager.cs b/KundenManagement.Contract/IKundeManager.cs new file mode 100644 index 0000000..04d6edf --- /dev/null +++ b/KundenManagement.Contract/IKundeManager.cs @@ -0,0 +1,11 @@ +using KanSan.CrossCutting.DataClasses; +using System; +using System.Collections.Generic; + +namespace KundenManagement.Contract +{ + public interface IKundeManager + { + List GetAllKunden(); + } +} diff --git a/KundenManagement.Contract/KundenManagement.Contract.csproj b/KundenManagement.Contract/KundenManagement.Contract.csproj new file mode 100644 index 0000000..336022d --- /dev/null +++ b/KundenManagement.Contract/KundenManagement.Contract.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp3.1 + + + + + + + diff --git a/KundenManagment/KundeManager.cs b/KundenManagment/KundeManager.cs new file mode 100644 index 0000000..5e2bcb4 --- /dev/null +++ b/KundenManagment/KundeManager.cs @@ -0,0 +1,27 @@ +using KanSan.CrossCutting.DataClasses; +using KanSan.DataStoring.Contract; +using KundenManagement.Contract; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace KundenManagment +{ + public class KundeManager : IKundeManager + { + + private readonly IRepository _repository; + public KundeManager(IRepository repository) + { + + _repository = repository; + } + public List GetAllKunden() + { + return _repository + .Query + .Where(p => p.ID >= 0) + .ToList(); + } + } +} diff --git a/KundenManagment/KundenManagement.csproj b/KundenManagment/KundenManagement.csproj new file mode 100644 index 0000000..86fc61b --- /dev/null +++ b/KundenManagment/KundenManagement.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp3.1 + + + + + + + + diff --git a/Mappings/KernelInitializer.cs b/Mappings/KernelInitializer.cs new file mode 100644 index 0000000..294197a --- /dev/null +++ b/Mappings/KernelInitializer.cs @@ -0,0 +1,21 @@ +using DataStoring.EF; +using KanSan.DataStoring.Contract; +using KanSan.DataStoring.CSV; +using KundenManagement.Contract; +using KundenManagment; +using Ninject; +using System; + +namespace KanSan.DependencyInjection.Mappings +{ + public class KernelInitializer + { + public void Initialize(IKernel kernel) + { + kernel.Bind().ToSelf(); + kernel.Bind(typeof(IRepository<>)).To(typeof(Repository<>)); + //kernel.Bind().To(); + kernel.Bind().To(); + } + } +} diff --git a/Mappings/Mappings.csproj b/Mappings/Mappings.csproj new file mode 100644 index 0000000..755e3e4 --- /dev/null +++ b/Mappings/Mappings.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp3.1 + + + + + + + + + + + + + + +