From e13229f35d5f9fc1c22554ed2ac493d0c5c101e4 Mon Sep 17 00:00:00 2001 From: Danila_Mochalov <volzhankaonelove@yandex.ru> Date: Fri, 21 Apr 2023 11:30:22 +0400 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=B0?= =?UTF-8?q?=D0=B16=D1=85=D0=B0=D1=80=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/OrderLogic.cs | 2 +- .../BusinessLogics/WorkModeling.cs | 28 +++++++++++------- .../Implements/OrderStorage.cs | 29 ++++++++++++------- .../Migrations/20230407205507_Implementer.cs | 4 ++- 4 files changed, 39 insertions(+), 24 deletions(-) diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs index ad014dc..5c2d2a1 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/OrderLogic.cs @@ -85,7 +85,7 @@ namespace LawFirmBusinessLogic.BusinessLogics return false; } - if (newStatus == OrderStatus.Готов || newStatus == OrderStatus.Ожидание) + if (newStatus == OrderStatus.Готов) { var document = _documentStorage.GetElement(new DocumentSearchModel() { Id = model.DocumentId}); if (document == null) diff --git a/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkModeling.cs b/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkModeling.cs index 0ac57c6..e2b3525 100644 --- a/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkModeling.cs +++ b/LawFirm/LawFirmBusinessLogic/BusinessLogics/WorkModeling.cs @@ -62,7 +62,7 @@ namespace LawFirmBusinessLogic.BusinessLogics await RunWaitingOrder(implementer); - await RunOrderInWork(implementer, orders); + await RunOrderInWork(implementer); await Task.Run(() => { @@ -106,17 +106,21 @@ namespace LawFirmBusinessLogic.BusinessLogics }); } - private async Task RunOrderInWork(ImplementerViewModel implementer, List<OrderViewModel> allOrders) + private async Task RunOrderInWork(ImplementerViewModel implementer) { - if (_orderLogic == null || implementer == null || allOrders == null || allOrders.Count == 0) + if (_orderLogic == null || implementer == null) { return; } try { - // Выбираем из всех заказов тот, который выполняется данным исполнителем - var runOrder = await Task.Run(() => allOrders.FirstOrDefault(x => x.ImplementerId == implementer.Id && x.Status == OrderStatus.Выполняется)); - if (runOrder == null) + // Выбираем из всех заказов тот, который выполняется данным исполнителем + var runOrder = await Task.Run(() => _orderLogic.ReadElement(new OrderSearchModel + { + ImplementerId = implementer.Id, + Status = OrderStatus.Выполняется + })); + if (runOrder == null) { return; } @@ -125,10 +129,11 @@ namespace LawFirmBusinessLogic.BusinessLogics // доделываем работу Thread.Sleep(implementer.WorkExperience * _rnd.Next(100, 300) * runOrder.Count); _logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, runOrder.Id); - _orderLogic.FinishOrder(new OrderBindingModel + _orderLogic.DeliveryOrder(new OrderBindingModel { - Id = runOrder.Id - }); + Id = runOrder.Id, + ImplementerId = implementer.Id + }); // отдыхаем Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); } @@ -163,9 +168,10 @@ namespace LawFirmBusinessLogic.BusinessLogics return; } _logger.LogDebug("DoWork. Worker {Id} finish order {Order}", implementer.Id, order.Id); - _orderLogic.FinishOrder(new OrderBindingModel + _orderLogic.DeliveryOrder(new OrderBindingModel { - Id = order.Id + Id = order.Id, + ImplementerId = implementer.Id }); Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100)); } diff --git a/LawFirm/LawFirmDatabaseImplement/Implements/OrderStorage.cs b/LawFirm/LawFirmDatabaseImplement/Implements/OrderStorage.cs index 6a6127d..317c900 100644 --- a/LawFirm/LawFirmDatabaseImplement/Implements/OrderStorage.cs +++ b/LawFirm/LawFirmDatabaseImplement/Implements/OrderStorage.cs @@ -16,11 +16,18 @@ namespace LawFirmDatabaseImplement.Implements { public OrderViewModel? GetElement(OrderSearchModel model) { - if (!model.Id.HasValue) - { - return null; - } using var context = new LawFirmDatabase(); + + if (model.ImplementerId != null && model.Status != null) + { + return context.Orders + .Include(x => x.Document) + .Include(x => x.Client) + .Include(x => x.Implementer) + .FirstOrDefault(x => x.Status.Equals(model.Status) && x.ImplementerId.Equals(model.ImplementerId))?.GetViewModel; + + } + return context.Orders .Include(x => x.Document) .Include(x => x.Client) @@ -48,16 +55,16 @@ namespace LawFirmDatabaseImplement.Implements .Select(x => x.GetViewModel) .ToList(); } - if (model.Status!= null) + if (model.Status != null) { - return context.Orders + return context.Orders .Include(x => x.Document) .Include(x => x.Client) - .Include(x => x.Implementer) - .Where(x => model.Status.Equals(x.Status)) - .Select(x => x.GetViewModel) - .ToList(); - } + .Include(x => x.Implementer) + .Where(x => model.Status.Equals(x.Status)) + .Select(x => x.GetViewModel) + .ToList(); + } return context.Orders .Include(x => x.Document) .Include(x => x.Client) diff --git a/LawFirm/LawFirmDatabaseImplement/Migrations/20230407205507_Implementer.cs b/LawFirm/LawFirmDatabaseImplement/Migrations/20230407205507_Implementer.cs index c63db5d..0ddb3a3 100644 --- a/LawFirm/LawFirmDatabaseImplement/Migrations/20230407205507_Implementer.cs +++ b/LawFirm/LawFirmDatabaseImplement/Migrations/20230407205507_Implementer.cs @@ -1,4 +1,6 @@ using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations.Operations; + #nullable disable @@ -10,7 +12,7 @@ namespace LawFirmDatabaseImplement.Migrations /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn<int>( + migrationBuilder.AddColumn<int>( name: "ImplementerId", table: "Orders", type: "int",