/// <summary>
        /// レシピが選択された
        /// </summary>
        private void RecipiListSelected(object sender, EventArgs e)
        {
            productionRecipe.RecipeName = recipeSelectWindow.Combobox_Recipe.SelectedItem.ToString(); // 選択されたレシピ名を取得

            DBSelect        dbSelect   = new DBSelect();
            List <string[]> recipeData = dbSelect.SelectData("MaterialRecipes", null, new string[] { "RecipeId", "MaterialId", "RequiredBuildingTypeId", "UnitProductionTime", "UnitProductionPieces" }, "Name = @NAME", new List <string[]>()
            {
                new string[] { "@NAME", productionRecipe.RecipeName }
            }, null);

            string[] recipe = recipeData[0];    // レシピデータを取り出す

            // 取り出したデータを格納
            productionRecipe.RecipeId = recipe[0];                                 // レシピID
            productionRecipe.ProductionMaterial.MaterialId = recipe[1];            // 生産物ID
            productionRecipe.BuildingToUse.TypeId          = recipe[2];            // 要求建物タイプID
            productionRecipe.UnitProductionTime            = int.Parse(recipe[3]); // 単位生産時間
            productionRecipe.UnitProductionPieces          = int.Parse(recipe[4]); // 単位生産数

            // 生産品名を取得
            List <string[]> materialName = dbSelect.SelectData("Materials", null, new string[] { "Name", "IsOre" }, "MaterialId = @MATERIALID", new List <string[]>()
            {
                new string[] { "@MATERIALID", productionRecipe.ProductionMaterial.MaterialId }
            }, null);

            productionRecipe.ProductionMaterial.Name = materialName[0][0];
            productionRecipe.IsOre = int.Parse(materialName[0][1]);

            // 鉱石だったら純度ラジオを表示する
            recipeSelectWindow.ChangeVisibiilityRadios(productionRecipe.IsOre);

            // 要求素材を取得
            productionRecipe.RequiredMaterials.Clear();

            List <string[]> requiredMaterials = dbSelect.SelectData("RequiredMaterials RM", "LEFT JOIN Materials M ON RM.RequiredMaterialId = M.MaterialId", new string[] { "RequiredMaterialId", "Name", "NumberOfRequiredMaterial" }, "RecipeId = @RECIPEID", new List <string[]>()
            {
                new string[] { "@RECIPEID", productionRecipe.RecipeId }
            }, null);

            foreach (string[] required in requiredMaterials)
            {
                RequiredMaterial requiredMaterial = new RequiredMaterial();
                requiredMaterial.MaterialId       = required[0];
                requiredMaterial.Name             = required[1];
                requiredMaterial.NumberOfRequired = int.Parse(required[2]);

                productionRecipe.RequiredMaterials.Add(requiredMaterial);
            }

            recipeSelectWindow.BorderAttentionOnRecipeSelect(false);

            // 要求素材を表示させる
            RequiedMaterialsChange();

            // 施設リストを取得して入れる
            SetBuildingListToCombox(productionRecipe.BuildingToUse.TypeId);
        }
