using ForumContracts.BindingModels; using ForumContracts.ViewModels; using ForumDataModels.Models; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ForumDatabaseImplement.Models { public class User : IUserModel { [Required] public string Nickname { get; set; } = string.Empty; [Required] public string Password { get; set; } = string.Empty; [Required] public string Email { get; set; } = string.Empty; [Required] public DateTime RegistrationDate { get; set; } = DateTime.Now; [Required] public DateTime ActivityDate { get; set; } = DateTime.Now; public int Id { get; set; } [ForeignKey("UserId")] public virtual List Answers { get; set; } = new(); [ForeignKey("UserId")] public virtual List Questions { get; set; } = new(); public static User? Create(UserBindingModel model) { if (model == null) { return null; } return new User() { Id = model.Id, Nickname = model.Nickname, Password = model.Password, Email = model.Email, RegistrationDate = model.RegistrationDate, ActivityDate = model.ActivityDate }; } public static User Create(UserViewModel model) { return new User { Id = model.Id, Nickname = model.Nickname, Password = model.Password, Email = model.Email, RegistrationDate = model.RegistrationDate, ActivityDate = model.ActivityDate }; } public void Update(UserBindingModel model) { if (model == null) { return; } Nickname = model.Nickname; Password = model.Password; Email = model.Email; RegistrationDate = model.RegistrationDate; ActivityDate = model.ActivityDate; } public UserViewModel GetViewModel => new() { Id = Id, Nickname = Nickname, Password = Password, Email = Email, RegistrationDate = RegistrationDate, ActivityDate = ActivityDate }; } }