80 lines
3.0 KiB
C#

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<FacultyViewModel> GetFullList()
{
using var context = new StudentEnrollmentDatabase();
return context.faculty
.Select(x => x.GetViewModel)
.ToList();
}
public List<FacultyViewModel> 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;
}
}
}