using Microsoft.EntityFrameworkCore; using StudentEnrollmentContracts.BindingModels; using StudentEnrollmentContracts.SearchModels; using StudentEnrollmentContracts.StorageContracts; using StudentEnrollmentContracts.ViewModels; using StudentEnrollmentDatabaseImplement.Models; namespace StudentEnrollmentDatabaseImplement.Implements { public class FacultyStorage : IFacultyStorage { public List GetFullList() { using var context = new StudentEnrollmentDatabase(); return context.faculty .Select(x => x.GetViewModel) .ToList(); } public List GetFilteredList(FacultySearchModel model) { if (string.IsNullOrEmpty(model.name)) { return new(); } using var context = new StudentEnrollmentDatabase(); return context.faculty .Where(x => (model.faculty_id.HasValue && x.faculty_id == model.faculty_id) || (string.IsNullOrEmpty(model.name) && x.name == model.name)) .Select(x => x.GetViewModel) .ToList(); } public FacultyViewModel? GetElement(FacultySearchModel model) { if (string.IsNullOrEmpty(model.name) && !model.faculty_id.HasValue) { return null; } using var context = new StudentEnrollmentDatabase(); return context.faculty .FirstOrDefault(x => (model.faculty_id.HasValue && x.faculty_id == model.faculty_id) || (string.IsNullOrEmpty(model.name) && x.name == model.name))? .GetViewModel; } public FacultyViewModel? Insert(FacultyBindingModel model) { using var context = new StudentEnrollmentDatabase(); var newFaculty = Faculty.Create(model); if (newFaculty == null) { return null; } context.faculty.Add(newFaculty); context.SaveChanges(); return newFaculty.GetViewModel; } public FacultyViewModel? Update(FacultyBindingModel model) { using var context = new StudentEnrollmentDatabase(); var faculty = context.faculty.FirstOrDefault(x => x.faculty_id == model.Id); if (faculty == null) { return null; } faculty.Update(model); context.SaveChanges(); return faculty.GetViewModel; } public FacultyViewModel? Delete(FacultyBindingModel model) { using var context = new StudentEnrollmentDatabase(); var element = context.faculty.FirstOrDefault(rec => rec.faculty_id == model.Id); if (element != null) { context.faculty.Remove(element); context.SaveChanges(); return element.GetViewModel; } return null; } } }