public IActionResult GetOrders(CustomersOrdersRequest request) { return(Ok(_dbService.GetOrders(request))); }
public IEnumerable <OrderModel> GetOrders(CustomersOrdersRequest request) { IEnumerable <OrderModel> orders = null; if (request.Name == null && request.Surname == null) { orders = DbContext.Order.Select(o => new OrderModel { IdOrder = o.IdOrder, DateAccepted = o.DateAccepted, DateFinished = o.DateFinished, Notes = o.Notes }) .ToList(); } else { var res = DbContext.Order.Join(DbContext.Customer, o => o.IdClient, c => c.IdClient, (o, c) => new { o, c }); if (request.Name == null) { res = res.Where(oc => oc.c.Surname == request.Surname); } else if (request.Surname == null) { res = res.Where(oc => oc.c.Name == request.Name); } else { res = res.Where(oc => oc.c.Name == request.Name && oc.c.Surname == request.Surname); } orders = res.Select(oc => new OrderModel { IdOrder = oc.o.IdOrder, DateAccepted = oc.o.DateAccepted, DateFinished = oc.o.DateFinished, Notes = oc.o.Notes }) .ToList(); } foreach (var order in orders) { var basket = DbContext.ConfectioneryOrder.Join(DbContext.Confectionery, o => o.IdConfectionery, c => c.IdConfectionery, (o, c) => new { o, c }) .Where(oc => oc.o.IdOrder == order.IdOrder) .Select(oc => new ConfectioneryOrderModel { IdConfectionery = oc.o.IdConfectionery, Name = oc.c.Name, Type = oc.c.Type, PricePerItem = oc.c.PricePerItem, Quantity = oc.o.Quantity, Notes = oc.o.Notes }).ToList(); order.Basket = basket; decimal totalPrice = 0; basket.ForEach(o => totalPrice += o.PricePerItem * o.Quantity); order.TotalPrice = totalPrice; } return(orders); }