Example #1
0
 public IActionResult GetOrders(CustomersOrdersRequest request)
 {
     return(Ok(_dbService.GetOrders(request)));
 }
Example #2
0
        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);
        }