From a67f3562c3db451044da04cb38684127a6a5f55b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D0=B0?= Date: Mon, 29 Apr 2024 20:07:03 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogic/ClassLogic.cs | 1 + .../BusinessLogic/ClientLogic.cs | 1 + .../BusinessLogic/CostLogic.cs | 2 ++ .../BusinessLogic/EmployeeLogic.cs | 13 ++++------- .../BusinessLogic/PaymentLogic.cs | 10 +++++--- .../BusinessLogic/PurchaseLogic.cs | 1 + .../UniversityBusinessLogics.csproj | 12 ++++++++++ University/UniversityClientApp/Program.cs | 5 +++- .../UniversityClientApp.csproj | 14 +++++++++++ .../BindingModels/CostBindingModel.cs | 1 + .../BindingModels/PaymentBindingModel.cs | 2 +- .../BindingModels/PurchaseBindingModel.cs | 1 + .../SearchModels/ClassSearchModel.cs | 4 ++-- .../SearchModels/PaymentSearchModel.cs | 2 +- .../SearchModels/PurchaseSearchModel.cs | 2 +- .../StoragesContracts/IPaymentStorage.cs | 3 ++- .../StoragesContracts/IPurchaseStorage.cs | 3 ++- .../UniversityContracts.csproj | 15 ++++++++++++ .../ViewModels/EmployeeViewModel.cs | 2 +- .../ViewModels/PaymentViewModel.cs | 1 + .../ViewModels/PurchaseViewModel.cs | 2 +- .../UniversityDataModels.csproj | 17 +++++++++++++- .../Implements/ClassStorage.cs | 14 +++++------ .../Implements/ClientStorage.cs | 2 +- .../Implements/CostStorage.cs | 4 ++-- .../Implements/EmployeeStorage.cs | 2 +- .../Implements/PaymentStorage.cs | 13 ++++++----- .../Implements/PurchaseStorage.cs | 15 ++++++------ .../Models/CarByPurchase.cs | 3 ++- .../Models/Class.cs | 13 +++++------ .../Models/Cost.cs | 4 ++-- .../Models/CostByPurchase.cs | 3 ++- .../Models/Employee.cs | 4 ---- .../Models/Payment.cs | 13 ++++++----- .../Models/Purchase.cs | 23 ++++++++++--------- .../UniversityDatabaseImplement.csproj | 20 ++++++++++++++++ University/UniversityEmpoyeeApp/Program.cs | 16 +++++++++++++ .../UniversityEmpoyeeApp.csproj | 18 +++++++++++++++ 38 files changed, 202 insertions(+), 79 deletions(-) diff --git a/University/UniversityBusinessLogics/BusinessLogic/ClassLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/ClassLogic.cs index 5d68bb9..18c1513 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/ClassLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/ClassLogic.cs @@ -10,6 +10,7 @@ using UniversityContracts.BindingModels; using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; using UniversityContracts.ViewModels; +using Microsoft.Extensions.Logging; namespace UniversityBusinessLogics.BusinessLogic { diff --git a/University/UniversityBusinessLogics/BusinessLogic/ClientLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/ClientLogic.cs index f5f4d09..0f52d66 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/ClientLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/ClientLogic.cs @@ -4,6 +4,7 @@ using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; using UniversityContracts.ViewModels; using System.Text.RegularExpressions; +using Microsoft.Extensions.Logging; namespace UniversityBusinessLogics.BusinessLogic { diff --git a/University/UniversityBusinessLogics/BusinessLogic/CostLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/CostLogic.cs index 3d0a927..266a8e7 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/CostLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/CostLogic.cs @@ -4,9 +4,11 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using UniversityContracts.BindingModels; +using UniversityContracts.BusinessLogicContracts; using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; using UniversityContracts.ViewModels; +using Microsoft.Extensions.Logging; namespace UniversityBusinessLogics.BusinessLogic { diff --git a/University/UniversityBusinessLogics/BusinessLogic/EmployeeLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/EmployeeLogic.cs index 1440053..2212cb3 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/EmployeeLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/EmployeeLogic.cs @@ -7,6 +7,9 @@ using UniversityContracts.BindingModels; using UniversityContracts.BusinessLogicContracts; using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; +using UniversityContracts.ViewModels; +using Microsoft.Extensions.Logging; +using System.Text.RegularExpressions; namespace UniversityBusinessLogics.BusinessLogic { @@ -50,15 +53,7 @@ namespace UniversityBusinessLogics.BusinessLogic "Пароль пользователя должен содержать хотя бы одну цифру"); } _logger.LogDebug("{level} Проверка логина пользователя на уникальность {@Employee}", model); - var element = _employeeStorage.GetElement(new EmployeeSearchModel - { - PhoneNumber = model.PhoneNumber, - }); - if (element != null && element.Id != model.Id) - { - _logger.LogWarning("С номером {PhoneNumber}, уже есть пользователь: {@ExistEmployee}", model.PhoneNumber, element); - throw new InvalidOperationException($"Сотрудник с таким номером телефона уже есть"); - } + } public bool Create(EmployeeBindingModel model) diff --git a/University/UniversityBusinessLogics/BusinessLogic/PaymentLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/PaymentLogic.cs index a70d0e5..e536dcf 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/PaymentLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/PaymentLogic.cs @@ -1,10 +1,14 @@ -using System; +using BankContracts.ViewModels; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using UniversityContracts.BindingModels; using UniversityContracts.BusinessLogicContracts; +using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; +using Microsoft.Extensions.Logging; namespace UniversityBusinessLogics.BusinessLogic { @@ -97,13 +101,13 @@ namespace UniversityBusinessLogics.BusinessLogic var payments = ReadList(model); // Вызываем метод из бизнес логики, чтобы залогировать доп информацию if (payments == null || payments.Count == 0) { - fullPrice = _carStorage.GetElement(new() { Id = model.OperationId })?.Price ?? throw new InvalidOperationException("Не получена операция для оплаты"); ; + fullPrice = _carStorage.GetElement(new() { Id = model.ClassId })?.Price ?? throw new InvalidOperationException("Не получена операция для оплаты"); ; paidPrice = 0; return true; } fullPrice = payments[0].FullPrice; paidPrice = payments.Sum(x => x.PaidPrice); - _logger.LogInformation("По покупке({Id}) и операцийе({Id}) получена полная стоимостиь {fullPrice} и оплаченная стоимость {paidPrice}", model.PurchaseId, model.OperationId, fullPrice, paidPrice); + _logger.LogInformation("По покупке({Id}) и операцийе({Id}) получена полная стоимостиь {fullPrice} и оплаченная стоимость {paidPrice}", model.PurchaseId, model.ClassId, fullPrice, paidPrice); return true; } catch (Exception e) diff --git a/University/UniversityBusinessLogics/BusinessLogic/PurchaseLogic.cs b/University/UniversityBusinessLogics/BusinessLogic/PurchaseLogic.cs index a136aa6..24a6f72 100644 --- a/University/UniversityBusinessLogics/BusinessLogic/PurchaseLogic.cs +++ b/University/UniversityBusinessLogics/BusinessLogic/PurchaseLogic.cs @@ -8,6 +8,7 @@ using UniversityContracts.BusinessLogicContracts; using UniversityContracts.SearchModels; using UniversityContracts.StoragesContracts; using UniversityContracts.ViewModels; +using Microsoft.Extensions.Logging; namespace UniversityBusinessLogics.BusinessLogic { diff --git a/University/UniversityBusinessLogics/UniversityBusinessLogics.csproj b/University/UniversityBusinessLogics/UniversityBusinessLogics.csproj index e340954..cb16755 100644 --- a/University/UniversityBusinessLogics/UniversityBusinessLogics.csproj +++ b/University/UniversityBusinessLogics/UniversityBusinessLogics.csproj @@ -12,7 +12,19 @@ + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + diff --git a/University/UniversityClientApp/Program.cs b/University/UniversityClientApp/Program.cs index 16e16e8..65123f6 100644 --- a/University/UniversityClientApp/Program.cs +++ b/University/UniversityClientApp/Program.cs @@ -1,9 +1,12 @@ using UniversityBusinessLogics.BusinessLogic; using UniversityContracts.BusinessLogicContracts; using UniversityContracts.StoragesContracts; -using UniversityDatabaseImplement.Implements; + using Serilog; +using UniversityDatabaseImplement.Implements; +using UiversityDatabaseImplement.Implements; + var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); diff --git a/University/UniversityClientApp/UniversityClientApp.csproj b/University/UniversityClientApp/UniversityClientApp.csproj index 5352e3a..8211eb6 100644 --- a/University/UniversityClientApp/UniversityClientApp.csproj +++ b/University/UniversityClientApp/UniversityClientApp.csproj @@ -7,12 +7,26 @@ + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + diff --git a/University/UniversityContracts/BindingModels/CostBindingModel.cs b/University/UniversityContracts/BindingModels/CostBindingModel.cs index 7624073..b700ca0 100644 --- a/University/UniversityContracts/BindingModels/CostBindingModel.cs +++ b/University/UniversityContracts/BindingModels/CostBindingModel.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using UniversityDataModels.Models; namespace UniversityContracts.BindingModels { diff --git a/University/UniversityContracts/BindingModels/PaymentBindingModel.cs b/University/UniversityContracts/BindingModels/PaymentBindingModel.cs index 66c901e..cb6390b 100644 --- a/University/UniversityContracts/BindingModels/PaymentBindingModel.cs +++ b/University/UniversityContracts/BindingModels/PaymentBindingModel.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace UniversityContracts.BindingModels { - internal class PaymentBindingModel + public class PaymentBindingModel { public DateOnly Date { get; set; } = DateOnly.FromDateTime(DateTime.Now); diff --git a/University/UniversityContracts/BindingModels/PurchaseBindingModel.cs b/University/UniversityContracts/BindingModels/PurchaseBindingModel.cs index 624b464..a40ccee 100644 --- a/University/UniversityContracts/BindingModels/PurchaseBindingModel.cs +++ b/University/UniversityContracts/BindingModels/PurchaseBindingModel.cs @@ -1,5 +1,6 @@ using UniversityDataModels; using UniversityDataModels.HelperInterfaces; +using UniversityDataModels.Models; namespace UniversityContracts.BindingModels { diff --git a/University/UniversityContracts/SearchModels/ClassSearchModel.cs b/University/UniversityContracts/SearchModels/ClassSearchModel.cs index 8d0eb95..8143fae 100644 --- a/University/UniversityContracts/SearchModels/ClassSearchModel.cs +++ b/University/UniversityContracts/SearchModels/ClassSearchModel.cs @@ -4,8 +4,8 @@ { public int? Id { get; set; } public int? EmployeeId { get; set; } - public string Model { get; set; } = string.Empty; - public string Mark { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string Time { get; set; } = string.Empty; public int Price { get; set; } public List? PurchasesIds { get; set; } } diff --git a/University/UniversityContracts/SearchModels/PaymentSearchModel.cs b/University/UniversityContracts/SearchModels/PaymentSearchModel.cs index 2bc7e7e..6d22e79 100644 --- a/University/UniversityContracts/SearchModels/PaymentSearchModel.cs +++ b/University/UniversityContracts/SearchModels/PaymentSearchModel.cs @@ -9,7 +9,7 @@ namespace UniversityContracts.SearchModels public class PaymentSearchModel { public int? Id { get; set; } - public int? OperationId { get; set; } + public int? ClassId { get; set; } public int? PurchaseId { get; set; } public DateOnly? DateFrom { get; set; } diff --git a/University/UniversityContracts/SearchModels/PurchaseSearchModel.cs b/University/UniversityContracts/SearchModels/PurchaseSearchModel.cs index e952405..b4cf671 100644 --- a/University/UniversityContracts/SearchModels/PurchaseSearchModel.cs +++ b/University/UniversityContracts/SearchModels/PurchaseSearchModel.cs @@ -7,6 +7,6 @@ public DateOnly? DateFrom { get; set; } public int? ClientId { get; set; } - public List? OperationsIds { get; set; } + public List? ClassesIds { get; set; } } } diff --git a/University/UniversityContracts/StoragesContracts/IPaymentStorage.cs b/University/UniversityContracts/StoragesContracts/IPaymentStorage.cs index 8f9204c..ad23e92 100644 --- a/University/UniversityContracts/StoragesContracts/IPaymentStorage.cs +++ b/University/UniversityContracts/StoragesContracts/IPaymentStorage.cs @@ -1,4 +1,5 @@ -using UniversityContracts.BindingModels; +using BankContracts.ViewModels; +using UniversityContracts.BindingModels; using UniversityContracts.SearchModels; using UniversityContracts.ViewModels; diff --git a/University/UniversityContracts/StoragesContracts/IPurchaseStorage.cs b/University/UniversityContracts/StoragesContracts/IPurchaseStorage.cs index 8f10354..28c084f 100644 --- a/University/UniversityContracts/StoragesContracts/IPurchaseStorage.cs +++ b/University/UniversityContracts/StoragesContracts/IPurchaseStorage.cs @@ -1,4 +1,5 @@ -using UniversityContracts.BindingModels; +using BankContracts.ViewModels; +using UniversityContracts.BindingModels; using UniversityContracts.SearchModels; using UniversityContracts.ViewModels; diff --git a/University/UniversityContracts/UniversityContracts.csproj b/University/UniversityContracts/UniversityContracts.csproj index d1c8a4a..07fb6a1 100644 --- a/University/UniversityContracts/UniversityContracts.csproj +++ b/University/UniversityContracts/UniversityContracts.csproj @@ -6,6 +6,21 @@ enable + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + diff --git a/University/UniversityContracts/ViewModels/EmployeeViewModel.cs b/University/UniversityContracts/ViewModels/EmployeeViewModel.cs index 2ee7562..654f2ec 100644 --- a/University/UniversityContracts/ViewModels/EmployeeViewModel.cs +++ b/University/UniversityContracts/ViewModels/EmployeeViewModel.cs @@ -8,7 +8,7 @@ using UniversityDataModels; namespace UniversityContracts.ViewModels { - internal class EmployeeViewModel : IEmployeeModel + public class EmployeeViewModel : IEmployeeModel { public int Id { get; set; } diff --git a/University/UniversityContracts/ViewModels/PaymentViewModel.cs b/University/UniversityContracts/ViewModels/PaymentViewModel.cs index 47f1e0d..2329616 100644 --- a/University/UniversityContracts/ViewModels/PaymentViewModel.cs +++ b/University/UniversityContracts/ViewModels/PaymentViewModel.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using UniversityContracts.ViewModels; +using UniversityDataModels.Models; namespace BankContracts.ViewModels { diff --git a/University/UniversityContracts/ViewModels/PurchaseViewModel.cs b/University/UniversityContracts/ViewModels/PurchaseViewModel.cs index c6100ab..56333d6 100644 --- a/University/UniversityContracts/ViewModels/PurchaseViewModel.cs +++ b/University/UniversityContracts/ViewModels/PurchaseViewModel.cs @@ -30,7 +30,7 @@ namespace UniversityContracts.ViewModels { break; } - result.Append($"\n\t{i + 1}. {car.Mark} {car.Model} стоимостью {car.Price}"); + result.Append($"\n\t{i + 1}. {car.Time} {car.Name} стоимостью {car.Price}"); } return result.ToString(); } diff --git a/University/UniversityDataModels/UniversityDataModels.csproj b/University/UniversityDataModels/UniversityDataModels.csproj index 27ac386..41d945e 100644 --- a/University/UniversityDataModels/UniversityDataModels.csproj +++ b/University/UniversityDataModels/UniversityDataModels.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -6,4 +6,19 @@ enable + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + diff --git a/University/UniversityDatabaseImplement/Implements/ClassStorage.cs b/University/UniversityDatabaseImplement/Implements/ClassStorage.cs index 1b5b90a..5005ca9 100644 --- a/University/UniversityDatabaseImplement/Implements/ClassStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/ClassStorage.cs @@ -20,10 +20,10 @@ namespace UniversityDatabaseImplement.Implements public ClassViewModel? Delete(ClassBindingModel model) { using var context = new UniversityDB(); - var element = context.Operations.FirstOrDefault(x => x.Id == model.Id); + var element = context.Classes.FirstOrDefault(x => x.Id == model.Id); if (element != null) { - context.Operations.Remove(element); + context.Classes.Remove(element); context.SaveChanges(); return element.GetViewModel; } @@ -38,7 +38,7 @@ namespace UniversityDatabaseImplement.Implements return null; } using var context = new UniversityDB(); - return context.Operations + return context.Classes .Include(x => x.Employee) .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id)?.GetViewModel; } @@ -53,7 +53,7 @@ namespace UniversityDatabaseImplement.Implements } using var context = new UniversityDB(); - var query = context.Operations.Include(x => x.Employee); + var query = context.Classes.Include(x => x.Employee); if (model.EmployeeId.HasValue) { @@ -77,7 +77,7 @@ namespace UniversityDatabaseImplement.Implements public List GetFullList() { using var context = new UniversityDB(); - return context.Operations.Include(x => x.Employee) + return context.Classes.Include(x => x.Employee) .Select(x => x.GetViewModel) .ToList(); } @@ -90,7 +90,7 @@ namespace UniversityDatabaseImplement.Implements return null; } using var context = new UniversityDB(); - context.Operations.Add(newOperation); + context.Classes.Add(newOperation); context.SaveChanges(); return newOperation.GetViewModel; } @@ -98,7 +98,7 @@ namespace UniversityDatabaseImplement.Implements public ClassViewModel? Update(ClassBindingModel model) { using var context = new UniversityDB(); - var car = context.Operations.FirstOrDefault(x => x.Id == model.Id); + var car = context.Classes.FirstOrDefault(x => x.Id == model.Id); if (car == null) { return null; diff --git a/University/UniversityDatabaseImplement/Implements/ClientStorage.cs b/University/UniversityDatabaseImplement/Implements/ClientStorage.cs index 2e60cc9..939cb8a 100644 --- a/University/UniversityDatabaseImplement/Implements/ClientStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/ClientStorage.cs @@ -23,7 +23,7 @@ namespace UiversityDatabaseImplement.Implements CheckSearchModel(model); using var context = new UniversityDB(); - return context.Clients.FirstOrDefault(x => x.PhoneNumber.Equals(model.PhoneNumber) && (string.IsNullOrEmpty(model.Password) || x.Password.Equals(model.Password)))?.GetViewModel; + return context.Clients.FirstOrDefault(x => (string.IsNullOrEmpty(model.Password) || x.Password.Equals(model.Password)))?.GetViewModel; } public ClassViewModel? Insert(ClientBindingModel model) { diff --git a/University/UniversityDatabaseImplement/Implements/CostStorage.cs b/University/UniversityDatabaseImplement/Implements/CostStorage.cs index 5ce20a8..ab8ca10 100644 --- a/University/UniversityDatabaseImplement/Implements/CostStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/CostStorage.cs @@ -18,7 +18,7 @@ namespace UniversityDatabaseImplement.Implements } public CostViewModel? Delete(CostBindingModel model) { - using var context = new BankDB(); + using var context = new UniversityDB(); var element = context.Costs.FirstOrDefault(x => x.Id == model.Id); if (element != null) { @@ -32,7 +32,7 @@ namespace UniversityDatabaseImplement.Implements public CostViewModel? GetElement(CostSearchModel model) { CheckSearchModel(model); - using var context = new BankDB(); + using var context = new UniversityDB(); if (!model.Id.HasValue) { return null; diff --git a/University/UniversityDatabaseImplement/Implements/EmployeeStorage.cs b/University/UniversityDatabaseImplement/Implements/EmployeeStorage.cs index cb44595..1384e73 100644 --- a/University/UniversityDatabaseImplement/Implements/EmployeeStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/EmployeeStorage.cs @@ -23,7 +23,7 @@ namespace UniversityDatabaseImplement.Implements using var context = new UniversityDB(); return context.Employees - .FirstOrDefault(x => x.PhoneNumber.Equals(model.PhoneNumber) && (string.IsNullOrEmpty(model.Password) || x.Password.Equals(model.Password)))?.GetViewModel; + .FirstOrDefault(x => (string.IsNullOrEmpty(model.Password) || x.Password.Equals(model.Password)))?.GetViewModel; } public EmployeeViewModel? Insert(EmployeeBindingModel model) { diff --git a/University/UniversityDatabaseImplement/Implements/PaymentStorage.cs b/University/UniversityDatabaseImplement/Implements/PaymentStorage.cs index 6ae1f31..918a820 100644 --- a/University/UniversityDatabaseImplement/Implements/PaymentStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/PaymentStorage.cs @@ -5,13 +5,14 @@ using UniversityContracts.ViewModels; using UniversityDatabaseImplement.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Query; +using BankContracts.ViewModels; namespace UniversityDatabaseImplement.Implements { public class PaymentStorage : IPaymentStorage { private static IIncludableQueryable Payments(UniversityDB context) - => context.Payments.Include(x => x.OperationByPurchase).ThenInclude(x => x.Operation); + => context.Payments.Include(x => x.ClassByPurchase).ThenInclude(x => x.Class); public List GetFullList() { @@ -31,9 +32,9 @@ namespace UniversityDatabaseImplement.Implements { throw new ArgumentException("Получена поисковая модель только с началом или концом периода"); } - if (!model.DateFrom.HasValue && !model.OperationId.HasValue) + if (!model.DateFrom.HasValue && !model.ClassId.HasValue) { - throw new ArgumentNullException(nameof(model.OperationId), "Получена поисковая модель без OperationId"); + throw new ArgumentNullException(nameof(model.ClassId), "Получена поисковая модель без OperationId"); } if (!model.DateFrom.HasValue && !model.PurchaseId.HasValue) @@ -48,9 +49,9 @@ namespace UniversityDatabaseImplement.Implements .ToList(); return Payments(context) - .Where(x => x.OperationByPurchase != null && - x.OperationByPurchase.OperationId == model.OperationId && - x.OperationByPurchase.PurchaseId == model.PurchaseId) + .Where(x => x.ClassByPurchase != null && + x.ClassByPurchase.ClassId == model.ClassId && + x.ClassByPurchase.PurchaseId == model.PurchaseId) .Select(x => x.GetViewModel) .ToList(); } diff --git a/University/UniversityDatabaseImplement/Implements/PurchaseStorage.cs b/University/UniversityDatabaseImplement/Implements/PurchaseStorage.cs index 5923475..94b859a 100644 --- a/University/UniversityDatabaseImplement/Implements/PurchaseStorage.cs +++ b/University/UniversityDatabaseImplement/Implements/PurchaseStorage.cs @@ -5,6 +5,7 @@ using UniversityContracts.StoragesContracts; using UniversityContracts.ViewModels; using UniversityDatabaseImplement.Models; using Microsoft.EntityFrameworkCore; +using BankContracts.ViewModels; namespace UniversityDatabaseImplement.Implements { @@ -14,7 +15,7 @@ namespace UniversityDatabaseImplement.Implements { if (model == null) throw new ArgumentNullException("Передаваемая модель для поиска равна нулю", nameof(model)); - if (!model.Id.HasValue && !model.ClientId.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && model.OperationsIds == null) + if (!model.Id.HasValue && !model.ClientId.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && model.ClassesIds == null) throw new ArgumentException("Все передаваемые поля поисковой модели оказались пусты или равны null"); if (model.DateFrom.HasValue != model.DateTo.HasValue) throw new ArgumentException($"Не указано начало {model.DateFrom} или конец {model.DateTo} периода для поиска по дате."); @@ -44,9 +45,9 @@ namespace UniversityDatabaseImplement.Implements throw new ArgumentNullException(nameof(modelOperation), "Получена поисковая модель без Id"); } using var context = new UniversityDB(); - var carByPurchase = context.OperationByPurchases + var carByPurchase = context.ClassByPurchases .Include(x => x.Payments) - .FirstOrDefault(x => x.OperationId == modelOperation.Id && x.PurchaseId == modelPurchase.Id); + .FirstOrDefault(x => x.ClassId == modelOperation.Id && x.PurchaseId == modelPurchase.Id); if (carByPurchase?.Payments == null) { throw new InvalidOperationException( @@ -93,16 +94,16 @@ namespace UniversityDatabaseImplement.Implements if (model.DateTo.HasValue) resultQuery = query .Include(x => x.Operations) - .ThenInclude(x => x.Operation) + .ThenInclude(x => x.Class) .Include(x => x.Costs)! .ThenInclude(x => x.Cost) .Where(x => model.DateFrom <= x.DatePurchase && x.DatePurchase <= model.DateTo); - else if (model.OperationsIds != null) + else if (model.ClassesIds != null) resultQuery = query - .Where(x => x.Operations.Any(x => model.OperationsIds.Contains(x.OperationId))) + .Where(x => x.Operations.Any(x => model.ClassesIds.Contains(x.ClassId))) .Include(x => x.Operations) - .ThenInclude(x => x.Operation); + .ThenInclude(x => x.Class); return resultQuery? .Select(x => x.GetViewModel) diff --git a/University/UniversityDatabaseImplement/Models/CarByPurchase.cs b/University/UniversityDatabaseImplement/Models/CarByPurchase.cs index ffec289..87973c0 100644 --- a/University/UniversityDatabaseImplement/Models/CarByPurchase.cs +++ b/University/UniversityDatabaseImplement/Models/CarByPurchase.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; -using UniversityDataModels.ProxyModels; +using UniversityDataModels.Models; + namespace UniversityDatabaseImplement.Models { diff --git a/University/UniversityDatabaseImplement/Models/Class.cs b/University/UniversityDatabaseImplement/Models/Class.cs index 286ab1f..590fe00 100644 --- a/University/UniversityDatabaseImplement/Models/Class.cs +++ b/University/UniversityDatabaseImplement/Models/Class.cs @@ -3,7 +3,6 @@ using UniversityContracts.SearchModels; using UniversityContracts.ViewModels; using UniversityDatabaseImplement.Implements; using UniversityDataModels; -using UniversityDataModels.ProxyModels; using System.ComponentModel; using System.ComponentModel.DataAnnotations; @@ -14,11 +13,11 @@ namespace UniversityDatabaseImplement.Models [Required] public int EmployeeId { get; private set; } [Required] - public string Model { get; private set; } = string.Empty; + public string Name { get; private set; } = string.Empty; [Required] public double Price { get; private set; } [Required] - public string Mark { get; private set; } = string.Empty; + public string Time { get; private set; } = string.Empty; public int Id { get; private set; } [Required] @@ -36,9 +35,9 @@ namespace UniversityDatabaseImplement.Models return new Class() { EmployeeId = model.EmployeeId, - Model = model.Model, + Name = model.Name, Price = model.Price, - Mark = model.Mark, + Time = model.Time, Id = model.Id, }; } @@ -47,9 +46,9 @@ namespace UniversityDatabaseImplement.Models { EmployeePhoneNumber = Employee?.PhoneNumber??string.Empty, EmployeeId = EmployeeId, - Model = Model, + Name = Name, Price = Price, - Mark = Mark, + Time = Time, Id = Id, Purchases = Purchases.Select(x=>x.Purchase?.GetViewModel2).ToList(), }; diff --git a/University/UniversityDatabaseImplement/Models/Cost.cs b/University/UniversityDatabaseImplement/Models/Cost.cs index e9a20e9..c2dac5a 100644 --- a/University/UniversityDatabaseImplement/Models/Cost.cs +++ b/University/UniversityDatabaseImplement/Models/Cost.cs @@ -2,7 +2,8 @@ using UniversityContracts.ViewModels; using UniversityDataModels; using System.ComponentModel.DataAnnotations; -using UniversityDataModels.ProxyModels; +using UniversityDataModels.Models; + namespace UniversityDatabaseImplement.Models { @@ -40,7 +41,6 @@ namespace UniversityDatabaseImplement.Models public CostViewModel GetViewModel => new() { - PhoneNumber = Employee?.PhoneNumber??string.Empty, PurchaseModels = PurchasesModels, EmployeeId = EmployeeId, NameOfCost = NameOfCost, diff --git a/University/UniversityDatabaseImplement/Models/CostByPurchase.cs b/University/UniversityDatabaseImplement/Models/CostByPurchase.cs index 60aa4e5..5533b60 100644 --- a/University/UniversityDatabaseImplement/Models/CostByPurchase.cs +++ b/University/UniversityDatabaseImplement/Models/CostByPurchase.cs @@ -1,5 +1,6 @@ using System.ComponentModel.DataAnnotations; -using UniversityDataModels.ProxyModels; +using UniversityDataModels.Models; + namespace UniversityDatabaseImplement.Models { diff --git a/University/UniversityDatabaseImplement/Models/Employee.cs b/University/UniversityDatabaseImplement/Models/Employee.cs index 33e0184..e0fdf07 100644 --- a/University/UniversityDatabaseImplement/Models/Employee.cs +++ b/University/UniversityDatabaseImplement/Models/Employee.cs @@ -37,11 +37,9 @@ namespace UniversityDatabaseImplement.Models FirstName = model.FirstName, LastName = model.LastName, MiddleName = model.MiddleName, - PhoneNumber = model.PhoneNumber, Password = model.Password, Id = model.Id, Post = model.Post, - Email = model.Email, }; } @@ -50,11 +48,9 @@ namespace UniversityDatabaseImplement.Models FirstName = FirstName, LastName = LastName, MiddleName = MiddleName, - PhoneNumber = PhoneNumber, Password = Password, Id = Id, Post = Post, - Email = Email, }; } } \ No newline at end of file diff --git a/University/UniversityDatabaseImplement/Models/Payment.cs b/University/UniversityDatabaseImplement/Models/Payment.cs index eda99b5..7f81edd 100644 --- a/University/UniversityDatabaseImplement/Models/Payment.cs +++ b/University/UniversityDatabaseImplement/Models/Payment.cs @@ -3,13 +3,14 @@ using UniversityContracts.ViewModels; using UniversityDataModels; using System.ComponentModel.DataAnnotations; using System.Diagnostics; +using BankContracts.ViewModels; namespace UniversityDatabaseImplement.Models { public class Payment : IPaymentModel { [Required] - public int OperationByPurchaseId { get; private set; } + public int ClassByPurchaseId { get; private set; } [Required] public DateOnly Date { get; private set; } @@ -34,18 +35,18 @@ namespace UniversityDatabaseImplement.Models Date = model.Date, PaidPrice = model.PaidPrice, Id = model.Id, - OperationByPurchaseId = model.OperationByPurchaseId, + ClassByPurchaseId = model.ClassByPurchaseId, }; } public PaymentViewModel GetViewModel => new() { - Operation = OperationByPurchase?.Operation?.GetViewModel, - OperationByPurchase = OperationByPurchase, - FullPrice = OperationByPurchase?.Operation?.Price ?? -1, + Operation = ClassByPurchase?.Class?.GetViewModel, + ClassByPurchase = ClassByPurchase, + FullPrice = ClassByPurchase?.Class?.Price ?? -1, Date = Date, PaidPrice = PaidPrice, Id = Id, - OperationByPurchaseId = OperationByPurchaseId, + ClassByPurchaseId = ClassByPurchaseId, }; } } diff --git a/University/UniversityDatabaseImplement/Models/Purchase.cs b/University/UniversityDatabaseImplement/Models/Purchase.cs index 9777d88..e7b1206 100644 --- a/University/UniversityDatabaseImplement/Models/Purchase.cs +++ b/University/UniversityDatabaseImplement/Models/Purchase.cs @@ -4,7 +4,8 @@ using UniversityDataModels; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq.Expressions; -using UniversityDataModels.ProxyModels; +using UniversityDataModels.Models; + namespace UniversityDatabaseImplement.Models { @@ -14,7 +15,7 @@ namespace UniversityDatabaseImplement.Models public DateOnly DatePurchase { get; private set; } private Dictionary? _cachedOperations; [NotMapped] - public Dictionary ClassModel => _cachedOperations ??= Class.Select(x => (ClassByPurchaseModel)x).ToDictionary(x => x.ClassId, x => x); + public Dictionary ClassModel => _cachedOperations ??= Class.Select (x => (ClassByPurchaseModel)x).ToDictionary(x => x.ClassId, x => x); [NotMapped] public List? CostsModel => null; public int Id { get; private set; } @@ -42,7 +43,7 @@ namespace UniversityDatabaseImplement.Models public PurchaseViewModel GetViewModel => new() { - OperationsModel = OperationsModel, + ClassModel = ClassModel, Id = Id, DatePurchase = DatePurchase, ClientId = ClientId, @@ -52,13 +53,13 @@ namespace UniversityDatabaseImplement.Models .Select(x => x.Cost.GetViewModel) .ToList() ?? new(), OperationViewModels = Operations? - .Select(x => x.Operation?.GetViewModel) + .Select(x => x.Class?.GetViewModel) .ToList() ?? new() }; public PurchaseViewModel GetViewModel2 => new() { - OperationsModel = OperationsModel, + ClassModel = ClassModel, Id = Id, DatePurchase = DatePurchase, ClientId = ClientId, @@ -71,14 +72,14 @@ namespace UniversityDatabaseImplement.Models public void UpdateOperations(UniversityDB context, PurchaseBindingModel model) { - var oldOperations = context.OperationByPurchases.Where(x => x.PurchaseId == model.Id).ToDictionary(x => x.OperationId, x => x); - var newOperations = model.OperationsModel.ToDictionary( + var oldOperations = context.ClassByPurchases.Where(x => x.PurchaseId == model.Id).ToDictionary(x => x.ClassId, x => x); + var newOperations = model.ClassModel.ToDictionary( x => x.Key, - x => new ClassnByPurchase() + x => new ClassByPurchase() { - OperationId = x.Key, + ClassId = x.Key, PurchaseId = Id, - CountOperations = x.Value.CountOperations + CountClass = x.Value.CountClass } ); @@ -87,7 +88,7 @@ namespace UniversityDatabaseImplement.Models oldOperations .Where(x => newOperations.ContainsKey(x.Key)) .Select(x => x.Value).ToList() - .ForEach(x => x.CountOperations = newOperations[x.OperationId].CountOperations); + .ForEach(x => x.CountClass = newOperations[x.ClassId].CountClass); context.SaveChanges(); _cachedOperations = null; } diff --git a/University/UniversityDatabaseImplement/UniversityDatabaseImplement.csproj b/University/UniversityDatabaseImplement/UniversityDatabaseImplement.csproj index 132c02c..d772dc3 100644 --- a/University/UniversityDatabaseImplement/UniversityDatabaseImplement.csproj +++ b/University/UniversityDatabaseImplement/UniversityDatabaseImplement.csproj @@ -6,4 +6,24 @@ enable + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + diff --git a/University/UniversityEmpoyeeApp/Program.cs b/University/UniversityEmpoyeeApp/Program.cs index 5e24603..9506bfe 100644 --- a/University/UniversityEmpoyeeApp/Program.cs +++ b/University/UniversityEmpoyeeApp/Program.cs @@ -1,6 +1,8 @@ +using Serilog; using UniversityBusinessLogics.BusinessLogic; using UniversityContracts.BusinessLogicContracts; using UniversityContracts.StoragesContracts; +using UniversityDatabaseImplement.Implements; var builder = WebApplication.CreateBuilder(args); @@ -21,6 +23,20 @@ builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddLogging(option => +{ + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile(path: "appsettings.json", optional: false, reloadOnChange: true) + .Build(); + + var logger = new LoggerConfiguration() + .ReadFrom.Configuration(configuration) + .CreateLogger(); + + option.AddSerilog(logger); +}); + var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/University/UniversityEmpoyeeApp/UniversityEmpoyeeApp.csproj b/University/UniversityEmpoyeeApp/UniversityEmpoyeeApp.csproj index 50e64f1..8644c66 100644 --- a/University/UniversityEmpoyeeApp/UniversityEmpoyeeApp.csproj +++ b/University/UniversityEmpoyeeApp/UniversityEmpoyeeApp.csproj @@ -6,9 +6,27 @@ enable + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + +