From ccd467ebb28b2671eff065e9dcf688c1cb9120f2 Mon Sep 17 00:00:00 2001 From: abazov73 <92822431+abazov73@users.noreply.github.com> Date: Fri, 7 Apr 2023 01:20:11 +0400 Subject: [PATCH] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=20=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B0=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=80=D0=BE=D0=BB=D0=B8=20=D0=97=D0=B0=D0=BA=D0=B0?= =?UTF-8?q?=D0=B7=D1=87=D0=B8=D0=BA=20+=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D1=8E=D1=89=D0=B8=D0=B9=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=82=D0=BE=D1=80=20=D0=B2=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D1=81=D1=81=20Operator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DealStorage.cs | 76 ++++++++++++++++- .../Implements/OperatorStorage.cs | 84 +++++++++++++++++++ .../Implements/PaymentStorage.cs | 84 +++++++++++++++++++ .../Implements/TransferStorage.cs | 83 ++++++++++++++++++ Bank/BankDatabaseImplement/Models/Operator.cs | 19 ++++- 5 files changed, 342 insertions(+), 4 deletions(-) create mode 100644 Bank/BankDatabaseImplement/Implements/OperatorStorage.cs create mode 100644 Bank/BankDatabaseImplement/Implements/PaymentStorage.cs create mode 100644 Bank/BankDatabaseImplement/Implements/TransferStorage.cs 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() {