From 0c1801324549f047b5f8712cfde2b8bfeacbac1c Mon Sep 17 00:00:00 2001 From: Sergey Kozyrev Date: Wed, 24 Apr 2024 12:35:17 +0400 Subject: [PATCH] DBUpdate --- Course/DatabaseImplement/Models/Detail.cs | 1 + .../DatabaseImplement/Models/Implementer.cs | 71 +++++++++++++++++-- Course/DatabaseImplement/Models/Product.cs | 3 +- Course/DatabaseImplement/Models/Production.cs | 5 +- 4 files changed, 70 insertions(+), 10 deletions(-) diff --git a/Course/DatabaseImplement/Models/Detail.cs b/Course/DatabaseImplement/Models/Detail.cs index d80048d..45988de 100644 --- a/Course/DatabaseImplement/Models/Detail.cs +++ b/Course/DatabaseImplement/Models/Detail.cs @@ -19,6 +19,7 @@ namespace DatabaseImplement.Models public virtual List DetailProducts { get; set; } = new(); [ForeignKey("DetailId")] public virtual List DetailProductions { get; set; } = new(); + public virtual Implementer User { get; set; } public static Detail? Create(DetailBindingModel model) { if (model == null) diff --git a/Course/DatabaseImplement/Models/Implementer.cs b/Course/DatabaseImplement/Models/Implementer.cs index 905b347..0dc064a 100644 --- a/Course/DatabaseImplement/Models/Implementer.cs +++ b/Course/DatabaseImplement/Models/Implementer.cs @@ -1,12 +1,71 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Contracts.BindingModels; +using Contracts.ViewModels; +using DataModels.Models; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; namespace DatabaseImplement.Models { - internal class Implementer + public class Implementer : IImplementerModel { + public int Id { get; set; } + [Required] + public string Email { get; set; } = string.Empty; + [Required] + public string Name { get; set; } = string.Empty; + [Required] + public string Login { get; set; } = string.Empty; + [Required] + public string Password { get; set;} = string.Empty; + [ForeignKey("UserId")] + public virtual List Details { get; set; } = new(); + [ForeignKey("UserId")] + public virtual List Products { get; set; } = new(); + [ForeignKey("UserId")] + public virtual List Productions { get; set; } = new(); + + public static Implementer? Create(ImplementerBindingModel model) + { + if (model == null) + { + return null; + } + return new Implementer + { + Id = model.Id, + Email = model.Email, + Name = model.Name, + Login = model.Login, + Password = model.Password + }; + } + public static Implementer Create(ImplementerViewModel model) + { + return new Implementer + { + Id = model.Id, + Email = model.Email, + Name = model.Name, + Login = model.Login, + Password = model.Password + }; + } + public void Update(ImplementerBindingModel model) + { + if (model == null) + return; + Email = model.Email; + Name = model.Name; + Password = model.Password; + } + public ImplementerViewModel GetViewModel => new() + { + Id = Id, + Email = Email, + Name = Name, + Login = Login, + Password = Password + }; + } } diff --git a/Course/DatabaseImplement/Models/Product.cs b/Course/DatabaseImplement/Models/Product.cs index b79c0a5..6099269 100644 --- a/Course/DatabaseImplement/Models/Product.cs +++ b/Course/DatabaseImplement/Models/Product.cs @@ -15,6 +15,7 @@ namespace DatabaseImplement.Models public double Cost { get; set; } [Required] public int UserId { get; set; } + public virtual Implementer User { get; set; } private Dictionary? _detailProducts = null; [NotMapped] public Dictionary DetailProducts @@ -43,7 +44,7 @@ namespace DatabaseImplement.Models Name = model.Name, Cost = model.Cost, UserId = model.UserId, - Details = model.DetailProducts.Select(x => new DetailProduct + Details = model.ProductDetails.Select(x => new DetailProduct { Detail = context.Details.First(y => y.Id == x.Key), Count = x.Value.Item2 diff --git a/Course/DatabaseImplement/Models/Production.cs b/Course/DatabaseImplement/Models/Production.cs index 289fac8..1cd7cfd 100644 --- a/Course/DatabaseImplement/Models/Production.cs +++ b/Course/DatabaseImplement/Models/Production.cs @@ -31,10 +31,9 @@ namespace DatabaseImplement.Models } } [ForeignKey("ProductionId")] - public List Details { get; set; } - - [ForeignKey("UserId")] + public List Details { get; set; } = new(); public virtual Implementer User { get; set; } + public static Production Create(FactoryGoWorkDatabase context, ProductionBindingModel model) { return new Production()