Модели этап2. Связи один-ко-многим

This commit is contained in:
Леонид Малафеев 2024-04-28 15:59:13 +04:00
parent a6d0252745
commit 55990af493
5 changed files with 83 additions and 17 deletions

View File

@ -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.Неизвестно;

View File

@ -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("Модель")]

View File

@ -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<int, IBundlingModel> 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,

View File

@ -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<Car> Cars { get; set; } = new();
public static Feature? Create(FeatureBindingModel model)
{

View File

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