Exemplo n.º 2
0
        public IActionResult SetFoodRecipe(RequiredMaterialVm Rl)
        {
            var raw = _context.FoodItems.AsNoTracking().ToList();

            ViewBag.RawItem = new SelectList(raw, "FoodItemId", "FoodName");

            foreach (var item in Rl.MaterialVms)
            {
                RequiredMaterial a = new RequiredMaterial();
                a.RequiredMaterialId = Rl.RequiredMaterialId;
                a.FoodItemId         = Rl.FoodItemId;
                a.IngredientId       = item.IngredientId;
                a.QuantityInGram     = item.QuantityInGram;
                _context.RequiredMaterial.Add(a);
                _context.SaveChanges();
            }
            ViewBag.Success = "You have succesfully added food recipe.";
            ModelState.Clear();
            return(View());
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Order()
        {
            var Discount        = HttpContext.Session.GetString("Discount");
            var CustomerDetails = new Customers();
            var user            = await userManager.GetUserAsync(User);

            var user1 = await userManager.FindByEmailAsync(User.Identity.Name);

            if (await userManager.IsInRoleAsync(user, "Customer") == true)
            {
                CustomerDetails = _context.Customers.
                                  Where(s => s.MobileNumber == user.PhoneNumber)
                                  .FirstOrDefault();
            }
            var ReservedTable = HttpContext.Session.Get <TableResevationCart>("Table");

            if (ReservedTable != null)
            {
                CustomerOrderedTable abc = new CustomerOrderedTable()
                {
                    CustomerOrderedTableId = 0,
                    CustomersId            = CustomerDetails.CustomersId
                };
                abc.BookTimeFrom = ReservedTable.BookTimeFrom;
                abc.BookTimeTo   = ReservedTable.BookTimeTo;
                abc.Date         = ReservedTable.Date;
                abc.TableId      = ReservedTable.TableId;
                await _context.CustomerOrderedTable.AddAsync(abc);

                await _context.SaveChangesAsync();

                var update = _context.Table.Where(a => a.TableId == ReservedTable.TableId).FirstOrDefault();
                update.BookedStatus = true;
                _context.Table.Update(update);
                await _context.SaveChangesAsync();

                var orderlist = HttpContext.Session.Get <List <FoodCart> >("FoodS");
                if (orderlist != null)
                {
                    foreach (var item in orderlist)
                    {
                        CustomerOrderDetails ab = new CustomerOrderDetails()
                        {
                            CustomerOrderDetailsId = 0,
                            FoodItemId             = item.FoodItemId,
                            Quantity = item.Quantity,

                            PaymentStatus          = false,
                            CustomerOrderedTableId = abc.CustomerOrderedTableId,
                        };
                        if (Discount != null)
                        {
                            ab.OfferId = Convert.ToInt32(Discount);
                        }
                        await _context.CustomerOrderDetails.AddAsync(ab);

                        await _context.SaveChangesAsync();
                    }
                }
            }
            else
            {
                CustomerOrderedTable tabless = new CustomerOrderedTable()
                {
                    CustomerOrderedTableId = 0,
                    CustomersId            = CustomerDetails.CustomersId,
                    TableId = 1,

                    Date = DateTime.Now
                };

                await _context.CustomerOrderedTable.AddAsync(tabless);

                await _context.SaveChangesAsync();


                var orderlist = HttpContext.Session.Get <List <FoodCart> >("FoodS");
                if (orderlist != null)
                {
                    foreach (var item in orderlist)
                    {
                        CustomerOrderDetails ab = new CustomerOrderDetails()
                        {
                            CustomerOrderDetailsId = 0,
                            FoodItemId             = item.FoodItemId,
                            Quantity = item.Quantity,

                            PaymentStatus          = false,
                            CustomerOrderedTableId = tabless.CustomerOrderedTableId
                        };
                        if (Discount != null)
                        {
                            ab.OfferId = Convert.ToInt32(Discount);
                        }
                        await _context.CustomerOrderDetails.AddAsync(ab);

                        await _context.SaveChangesAsync();
                    }
                }
            }

            var FoodItemList = HttpContext.Session.Get <List <FoodCart> >("FoodS");

            foreach (var item in FoodItemList)
            {
                var IngredientList = await _context.RequiredMaterial
                                     .AsNoTracking().Where(a => a.FoodItemId == item.FoodItemId).ToListAsync();

                for (int i = 0; i < IngredientList.Count(); i++)
                {
                    var Requiered = await _context.RequiredMaterial.AsNoTracking()
                                    .Where(a => a.RequiredMaterialId == IngredientList[i].RequiredMaterialId)
                                    .FirstOrDefaultAsync();

                    var NeedToUpdateMaterials = await _context.StockDetails.
                                                AsNoTracking().Where(a => a.IngredientId == IngredientList[i].IngredientId)
                                                .LastOrDefaultAsync();

                    for (int j = 0; j < item.Quantity; j++)
                    {
                        var quaantity = NeedToUpdateMaterials.AvailableStock - Requiered.QuantityInGram;
                        NeedToUpdateMaterials.AvailableStock = quaantity;
                        _context.StockDetails.Update(NeedToUpdateMaterials);
                        await _context.SaveChangesAsync();

                        _context.Entry <StockDetails>(NeedToUpdateMaterials).State = EntityState.Detached;
                    }
                    NeedToUpdateMaterials = new StockDetails();
                    Requiered             = new RequiredMaterial();
                }

                IngredientList = new List <RequiredMaterial>();
            }



            HttpContext.Session.Remove("FoodS");
            HttpContext.Session.Remove("Table");
            HttpContext.Session.Remove("Discount");

            return(RedirectToAction("Index", "Home"));
        }