diff --git a/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj b/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj index aed3a89..56543e4 100644 --- a/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj +++ b/CarCenterDatabaseImplement/CarCenterDatabaseImplement.csproj @@ -6,10 +6,6 @@ enable - - - - diff --git a/CarCenterDatabaseImplement/Models/Client.cs b/CarCenterDatabaseImplement/Models/Client.cs new file mode 100644 index 0000000..f224d55 --- /dev/null +++ b/CarCenterDatabaseImplement/Models/Client.cs @@ -0,0 +1,50 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.Extensions; +using CarCenterContracts.ViewModels; +using CarCenterDataModels; +using System.ComponentModel.DataAnnotations; + +namespace CarCenterDatabaseImplement.Models +{ + public class Client : IClientModel + { + [Required] + public int DirectorId { get; private set; } + [Required] + public string Name { get; private set; } = string.Empty; + [Required] + public double Price { get; private set; } + [Required] + public int Course { get; private set; } + + public int Id { get; private set; } + [Required] + public Director? Director { get; private set; } + + [Required] + public List Cars { get; private set; } = new(); + + + public static Client Create(ClientBindingModel model) => model.CastWithCommonProperties(); + + public static implicit operator ClientViewModel?(Client? model) + { + if (model == null) + { + return null; + } + var res = model.CastWithCommonProperties(); + res.DirectorLogin = model.Director?.Login ?? string.Empty; + res.Cars = model.Cars.Select(x => (CarViewModel)x.Car).ToList(); + return res; + } + + public void Update(ClientBindingModel model) + { + Price = model.Price; + Course = model.Course; + } + + public ClientViewModel GetViewModel() => this.CastWithCommonProperties(); + } +} diff --git a/CarCenterDatabaseImplement/Models/Director.cs b/CarCenterDatabaseImplement/Models/Director.cs new file mode 100644 index 0000000..b4ab62c --- /dev/null +++ b/CarCenterDatabaseImplement/Models/Director.cs @@ -0,0 +1,32 @@ +using CarCenterContracts.BindingModels; +using CarCenterContracts.ViewModels; +using CarCenterDataModels; +using System.ComponentModel.DataAnnotations; +using CarCenterContracts.Extensions; + +namespace CarCenterDatabaseImplement.Models +{ + public class Director : IDirectorModel + { + public int Id { get; private set; } + [Required] + public string FirstName { get; private set; } = string.Empty; + [Required] + public string LastName { get; private set; } = string.Empty; + [Required] + public string Login { get; private set; } = string.Empty; + [Required] + public string Password { get; private set; } = string.Empty; + + public string PhoneNumber { get; set; } = string.Empty; + + [Required] + public List? Clients { get; private set; } + [Required] + public List? Requirements { get; private set; } + + public static Director Create(DirectorBindingModel model) => model.CastWithCommonProperties(); + + public static implicit operator DirectorViewModel?(Director? model) => model?.CastWithCommonProperties(); + } +}