ISEbd-21_Tukaeva_A_A_School/School/SchoolDatabaseImplements/Implements/ExpenseStorage.cs

91 lines
2.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using SchoolContracts.BindingModels;
using SchoolContracts.SearchModel;
using SchoolContracts.StoragesContracts;
using SchoolContracts.ViewModels;
using SchoolDatabaseImplement;
using SchoolDatabaseImplement.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchoolDatabaseImplements.Implements
{
internal class ExpenseStorage : IExpenseStorage
{
public ExpenseViewModel? Delete(ExpenseBindingModel model)
{
using var context = new SchoolDatabase();
var element = context.Expenses.FirstOrDefault(x => x.Id == model.Id);
if (element != null)
{
context.Expenses.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
public ExpenseViewModel GetElement(ExpenseSearchModel model)
{
using var context = new SchoolDatabase();
if (model.Id.HasValue)//сначала ищем по Id
{
return context.Expenses
.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
}
if (!string.IsNullOrEmpty(model.ExpenseName))//затем по названию
{
return context.Expenses
.FirstOrDefault(x => x.ExpenseName == model.ExpenseName)?.GetViewModel;
}
return null;
}
public List<ExpenseViewModel> GetFilteredList(ExpenseSearchModel model)
{
using var context = new SchoolDatabase();
return context.Expenses
.Where (x => x.Id == model.Id)
.Select(x => x.GetViewModel)
.ToList();
}
public List<ExpenseViewModel> GetFullList()
{
using var context = new SchoolDatabase();
return context.Expenses
.Select(x => x.GetViewModel)
.ToList();
}
public ExpenseViewModel? Insert(ExpenseBindingModel model)
{
using var context = new SchoolDatabase();
var newExpense = Expense.Create(model);
if (newExpense == null)
{
return null;
}
context.Expenses.Add(newExpense);
context.SaveChanges();
return newExpense.GetViewModel;
}
public ExpenseViewModel? Update(ExpenseBindingModel model)
{
using var context = new SchoolDatabase();
var expense = context.Expenses.FirstOrDefault(x => x.Id == model.Id);
if (expense == null)
{
return null;
}
expense.Update(model);
context.SaveChanges();
return expense.GetViewModel;
}
}
}