Пример #1
0
        public async Task <JsonResult> AltMenuOnSales(string id, int onsaleweek, decimal price)
        {
            MenuOnSale menuonsales = await db.MenuOnSales.FirstOrDefaultAsync(p => p.Id == id && (int)p.OnSaleWeek == onsaleweek);

            if (menuonsales == null)
            {
                return(Json(new { succeeded = false }));
            }
            else
            {
                menuonsales.Price = price;
                await db.SaveChangesAsync();

                return(Json(new { succeeded = true }));
            }
        }
Пример #2
0
        /// <summary>
        /// 处理每个菜品
        /// </summary>
        private async Task <FunctionResult> handleDineMenu(List <MenuExtensionWithGift> menuExtensionWithGifts, Dine dine)
        {
            List <DineMenu> addedDineMenus = new List <DineMenu>();

            foreach (MenuExtensionWithGift menuExtensionWithGift in menuExtensionWithGifts)
            {
                MenuExtension menuExtension = menuExtensionWithGift.MenuExtension;
                Menu          menu          = await ctx.Menus
                                              .Include(p => p.MenuPrice)
                                              .FirstOrDefaultAsync(p => p.Id == menuExtension.Id);

                // 菜品判断
                if (menu == null)
                {
                    return(new FunctionResult(false, "未找到菜品", $"No Menu {menuExtension.Id}"));
                }
                if (!menu.Usable)
                {
                    return(new FunctionResult(false, $"{menu.Name} 不可用", $"Menu Disabled {menu.Id}: {menu.Name}"));
                }
                if (menu.Status == MenuStatus.SellOut)
                {
                    return(new FunctionResult(false, $"{menu.Name} 已售完", $"Menu SellOut {menu.Id}: {menu.Name}"));
                }

                DineMenu dineMenu = new DineMenu {
                    Count       = menuExtension.Ordered,
                    OriPrice    = menu.MenuPrice.Price,
                    Price       = menuExtensionWithGift.IsGift ? 0 : menu.MenuPrice.Price,
                    RemarkPrice = 0,

                    Menu    = menu,
                    Remarks = new List <Remark>(),
                    Type    = menuExtensionWithGift.IsGift ? DineMenuType.Gift : DineMenuType.None
                };

                if (!menuExtensionWithGift.IsGift)
                {
                    // 是否排除在总单打折之外
                    bool excludePayDiscount = menu.MenuPrice.ExcludePayDiscount;

                    // 是否打折
                    if (menu.MenuPrice.Discount < 1)
                    {
                        excludePayDiscount = true;
                        dineMenu.Price     = menu.MenuPrice.Price * (decimal)menu.MenuPrice.Discount;
                        dineMenu.Type      = DineMenuType.MenuDiscount;
                    }
                    // 是否为特价菜
                    DayOfWeek  week        = DateTime.Now.DayOfWeek;
                    MenuOnSale menuOnSales = await ctx.MenuOnSales.FirstOrDefaultAsync(p => p.Id == menu.Id && p.OnSaleWeek == week);

                    if (menuOnSales != null)
                    {
                        excludePayDiscount = true;
                        dineMenu.Price     = menuOnSales.Price;
                        dineMenu.Type      = DineMenuType.OnSale;
                    }
                    // 是否为套餐
                    var menuSetMeals = await ctx.MenuSetMeals.FirstOrDefaultAsync(p => p.MenuSetId == menu.Id && p.Menu.IsSetMeal);

                    if (menuSetMeals != null)
                    {
                        excludePayDiscount = true;
                        dineMenu.Type      = DineMenuType.SetMeal;
                    }

                    if (!excludePayDiscount)
                    {
                        dineMenu.Price = menu.MenuPrice.Price * (decimal)dine.Discount;
                        switch (dine.DiscountType)
                        {
                        case DiscountType.PayKind:
                            dineMenu.Type = DineMenuType.PayKindDiscount;
                            break;

                        case DiscountType.Vip:
                            dineMenu.Type = DineMenuType.VipDiscount;
                            break;

                        case DiscountType.Time:
                            dineMenu.Type = DineMenuType.TimeDiscount;
                            break;

                        case DiscountType.Custom:
                            dineMenu.Type = DineMenuType.CustomDiscount;
                            break;
                        }
                    }
                }

                // 菜品备注处理
                foreach (int remarkId in menuExtension.Remarks)
                {
                    Remark remark = await ctx.Remarks.FirstOrDefaultAsync(p => p.Id == remarkId);

                    if (remark == null)
                    {
                        return(new FunctionResult(false, "未找到备注信息", $"No Remark {remarkId}"));
                    }

                    if (!menuExtensionWithGift.IsGift)
                    {
                        dineMenu.RemarkPrice += remark.Price;
                    }

                    dineMenu.Remarks.Add(remark);
                }

                dine.Price    += dineMenu.Price * dineMenu.Count + dineMenu.RemarkPrice;
                dine.OriPrice += dineMenu.OriPrice * dineMenu.Count + dineMenu.RemarkPrice;

                addedDineMenus.Add(dineMenu);
                dine.DineMenus.Add(dineMenu);
            }

            return(new FunctionResult(true, addedDineMenus));
        }