diff --git a/SushiBar/SushiBarFileImplement/Implements/OrderStorage.cs b/SushiBar/SushiBarFileImplement/Implements/OrderStorage.cs index 1fd61f5..bf1ac96 100644 --- a/SushiBar/SushiBarFileImplement/Implements/OrderStorage.cs +++ b/SushiBar/SushiBarFileImplement/Implements/OrderStorage.cs @@ -3,6 +3,7 @@ using SushiBarContracts.SearchModels; using SushiBarContracts.StoragesContracts; using SushiBarContracts.ViewModels; using SushiBarFileImplement.Models; +using System.Linq; namespace SushiBarFileImplement.Implements { @@ -21,17 +22,22 @@ namespace SushiBarFileImplement.Implements public List GetFilteredList(OrderSearchModel model) { - if (model.DateFrom.HasValue) + if (model.DateFrom.HasValue && model.DateTo.HasValue) return source.Orders .Where(x => x.DateCreate >= model.DateFrom && x.DateCreate <= model.DateTo) .Select(x => GetViewModel(x)) .ToList(); - if (model.ClientId.HasValue && !model.Id.HasValue) + else if (model.ClientId.HasValue && !model.Id.HasValue) return source.Orders .Where(x => x.ClientId == model.ClientId) .Select(x => x.GetViewModel) .ToList(); - if (model.Id.HasValue) + else if (model.OrderStatus.HasValue) + return source.Orders + .Where(x => x.Status == model.OrderStatus) + .Select(x => x.GetViewModel) + .ToList(); + else if (model.Id.HasValue) return source.Orders .Where(x => x.Id.Equals(model.Id)) .Select(x => GetViewModel(x)) @@ -41,14 +47,25 @@ namespace SushiBarFileImplement.Implements public OrderViewModel? GetElement(OrderSearchModel model) { - if (!model.Id.HasValue) + if (model.Id.HasValue) { - return null; + return source.Orders.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; } - - return source.Orders.FirstOrDefault(x => - (model.Id.HasValue && x.Id == model.Id))?.GetViewModel; + else if (model.ImplementerId.HasValue && model.OrderStatus.HasValue) + { + return source.Orders + .FirstOrDefault(x => x.ImplementerId == model.ImplementerId && x.Status == model.OrderStatus) + ?.GetViewModel; + } + else if (model.ImplementerId.HasValue) + { + return source.Orders + .FirstOrDefault(x => x.ImplementerId == model.ImplementerId) + ?.GetViewModel; + } + return null; } + private OrderViewModel GetViewModel(Order order) { var viewModel = order.GetViewModel; @@ -57,13 +74,18 @@ namespace SushiBarFileImplement.Implements .ListSushi.FirstOrDefault(x => x.Id == order.SushiId); var client = source .Clients.FirstOrDefault(x => x.Id == order.ClientId); + var implementer = source + .Implementers.FirstOrDefault(x => x.Id == order.ImplementerId); if (sushi != null) viewModel.SushiName = sushi.SushiName; if (client != null) viewModel.ClientFIO = client.ClientFIO; + if (implementer != null) + viewModel.ImplementerFIO = implementer.ImplementerFIO; return viewModel; } + public OrderViewModel? Insert(OrderBindingModel model) { model.Id = source.Orders.Count > 0 ? source.Orders.Max(x => x.Id) + 1 : 1; diff --git a/SushiBar/SushiBarFileImplement/Models/Order.cs b/SushiBar/SushiBarFileImplement/Models/Order.cs index ffc3a7a..483ddac 100644 --- a/SushiBar/SushiBarFileImplement/Models/Order.cs +++ b/SushiBar/SushiBarFileImplement/Models/Order.cs @@ -10,6 +10,7 @@ namespace SushiBarFileImplement.Models { public int Id { get; private set; } public int ClientId { get; private set; } + public int? ImplementerId { get; private set; } public int SushiId { get; private set; } public int Count { get; private set; } public double Sum { get; private set; } @@ -27,6 +28,7 @@ namespace SushiBarFileImplement.Models Id = model.Id, SushiId = model.SushiId, ClientId = model.ClientId, + ImplementerId = model.ImplementerId, Count = model.Count, Sum = model.Sum, Status = model.Status, @@ -46,6 +48,7 @@ namespace SushiBarFileImplement.Models Id = Convert.ToInt32(element.Attribute("Id")!.Value), SushiId = Convert.ToInt32(element.Element("SushiId")!.Value), ClientId = Convert.ToInt32(element.Element("ClientId")!.Value), + ImplementerId = Convert.ToInt32(element.Element("ImplementerId")!.Value), Sum = Convert.ToDouble(element.Element("Sum")!.Value), Count = Convert.ToInt32(element.Element("Count")!.Value), Status = (OrderStatus)Enum.Parse(typeof(OrderStatus), element.Element("Status")!.Value), @@ -62,12 +65,14 @@ namespace SushiBarFileImplement.Models } Status = model.Status; DateImplement = model.DateImplement; + ImplementerId = model.ImplementerId; } public OrderViewModel GetViewModel => new() { SushiId = SushiId, ClientId = ClientId, + ImplementerId = ImplementerId, Count = Count, Sum = Sum, DateCreate = DateCreate, @@ -80,6 +85,7 @@ namespace SushiBarFileImplement.Models new XAttribute("Id", Id), new XElement("SushiId", SushiId), new XElement("ClientId", ClientId), + new XElement("ImplementerId", ImplementerId), new XElement("Count", Count.ToString()), new XElement("Sum", Sum.ToString()), new XElement("Status", Status.ToString()), diff --git a/SushiBar/SushiBarListImplement/Models/Implementer.cs b/SushiBar/SushiBarListImplement/Models/Implementer.cs index 4abc2e2..333ac5f 100644 --- a/SushiBar/SushiBarListImplement/Models/Implementer.cs +++ b/SushiBar/SushiBarListImplement/Models/Implementer.cs @@ -15,6 +15,7 @@ namespace SushiBarListImplement.Models public int WorkExperience { get; private set; } public int Qualification { get; private set; } + public static Implementer? Create(ImplementerBindingModel? model) { if (model == null)