using SchoolScheduleContracts.BindingModels; using SchoolScheduleContracts.ViewModels; using SchoolScheduleDataModels.Models; 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; namespace SchoolScheduleDataBaseImplement.Models { public class Lesson : ILessonModel { public int Id { get; private set; } [Required] public DateOnly Date { get; private set; } [Required] public string? Homework { get; private set; } = null; [Required] public int SchedulePlaceId { get; private set; } [Required] public int TeacherId { get; private set; } [Required] public int SubjectId { get; private set; } [Required] public int GradeId { get; private set; } [ForeignKey("LessonId")] public virtual List Students { get; set; } = new(); public virtual SchedulePlace SchedulePlace { get; set; } = new(); public virtual Teacher Teacher { get; set; } = new(); public virtual Subject Subject { get; set; } = new(); public virtual Grade Grade { get; set; } = new(); public static Lesson Create(SchoolScheduleDataBase context, LessonBindingModel model) { return new Lesson { Id = model.Id, Date = model.Date, Homework = model.Homework, SchedulePlaceId = model.SchedulePlaceId, SchedulePlace = context.SchedulePlaces.First(y => y.Id == model.SchedulePlaceId), TeacherId = model.TeacherId, SubjectId = model.SubjectId, GradeId = model.GradeId, Teacher = context.Teachers.First(x => x.Id == model.TeacherId), Subject = context.Subjects.First(x => x.Id == model.SubjectId), Grade = context.Grades.First(x => x.Id == model.GradeId) }; } public void Update(SchoolScheduleDataBase context, LessonBindingModel model) { if (model == null) { return; } Date = model.Date; Homework = model.Homework; SchedulePlaceId = model.SchedulePlaceId; SchedulePlace = context.SchedulePlaces.First(y => y.Id == model.SchedulePlaceId); TeacherId = model.TeacherId; SubjectId = model.SubjectId; GradeId = model.GradeId; Teacher = context.Teachers.First(x => x.Id == model.TeacherId); Subject = context.Subjects.First(x => x.Id == model.SubjectId); Grade = context.Grades.First(x => x.Id == model.GradeId); } public LessonViewModel GetViewModel => new() { Id = Id, Date = Date, Homework = Homework, SchedulePlaceId = SchedulePlaceId, GradeId = GradeId, TeacherId = TeacherId, SubjectId = SubjectId, SchedulePlaceTime = SchedulePlace.Time, TeacherFullName = Teacher.FullName, SubjectName = Subject.SubjectName, GradeName = Grade.Year.ToString() + Grade.Letter.ToString() }; } }