public async Task <OrderDetailsCart> GetOrderDetailsCart(Claim claim, IMenuItemRepository menuItem, string code,
                                                                 ICouponRepository couponRepository)
        {
            OrderDetailsCart order = new OrderDetailsCart
            {
                OrderHeader   = new OrderHeader(),
                ShoppingCarts = await GetShoppingCartFoUser(claim.Value)
            };

            order.OrderHeader.OrderTotal = 0;
            foreach (var VARIABLE in order.ShoppingCarts)
            {
                VARIABLE.MenuItem = await menuItem.GetItemAsync(VARIABLE.MenuItemId);

                order.OrderHeader.OrderTotal =
                    order.OrderHeader.OrderTotal + (VARIABLE.MenuItem.Price * VARIABLE.Count);
                VARIABLE.MenuItem.Description = SD.ConvertToRawHtml(VARIABLE.MenuItem.Description);
                if (VARIABLE.MenuItem.Description.Length > 100)
                {
                    VARIABLE.MenuItem.Description = VARIABLE.MenuItem.Description.Substring(0, 99) + "...";
                }
            }

            order.OrderHeader.OrderTotalOriginal = order.OrderHeader.OrderTotal;
            if (code != null)
            {
                order.OrderHeader.CouponCode = code;
                var couponFromDb =
                    await couponRepository.AllItems.Where(z =>
                                                          z.Name.ToLower() == order.OrderHeader.CouponCode.ToLower()).FirstOrDefaultAsync();

                order.OrderHeader.OrderTotal = SD.DiscountedPrice(couponFromDb, order.OrderHeader.OrderTotalOriginal);
            }
            return(order);
        }