using BankContracts.BindingModels; using BankContracts.SearchModels; using BankContracts.StoragesContracts; using BankContracts.ViewModels; using BankDatabaseImplement.Models; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BankDatabaseImplement.Implements { public class CurrencyPurchaseStorage : ICurrencyPurchaseStorage { public CurrencyPurchaseViewModel? Delete(CurrencyPurchaseBindingModel model) { using var context = new BankDatabase(); var currencyPurchase = context.CurrencyPurchases.FirstOrDefault(x => x.Id == model.Id); if (currencyPurchase == null) { return null; } currencyPurchase.Update(model); context.SaveChanges(); return currencyPurchase.GetViewModel; } public CurrencyPurchaseViewModel? GetElement(CurrencyPurchaseSearchModel model) { if (!model.Id.HasValue) { return null; } using var context = new BankDatabase(); return context.CurrencyPurchases.Include(x => x.BankOperator).Include(x=>x.Currency) .FirstOrDefault(x => x.Id == model.Id) ?.GetViewModel; } public List GetFilteredList(CurrencyPurchaseSearchModel model) { if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && !model.BankOperatorId.HasValue) { return new(); } if (model.DateFrom.HasValue && model.DateTo.HasValue) { using var context = new BankDatabase(); return context.CurrencyPurchases.Include(x => x.BankOperator).Include(x => x.Currency) .Where(x => x.PurchaseDate >= model.DateFrom && x.PurchaseDate <= model.DateTo) .Select(x => x.GetViewModel) .ToList(); } else if (model.BankOperatorId.HasValue) { using var context = new BankDatabase(); return context.CurrencyPurchases.Include(x => x.BankOperator).Include(x => x.Currency) .Where(x => x.BankOperatorId == model.BankOperatorId) .Select(x => x.GetViewModel) .ToList(); } else { using var context = new BankDatabase(); return context.CurrencyPurchases.Include(x => x.BankOperator).Include(x => x.Currency) .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); } } public List GetFullList() { using var context = new BankDatabase(); return context.CurrencyPurchases.Include(x => x.BankOperator).Include(x=> x.Currency) .Select(x => x.GetViewModel) .ToList(); } public CurrencyPurchaseViewModel? Insert(CurrencyPurchaseBindingModel model) { using var context = new BankDatabase(); var newCurrencyPurchase = CurrencyPurchase.Create(context, model); if (newCurrencyPurchase == null) { return null; } context.CurrencyPurchases.Add(newCurrencyPurchase); context.SaveChanges(); return newCurrencyPurchase.GetViewModel; } public CurrencyPurchaseViewModel? Update(CurrencyPurchaseBindingModel model) { using var context = new BankDatabase(); var currencyPurchase = context.CurrencyPurchases.FirstOrDefault(x => x.Id == model.Id); if (currencyPurchase == null) { return null; } currencyPurchase.Update(model); context.SaveChanges(); return currencyPurchase.GetViewModel; } } }