From 83232b242d994d02cadaba6666eac4b5de486d2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=A7=D0=B5=D1=80?= =?UTF-8?q?=D0=BD=D1=8B=D1=88=D0=BE=D0=B2?= Date: Sat, 8 Apr 2023 20:59:23 +0400 Subject: [PATCH] =?UTF-8?q?7.=20=D0=9B=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D0=B8=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=B9=20=D0=B7=D0=B0=D1=82=D1=80=D0=B0=D1=82?= =?UTF-8?q?,=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D0=BE=D1=82=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B2,=20=D0=B7=D0=B0=D0=B3=D0=BB=D1=83?= =?UTF-8?q?=D1=88=D0=BA=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=BE=D0=BB?= =?UTF-8?q?=D0=B8=20Worker,=20=D0=B8=D0=BC=D0=B8=D1=82=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=80=D0=BE=D0=BB=D0=B8=20Worker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/ReportLogic.cs | 42 ++++++++++ .../WorkerRoleImitationLogic.cs | 76 +++++++++++++++++++ .../BindingModels/ReportBindingModel.cs | 2 +- .../BusinessLogicsContracts/IReportLogic.cs | 34 +++++++++ .../SearchModels/ServiceSearchModel.cs | 2 + .../StorageContracts/IServiceStorage.cs | 1 + .../ViewModels/ReportCasesViewModel.cs | 4 + .../ViewModels/ReportLawServicesViewModel.cs | 2 + .../Implements/ServiceStorage.cs | 15 ++++ 9 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs create mode 100644 LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkerRoleImitationLogic.cs create mode 100644 LawFirm/LawFirmContracts/BusinessLogicsContracts/IReportLogic.cs diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs new file mode 100644 index 0000000..e8ec489 --- /dev/null +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/ReportLogic.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using LawFirmContracts.BindingModels; +using LawFirmContracts.BusinessLogicsContracts; +using LawFirmContracts.SearchModels; +using LawFirmContracts.StorageContracts; +using LawFirmContracts.ViewModels; +using Microsoft.Extensions.Logging; + +namespace LawFirmBusinessLogic.BusinessLogics +{ + public class ReportLogic : IReportLogic + { + private readonly ILogger _logger; + private readonly IServiceStorage _serviceStorage; + public ReportLogic(ILogger logger, IServiceStorage serviceStorage) + { + _logger = logger; + _serviceStorage = serviceStorage; + } + public List GetRequestsByServices(ReportBindingModel model) + { + _logger.LogInformation("Reading requests by services"); + return _serviceStorage.GetServicesWithRequest(new() { SelectedServicesIds = model.SelectedServices }); + } + public void SaveComponentsToWordFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + public void SaveManufactureComponentToExcelFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + public void SaveOrdersToPdfFile(ReportBindingModel model) + { + throw new NotImplementedException(); + } + } +} diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkerRoleImitationLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkerRoleImitationLogic.cs new file mode 100644 index 0000000..0576659 --- /dev/null +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkerRoleImitationLogic.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using LawFirmContracts.BusinessLogicsContracts; + +namespace LawFirmBusinessLogic.BusinessLogics +{ + public class WorkerRoleImitationLogic + { + private readonly IWorkerLogic _workerLogic; + private readonly IServiceLogic _serviceLogic; + public WorkerRoleImitationLogic(IWorkerLogic workerLogic, IServiceLogic serviceLogic) + { + _workerLogic = workerLogic; + _serviceLogic = serviceLogic; + } + private bool GenerateWorkerData() + { + if (_workerLogic.ReadList(null)?.Count != 0) + { + return false; + } + using (StreamReader sr = new("workers.txt")) + { + string? currentString; + while ((currentString = sr.ReadLine()) != null) + { + var workerRecData = currentString.Split(','); + _workerLogic.Create(new() + { + Login = workerRecData[0], + Password = workerRecData[1], + Name = workerRecData[2], + Surname = workerRecData[3] + }); + } + } + return true; + } + public bool GenerateServices() + { + var ServicesList = _serviceLogic.ReadList(null); + if (ServicesList == null) + { + return false; + } + if (ServicesList.Count == 0) + { + return false; + } + var RequestList = _serviceLogic.ReadList(null); + if (RequestList == null) + { + return false; + } + if (RequestList.Count == 0) + { + return false; + } + Random r = new(); + for (int i = 0; i < 2; i++) + { + _serviceLogic.Create(new() + { + Id = r.Next(0, RequestList.Count), + CaseId = r.Next(0, ServicesList.Count), + ItemId = r.Next(0, ServicesList.Count) + }); + } + return true; + + } + } +} diff --git a/LawFirm/LawFirmContracts/BindingModels/ReportBindingModel.cs b/LawFirm/LawFirmContracts/BindingModels/ReportBindingModel.cs index 6b7c7c1..3251b53 100644 --- a/LawFirm/LawFirmContracts/BindingModels/ReportBindingModel.cs +++ b/LawFirm/LawFirmContracts/BindingModels/ReportBindingModel.cs @@ -12,7 +12,7 @@ namespace LawFirmContracts.BindingModels /// /// Выбранные работы для отчета по заявкам /// - public List? SelectedWorks { get; set; } + public List? SelectedServices { get; set; } /// /// Начало периода для отчета по оплатам /// diff --git a/LawFirm/LawFirmContracts/BusinessLogicsContracts/IReportLogic.cs b/LawFirm/LawFirmContracts/BusinessLogicsContracts/IReportLogic.cs new file mode 100644 index 0000000..6359839 --- /dev/null +++ b/LawFirm/LawFirmContracts/BusinessLogicsContracts/IReportLogic.cs @@ -0,0 +1,34 @@ +using LawFirmContracts.BindingModels; +using LawFirmContracts.ViewModels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LawFirmContracts.BusinessLogicsContracts +{ + public interface IReportLogic + { + /// + /// Получение списка + /// + /// + List GetRequestsByServices(ReportBindingModel model); + /// + /// Сохранение в файл-Word + /// + /// + void SaveComponentsToWordFile(ReportBindingModel model); + /// + /// Сохранение в файл-Excel + /// + /// + void SaveManufactureComponentToExcelFile(ReportBindingModel model); + /// + /// Сохранение заказов в файл-Pdf + /// + /// + void SaveOrdersToPdfFile(ReportBindingModel model); + } +} diff --git a/LawFirm/LawFirmContracts/SearchModels/ServiceSearchModel.cs b/LawFirm/LawFirmContracts/SearchModels/ServiceSearchModel.cs index 3b52b66..82b6b91 100644 --- a/LawFirm/LawFirmContracts/SearchModels/ServiceSearchModel.cs +++ b/LawFirm/LawFirmContracts/SearchModels/ServiceSearchModel.cs @@ -9,5 +9,7 @@ namespace LawFirmContracts.SearchModels public class ServiceSearchModel { public int? Id { get; set; } + public string? Name { get; set; } + public List? SelectedServicesIds { get; set; } } } diff --git a/LawFirm/LawFirmContracts/StorageContracts/IServiceStorage.cs b/LawFirm/LawFirmContracts/StorageContracts/IServiceStorage.cs index caac867..71ff1d2 100644 --- a/LawFirm/LawFirmContracts/StorageContracts/IServiceStorage.cs +++ b/LawFirm/LawFirmContracts/StorageContracts/IServiceStorage.cs @@ -13,6 +13,7 @@ namespace LawFirmContracts.StorageContracts { List GetFullList(); List GetFilteredList(ServiceSearchModel model); + List GetServicesWithRequest(ServiceSearchModel model); ServiceViewModel? GetElement(ServiceSearchModel model); ServiceViewModel? Insert(ServiceBindingModel model); ServiceViewModel? Update(ServiceBindingModel model); diff --git a/LawFirm/LawFirmContracts/ViewModels/ReportCasesViewModel.cs b/LawFirm/LawFirmContracts/ViewModels/ReportCasesViewModel.cs index 283695b..ded126f 100644 --- a/LawFirm/LawFirmContracts/ViewModels/ReportCasesViewModel.cs +++ b/LawFirm/LawFirmContracts/ViewModels/ReportCasesViewModel.cs @@ -11,5 +11,9 @@ namespace LawFirmContracts.ViewModels /// public class ReportCasesViewModel { + public int CaseRequestId { get; set; } + public DateTime CaseRequestDateCreated { get; set; } = DateTime.Now; + public string CustomerName { get; set; } = string.Empty; + public string WorkerName { get; set; } = string.Empty; } } diff --git a/LawFirm/LawFirmContracts/ViewModels/ReportLawServicesViewModel.cs b/LawFirm/LawFirmContracts/ViewModels/ReportLawServicesViewModel.cs index 602ae98..6b259fe 100644 --- a/LawFirm/LawFirmContracts/ViewModels/ReportLawServicesViewModel.cs +++ b/LawFirm/LawFirmContracts/ViewModels/ReportLawServicesViewModel.cs @@ -11,5 +11,7 @@ namespace LawFirmContracts.ViewModels /// public class ReportLawServicesViewModel { + public string ServiceName { get; set; } = string.Empty; + public List LawServices { get; set; } = new(); } } diff --git a/LawFirm/LawFirmDatabase/Implements/ServiceStorage.cs b/LawFirm/LawFirmDatabase/Implements/ServiceStorage.cs index c54f7cb..fa87889 100644 --- a/LawFirm/LawFirmDatabase/Implements/ServiceStorage.cs +++ b/LawFirm/LawFirmDatabase/Implements/ServiceStorage.cs @@ -85,5 +85,20 @@ namespace LawFirmDatabase.Implements context.SaveChanges(); return service.GetViewModel; } + public List GetServicesWithRequest(ServiceSearchModel model) + { + if (model.SelectedServicesIds == null) + { + return new(); + } + using var context = new LawFirmDBContext(); + return context.Services.Select(x => x.GetViewModel) + .Where(w => model.SelectedServicesIds.Contains(w.Id)) + .Select(w => new ReportLawServicesViewModel() + { + ServiceName = w.Name + }) + .ToList(); + } } }