diff --git a/Bank/BankDatabaseImplement/Implements/DealStorage.cs b/Bank/BankDatabaseImplement/Implements/DealStorage.cs index b775147..cafb0dc 100644 --- a/Bank/BankDatabaseImplement/Implements/DealStorage.cs +++ b/Bank/BankDatabaseImplement/Implements/DealStorage.cs @@ -1,4 +1,10 @@ -using System; +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; @@ -6,7 +12,73 @@ using System.Threading.Tasks; namespace BankDatabaseImplement.Implements { - internal class DealStorage + public class DealStorage : IDealStorage { + public List GetFullList() + { + using var context = new BankDatabase(); + return context.Deals.Include(x => x.Operator) + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(DealSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + using var context = new BankDatabase(); + return context.Deals.Include(x => x.Operator) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + public DealViewModel? GetElement(DealSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new BankDatabase(); + return context.Deals.Include(x => x.Operator) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public DealViewModel? Insert(DealBindingModel model) + { + using var context = new BankDatabase(); + var newDeal = Deal.Create(context, model); + if (newDeal == null) + { + return null; + } + context.Deals.Add(newDeal); + context.SaveChanges(); + return newDeal.GetViewModel; + } + public DealViewModel? Update(DealBindingModel model) + { + using var context = new BankDatabase(); + var deal = context.Deals.FirstOrDefault(x => x.Id == model.Id); + if (deal == null) + { + return null; + } + deal.Update(model); + context.SaveChanges(); + return deal.GetViewModel; + } + public DealViewModel? Delete(DealBindingModel model) + { + using var context = new BankDatabase(); + var element = context.Deals.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Deals.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } } } diff --git a/Bank/BankDatabaseImplement/Implements/OperatorStorage.cs b/Bank/BankDatabaseImplement/Implements/OperatorStorage.cs new file mode 100644 index 0000000..d2e8fd7 --- /dev/null +++ b/Bank/BankDatabaseImplement/Implements/OperatorStorage.cs @@ -0,0 +1,84 @@ +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 OperatorStorage : IOperatorStorage + { + public List GetFullList() + { + using var context = new BankDatabase(); + return context.Operators + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(OperatorSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + using var context = new BankDatabase(); + return context.Operators + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + public OperatorViewModel? GetElement(OperatorSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new BankDatabase(); + return context.Operators + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public OperatorViewModel? Insert(OperatorBindingModel model) + { + using var context = new BankDatabase(); + var newOperator = Operator.Create(model); + if (newOperator == null) + { + return null; + } + context.Operators.Add(newOperator); + context.SaveChanges(); + return newOperator.GetViewModel; + } + public OperatorViewModel? Update(OperatorBindingModel model) + { + using var context = new BankDatabase(); + var deal = context.Operators.FirstOrDefault(x => x.Id == model.Id); + if (deal == null) + { + return null; + } + deal.Update(model); + context.SaveChanges(); + return deal.GetViewModel; + } + public OperatorViewModel? Delete(OperatorBindingModel model) + { + using var context = new BankDatabase(); + var element = context.Operators.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Operators.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } + } +} diff --git a/Bank/BankDatabaseImplement/Implements/PaymentStorage.cs b/Bank/BankDatabaseImplement/Implements/PaymentStorage.cs new file mode 100644 index 0000000..7a76a6d --- /dev/null +++ b/Bank/BankDatabaseImplement/Implements/PaymentStorage.cs @@ -0,0 +1,84 @@ +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 PaymentStorage : IPaymentStorage + { + public List GetFullList() + { + using var context = new BankDatabase(); + return context.Payments + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(PaymentSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + using var context = new BankDatabase(); + return context.Payments + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + public PaymentViewModel? GetElement(PaymentSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new BankDatabase(); + return context.Payments + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public PaymentViewModel? Insert(PaymentBindingModel model) + { + using var context = new BankDatabase(); + var newPayment = Payment.Create(context, model); + if (newPayment == null) + { + return null; + } + context.Payments.Add(newPayment); + context.SaveChanges(); + return newPayment.GetViewModel; + } + public PaymentViewModel? Update(PaymentBindingModel model) + { + using var context = new BankDatabase(); + var deal = context.Payments.FirstOrDefault(x => x.Id == model.Id); + if (deal == null) + { + return null; + } + deal.Update(model); + context.SaveChanges(); + return deal.GetViewModel; + } + public PaymentViewModel? Delete(PaymentBindingModel model) + { + using var context = new BankDatabase(); + var element = context.Payments.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Payments.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } + } +} diff --git a/Bank/BankDatabaseImplement/Implements/TransferStorage.cs b/Bank/BankDatabaseImplement/Implements/TransferStorage.cs new file mode 100644 index 0000000..f112d86 --- /dev/null +++ b/Bank/BankDatabaseImplement/Implements/TransferStorage.cs @@ -0,0 +1,83 @@ +using BankContracts.BindingModels; +using BankContracts.SearchModels; +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 TransferStorage + { + public List GetFullList() + { + using var context = new BankDatabase(); + return context.Transfers.Include(x => x.Payment) + .Select(x => x.GetViewModel) + .ToList(); + } + public List GetFilteredList(TransferSearchModel model) + { + if (!model.Id.HasValue) + { + return new(); + } + using var context = new BankDatabase(); + return context.Transfers.Include(x => x.Payment) + .Where(x => x.Id == model.Id) + .Select(x => x.GetViewModel) + .ToList(); + } + public TransferViewModel? GetElement(TransferSearchModel model) + { + if (!model.Id.HasValue) + { + return null; + } + using var context = new BankDatabase(); + return context.Transfers.Include(x => x.Payment) + .FirstOrDefault(x => x.Id == model.Id) + ?.GetViewModel; + } + public TransferViewModel? Insert(TransferBindingModel model) + { + using var context = new BankDatabase(); + var newTransfer = Transfer.Create(context, model); + if (newTransfer == null) + { + return null; + } + context.Transfers.Add(newTransfer); + context.SaveChanges(); + return newTransfer.GetViewModel; + } + public TransferViewModel? Update(TransferBindingModel model) + { + using var context = new BankDatabase(); + var deal = context.Transfers.FirstOrDefault(x => x.Id == model.Id); + if (deal == null) + { + return null; + } + deal.Update(model); + context.SaveChanges(); + return deal.GetViewModel; + } + public TransferViewModel? Delete(TransferBindingModel model) + { + using var context = new BankDatabase(); + var element = context.Transfers.FirstOrDefault(rec => rec.Id == model.Id); + if (element != null) + { + context.Transfers.Remove(element); + context.SaveChanges(); + return element.GetViewModel; + } + return null; + } + } +} diff --git a/Bank/BankDatabaseImplement/Models/Operator.cs b/Bank/BankDatabaseImplement/Models/Operator.cs index 8a22f3d..49d6882 100644 --- a/Bank/BankDatabaseImplement/Models/Operator.cs +++ b/Bank/BankDatabaseImplement/Models/Operator.cs @@ -21,8 +21,23 @@ namespace BankDatabaseImplement.Models public string FirstName { get; set; } = string.Empty; public string? MiddleName { get; set; } - - public static Operator? Create(BankDatabase context, OperatorViewModel model) + public static Operator? Create(OperatorBindingModel model) + { + if (model == null) + { + return null; + } + return new Operator() + { + Id = model.Id, + Login = model.Login, + Password = model.Password, + LastName = model.LastName, + FirstName = model.FirstName, + MiddleName = model.MiddleName, + }; + } + public static Operator? Create(OperatorViewModel model) { return new Operator() {