From dfd97c64161e77f10eedbb03e1267006e2ef65dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BD=D0=B8=D1=8F=D1=80=20=D0=90=D0=B3=D0=BB?= =?UTF-8?q?=D0=B8=D1=83=D0=BB=D0=BB=D0=BE=D0=B2?= Date: Mon, 6 Mar 2023 16:32:22 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D1=89=D0=B5=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderStorage.cs | 89 ++++++++++--------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/ConfectioneryDatabaseImplement/OrderStorage.cs b/ConfectioneryDatabaseImplement/OrderStorage.cs index 8466ddc..7e95ba8 100644 --- a/ConfectioneryDatabaseImplement/OrderStorage.cs +++ b/ConfectioneryDatabaseImplement/OrderStorage.cs @@ -4,7 +4,6 @@ using ConfectioneryContracts.StoragesContract; using ConfectioneryContracts.ViewModels; using ConfectioneryDatabaseImplement.Models; using Microsoft.EntityFrameworkCore; -using System.Security.Cryptography.X509Certificates; namespace ConfectioneryDatabaseImplement.Implements { @@ -13,7 +12,10 @@ namespace ConfectioneryDatabaseImplement.Implements public OrderViewModel? Delete(OrderBindingModel model) { using var context = new ConfectioneryDatabase(); - var element = context.Orders.Include(x => x.Client).FirstOrDefault(x => x.Id == model.Id); + var element = context.Orders + .Include(x => x.Client) + .Include(x => x.Implementer) + .FirstOrDefault(x => x.Id == model.Id); if (element != null) { context.Orders.Remove(element); @@ -26,52 +28,51 @@ namespace ConfectioneryDatabaseImplement.Implements public OrderViewModel? GetElement(OrderSearchModel model) { using var context = new ConfectioneryDatabase(); - if (model.ImplementerId.HasValue) - { - return context.Orders.FirstOrDefault(x => x.ImplementerId == model.ImplementerId)?.GetViewModel; - } - if (!model.Id.HasValue) - { - return null; - } - return context.Orders - .Include(x => x.Client) - .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) - ?.GetViewModel; + // Находим первого либо по айди заказа, либо по айди исполнителя, исходя из того что есть в модели + return context.Orders + .Include(x => x.Client) + .Include(x => x.Implementer) + .FirstOrDefault(x => + model.ImplementerId.HasValue && x.ImplementerId == model.ImplementerId || + model.Id.HasValue && x.Id == model.Id + ) + ?.GetViewModel; } public List GetFilteredList(OrderSearchModel model) { - if (model.Id.HasValue) - { - var result = GetElement(model); - return result != null ? new() { result } : new(); - } - using var context = new ConfectioneryDatabase(); - if (model.DateFrom.HasValue && model.DateTo.HasValue) // если не ищем по айдишнику, значит ищем по диапазону дат - { - return context.Orders - .Where(x => model.DateFrom <= x.DateCreate.Date && x.DateCreate <= model.DateTo) - .Include(x => x.Client) - .Select(x => x.GetViewModel) - .ToList(); - } - if (model.Status.HasValue) + if (model.Id.HasValue) { - return context.Orders - .Where(x => x.Status == model.Status) + var result = GetElement(model); + return result != null ? new() { result } : new(); + } + + using var context = new ConfectioneryDatabase(); + IQueryable? queryWhere = null; + + if (model.DateFrom.HasValue && model.DateTo.HasValue) // если не ищем по айдишнику, значит ищем по диапазону дат + { + queryWhere = context.Orders + .Where(x => model.DateFrom <= x.DateCreate.Date && + x.DateCreate.Date <= model.DateTo); + } + else if (model.Status.HasValue) + { + queryWhere = context.Orders.Where(x => x.Status == model.Status); + } + else if (model.ClientId.HasValue) + { + queryWhere = context.Orders.Where(x => x.Client.Id == model.ClientId); + } + else + { + return new(); + } + return queryWhere + .Include(x => x.Client) + .Include(x => x.Implementer) .Select(x => x.GetViewModel) .ToList(); - } - if (model.ClientId.HasValue) - { - return context.Orders - .Where(x => x.Client.Id == model.ClientId) - .Include(x => x.Client) - .Select(x => x.GetViewModel) - .ToList(); - } - return new(); } public List GetFullList() @@ -79,7 +80,8 @@ namespace ConfectioneryDatabaseImplement.Implements using var context = new ConfectioneryDatabase(); return context.Orders .Include(x => x.Client) - .Select(x => x.GetViewModel) + .Include(x => x.Implementer) + .Select(x => x.GetViewModel) .ToList(); } @@ -101,7 +103,8 @@ namespace ConfectioneryDatabaseImplement.Implements using var context = new ConfectioneryDatabase(); var order = context.Orders .Include(x => x.Client) - .FirstOrDefault(x => x.Id == model.Id); + .Include(x => x.Implementer) + .FirstOrDefault(x => x.Id == model.Id); if (order == null) { return null;