diff --git a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs index 384066e..0e3f67b 100644 --- a/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs +++ b/CarCenter/CarCenterContracts/BindingModels/CarBindingModel.cs @@ -11,6 +11,7 @@ namespace CarCenterContracts.BindingModels public class CarBindingModel : ICarModel { public int Id { get; set; } + public int StorekeeperId { get; set; } public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; public string Model { get; set; } = string.Empty; public CarClass CarClass { get; set; } = CarClass.Неизвестно; diff --git a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs index 429ace7..206d695 100644 --- a/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs +++ b/CarCenter/CarCenterContracts/ViewModels/CarViewModel.cs @@ -12,6 +12,12 @@ namespace CarCenterContracts.ViewModels public class CarViewModel : ICarModel { public int Id { get; set; } + public int? FeatureId { get; set; } + [DisplayName("Цена особенности")] + public double FeaturePrice { get; set; } + public int? StorekeeperId { get; set; } + [DisplayName("Имя работника")] + public string StorekeeperName { get; set; } = string.Empty; [DisplayName("Марка")] public CarBrand CarBrand { get; set; } [DisplayName("Модель")] diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs index d54dc94..c764294 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Car.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Car.cs @@ -15,6 +15,8 @@ namespace CarCenterDatabaseImplement.Models public class Car : ICarModel { public int Id { get; private set; } + public int? StorekeeperId { get; set; } + public int? FeatureId { get; set; } [Required] public CarBrand CarBrand { get; set; } = CarBrand.Неизвестно; [Required] @@ -30,6 +32,8 @@ namespace CarCenterDatabaseImplement.Models [Required] public int FeatureID { get; set; } public Dictionary CarBundlings { get; set; } = new(); + public virtual Storekeeper Storekeeper { get; set; } + public virtual Feature Feature { get; set; } public static Car? Create(CarBindingModel model) { @@ -40,21 +44,8 @@ namespace CarCenterDatabaseImplement.Models return new Car() { Id = model.Id, - CarBrand = model.CarBrand, - Model = model.Model, - CarClass = model.CarClass, - Year = model.Year, - Price = model.Price, - VINnumber = model.VINnumber, - FeatureID = model.FeatureID, - - }; - } - public static Car Create(CarViewModel model) - { - return new Car - { - Id = model.Id, + StorekeeperId = model.StorekeeperId, + FeatureId = model.FeatureID, CarBrand = model.CarBrand, Model = model.Model, CarClass = model.CarClass, @@ -70,6 +61,8 @@ namespace CarCenterDatabaseImplement.Models { return; } + StorekeeperId = model.StorekeeperId; + FeatureId = model.FeatureID; CarBrand = model.CarBrand; Model = model.Model; CarClass = model.CarClass; @@ -81,6 +74,10 @@ namespace CarCenterDatabaseImplement.Models public CarViewModel GetViewModel => new() { Id = Id, + StorekeeperId = StorekeeperId, + StorekeeperName = Storekeeper?.Name ?? string.Empty, + FeatureId = FeatureId, + FeaturePrice = Feature?.Price ?? 0, CarBrand = CarBrand, Model = Model, CarClass = CarClass, diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs index 590a11d..2643656 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Feature.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,6 +24,8 @@ namespace CarCenterDatabaseImplement.Models public DriveTypes DriveType { get; set; } = DriveTypes.Неизвестно; [Required] public double Price { get; set; } + [ForeignKey("FeatureId")] + public virtual List Cars { get; set; } = new(); public static Feature? Create(FeatureBindingModel model) { diff --git a/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs index 6e5fe08..7b516c7 100644 --- a/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs +++ b/CarCenter/CarCenterDatabaseImplement/Models/Storekeeper.cs @@ -1,12 +1,71 @@ -using System; +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using CarCenterDataModels.Models; namespace CarCenterDatabaseImplement.Models { - public class Storekeeper + public class Storekeeper : IStorekeeperModel { + public int Id { get; set; } + [Required] + public string Name { get; set; } = string.Empty; + [Required] + public string Surname { get; set; } = string.Empty; + public string? Patronymic { get; set; } + [Required] + public string Password { get; set; } = string.Empty; + [Required] + public string Email { get; set; } = string.Empty; + [Required] + public long PhoneNumber { get; set; } + [ForeignKey("StorekeeperId")] + public virtual List Cars { get; set; } = new(); + + public static Storekeeper? Create(StorekeeperBindingModel? model) + { + if (model == null) + { + return null; + } + return new Storekeeper() + { + Id = model.Id, + Name = model.Name, + Surname = model.Surname, + Patronymic = model.Patronymic, + Password = model.Password, + Email = model.Email, + PhoneNumber = model.PhoneNumber, + }; + } + + public void Update(StorekeeperBindingModel? model) + { + if (model == null) + { + return; + } + Password = model.Password; + Email = model.Email; + PhoneNumber = model.PhoneNumber; + } + + public StorekeeperViewModel GetViewModel => new() + { + Id = Id, + Name = Name, + Surname = Surname, + Patronymic = Patronymic, + Password = Password, + Email = Email, + PhoneNumber = PhoneNumber, + }; } }