using HotelContracts.BindingModels; using HotelContracts.ViewModels; using HotelDataModels.Models; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace HotelDataBaseImplement.Models { public class Organiser : IOrganiserModel { public int Id { get; private set; } [Required] public string OrganiserLogin { get; set; } = string.Empty; [Required] public string OrganiserPassword { get; set; } = string.Empty; [Required] public string OrganiserEmail { get; set; } = string.Empty; [Required] public string OrganiserNumber { get; set; } = string.Empty; [Required] public string OrganiserFIO { get; set; } = string.Empty; [ForeignKey("OrganiserId")] public virtual List Conferences { get; set; } = new(); [ForeignKey("OrganiserId")] public virtual List MealPlans { get; set; } = new(); [ForeignKey("OrganiserId")] public virtual List Participants { get; set; } = new(); public static Organiser? Create(OrganiserBindingModel model) { if (model == null) return null; return new Organiser() { Id = model.Id, OrganiserLogin = model.OrganiserLogin, OrganiserPassword = model.OrganiserPassword, OrganiserEmail = model.OrganiserEmail, OrganiserNumber = model.OrganiserNumber, OrganiserFIO = model.OrganiserFIO, }; } public static Organiser Create(OrganiserViewModel model) { return new Organiser { Id = model.Id, OrganiserLogin = model.OrganiserLogin, OrganiserPassword = model.OrganiserPassword, OrganiserEmail = model.OrganiserEmail, OrganiserNumber = model.OrganiserNumber, OrganiserFIO = model.OrganiserFIO, }; } public void Update(OrganiserBindingModel model) { if (model == null) return; OrganiserLogin = model.OrganiserLogin; OrganiserPassword = model.OrganiserPassword; OrganiserEmail = model.OrganiserEmail; OrganiserNumber = model.OrganiserNumber; OrganiserFIO = model.OrganiserFIO; } public OrganiserViewModel GetViewModel => new() { Id = Id, OrganiserLogin = OrganiserLogin, OrganiserPassword = OrganiserPassword, OrganiserEmail = OrganiserEmail, OrganiserNumber = OrganiserNumber, OrganiserFIO = OrganiserFIO, }; } }