Online Restaurant Website Part 20 Menu Setting

    Online Restaurant Website Part 20 Menu Setting

Hi, Dear's here we learn how to implement PizzaRestaurantDrink Website in Visual Studio using C# ASP.NET MVC. Ilyasoft software company provide full project step by step training on our YouTube Channel ilyasoft software company so now subscribe, share and like for more project base tutorials



In this video we are going to implement Menu Designing + Implementation for more details click here: watch vedio

Note : first download all Items Part 2 click here

First we are going to create StockMenuItemMV for data model to show data in view. code add below:

> StockMenuItemMV Model Code : 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PizzaRestaurantDrink.Models
{
    public class StockMenuItemMV
    {
        public int StockMenuItemID { get; set; }
        public int StockMenuCategoryID { get; set; }
        public string ItemPhotoPath { get; set; }
        public int StockItemID { get; set; }
        public string StockItemTitle { get; set; }
        public string ItemSize { get; set; }
        public double UnitPrice { get; set; }
        public System.DateTime RegisterDate { get; set; }
        public string OrderType { get; set; }
        public string VisibleStatus { get; set; }
        public string CreateBy { get; set; }
    }
}

> MenuCategoryMV Model Code : // To and get to list of item in menu. 

using Dblayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PizzaRestaurantDrink.Models
{
    public class MenuCategoryMV
    {
        PizzaRestaurentandDrinksDbEntities db = new PizzaRestaurentandDrinksDbEntities();
        public MenuCategoryMV(int? categoryid)
        {
            GetItems(categoryid);
        }
        public string MenuCategory { get; set; }
        public List<StockMenuItemMV> Lists { get; set; }

        public void GetItems(int? categoryid)
        {
            Lists = new List<StockMenuItemMV>();
            foreach (var item in db.StockMenuItemTables.Where(c => c.StockMenuCategoryID == categoryid).ToList())
            {
                var visiblestatus = db.VisibleStatusTables.Find(item.VisibleStatusID).VisibleStatus;
                var createdby = db.UserTables.Find(item.CreateBy_UserID).UserName;
                var getitem = db.StockItemTables.Find(item.StockItemID);
                Lists.Add(new StockMenuItemMV()
                {
                    StockMenuItemID = item.StockMenuItemID,
                    StockMenuCategoryID = item.StockMenuCategoryID,
                    StockItemID = item.StockItemID,
                    StockItemTitle = item.StockItemTable.StockItemTitle,
                    VisibleStatus = visiblestatus,
                    CreateBy = createdby,
                    ItemPhotoPath = item.StockItemTable.ItemPhotoPath,
                    ItemSize = item.StockItemTable.ItemSize,
                    UnitPrice = item.StockItemTable.UnitPrice,
                    RegisterDate = item.StockItemTable.RegisterDate,
                    OrderType = getitem.OrderTypeTable.OrderType
                });
            }
        }
    }
}

CRU_StockMenuItemMV Model Code : // To and get to list of item in menu and also create and edit. 

using Dblayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace PizzaRestaurantDrink.Models
{
    public class CRU_StockMenuItemMV
    {
        PizzaRestaurentandDrinksDbEntities db = new PizzaRestaurentandDrinksDbEntities();
        public CRU_StockMenuItemMV()
        {
            GetMenuCategories();
        }
        public CRU_StockMenuItemMV(int? id)
        {
            GetMenuCategories();
            var edit = db.StockMenuItemTables.Find(id);
            if (edit != null)
            {
                StockMenuItemID = edit.StockMenuItemID;
                StockMenuCategoryID = edit.StockMenuCategoryID;
                StockItemID = edit.StockItemID;
                VisibleStatusID = edit.VisibleStatusID;
            }
            else
            {
                StockMenuItemID = 0;
                StockMenuCategoryID = 0;
                StockItemID = 0;
                VisibleStatusID = 0;
            }
        }
        public int StockMenuItemID { get; set; }
        public int StockMenuCategoryID { get; set; }
        public int StockItemID { get; set; }
        public int VisibleStatusID { get; set; }
        public virtual List<MenuCategoryMV> Categories { get; set; }
        public void GetMenuCategories()
        {
            Categories = new List<MenuCategoryMV>();
            foreach (var item in db.StockMenuCategoryTables.ToList())
            {
                Categories.Add(new MenuCategoryMV(item.StockMenuCategoryID)
                {
                    MenuCategory = item.StockMenuCategory
                });
            }
        }
    }
}

StockMenu Action Code : // create and edit. 

public ActionResult StockMenu(int? id)
        {
            if (string.IsNullOrEmpty(Convert.ToString(Session["UserTypeID"])))
            {
                return RedirectToAction("Index", "Home");
            }
            var stockmenuitem = new CRU_StockMenuItemMV(id);
            ViewBag.StockMenuCategoryID = new SelectList(Db.StockMenuCategoryTables.ToList(), "StockMenuCategoryID", "StockMenuCategory", stockmenuitem.StockMenuCategoryID);
            ViewBag.StockItemID = new SelectList(Db.StockItemTables.ToList(), "StockItemID", "StockItemTitle", stockmenuitem.StockItemID);
            ViewBag.VisibleStatusID = new SelectList(Db.VisibleStatusTables.ToList(), "VisibleStatusID", "VisibleStatus", stockmenuitem.VisibleStatusID);
            return View(stockmenuitem);
        }

        [HttpPost]
        public ActionResult StockMenu(CRU_StockMenuItemMV cru_StockMenuItemMV)
        {
            if (string.IsNullOrEmpty(Convert.ToString(Session["UserTypeID"])))
            {
                return RedirectToAction("Index", "Home");
            }
            int userid = 0;
            int.TryParse(Convert.ToString(Session["UserID"]), out userid);
            if (ModelState.IsValid)
            {
                if (cru_StockMenuItemMV.StockMenuItemID == 0)
                {
                    var checkexist = Db.StockMenuItemTables.Where(
                        s => s.StockMenuCategoryID == cru_StockMenuItemMV.StockMenuCategoryID
                        && s.StockItemID == cru_StockMenuItemMV.StockItemID).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var newitem = new StockMenuItemTable();
                        newitem.StockMenuCategoryID = cru_StockMenuItemMV.StockMenuCategoryID;
                        newitem.StockItemID = cru_StockMenuItemMV.StockItemID;
                        newitem.VisibleStatusID = cru_StockMenuItemMV.VisibleStatusID;
                        newitem.CreateBy_UserID = userid;
                        Db.StockMenuItemTables.Add(newitem);
                        Db.SaveChanges();
                        return RedirectToAction("StockMenu", new { id = 0 });
                    }
                    else
                    {
                        ModelState.AddModelError("StockItemID", "Already Exist!");
                    }
                }
                else
                {
                    var checkexist = Db.StockMenuItemTables.Where(
                        s => s.StockMenuCategoryID == cru_StockMenuItemMV.StockMenuCategoryID
                        && s.StockItemID == cru_StockMenuItemMV.StockItemID 
                        && s.StockMenuItemID != cru_StockMenuItemMV.StockMenuItemID).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var edititem = Db.StockMenuItemTables.Find(cru_StockMenuItemMV.StockMenuItemID);
                        edititem.StockMenuCategoryID = cru_StockMenuItemMV.StockMenuCategoryID;
                        edititem.StockItemID = cru_StockMenuItemMV.StockItemID;
                        edititem.VisibleStatusID = cru_StockMenuItemMV.VisibleStatusID;
                        edititem.CreateBy_UserID = userid;
                        Db.Entry(edititem).State = System.Data.Entity.EntityState.Modified;
                        Db.SaveChanges();
                        return RedirectToAction("StockMenu", new { id = 0 });
                    }
                    else
                    {
                        ModelState.AddModelError("StockItemID", "Already Exist!");
                    }
                }
            }
            ViewBag.StockMenuCategoryID = new SelectList(Db.StockMenuCategoryTables.ToList(), "StockMenuCategoryID", "StockMenuCategory", cru_StockMenuItemMV.StockMenuCategoryID);
            ViewBag.StockItemID = new SelectList(Db.StockItemTables.ToList(), "StockItemID", "StockItemTitle", cru_StockMenuItemMV.StockItemID);
            ViewBag.VisibleStatusID = new SelectList(Db.VisibleStatusTables.ToList(), "VisibleStatusID", "VisibleStatus", cru_StockMenuItemMV.VisibleStatusID);
            return View(cru_StockMenuItemMV);
        }


Next we are going to design menu view 'StockMenu View', code show below 

>  StockMenu View Code : 

@model PizzaRestaurantDrink.Models.CRU_StockMenuItemMV
@{
    ViewBag.Title = "Menu";
}
<!-- Breadcrumb Start -->
<div class="bread-crumb">
    <div class="container">
        <div class="matter">
            <h2>Stock</h2>
            <ul class="list-inline">
                <li class="list-inline-item"><a href="@Url.Content("~/Home/Index")">HOME</a></li>
                <li class="list-inline-item"><a href="@Url.Content("~/Stock/StockMenu?id=0")">Stock Menu</a></li>
            </ul>
        </div>
    </div>
</div>
<!-- Breadcrumb End -->
<div class="contactus">
    <div class="container">
        <div class="row">
            <!-- Title Content Start -->
            <div class="col-sm-12 commontop text-center">
                <h4>Menu</h4>
                <div class="divider style-1 center">
                    <span class="hr-simple left"></span>
                    <i class="icofont icofont-ui-press hr-icon"></i>
                    <span class="hr-simple right"></span>
                </div>
            </div>
            <!-- Title Content End -->

            <div class="col-md-12 col-12">
                <!--  user type form Start  -->
                @using (Html.BeginForm("StockMenu", "Stock", FormMethod.Post, new { @enctype = "multipart/form-data", @class = "form-horizontal" }))
                {
                    @Html.AntiForgeryToken()
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                    @Html.HiddenFor(model => model.StockMenuItemID)
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.DropDownList("StockMenuCategoryID", null, "--Choose Menu--", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.StockMenuCategoryID, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.DropDownList("StockItemID", null, "--Choose Item--", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.StockItemID, "", new { @class = "text-danger" })
                                </div>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.DropDownList("VisibleStatusID", null, "--Choose Status--", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.VisibleStatusID, "", new { @class = "text-danger" })
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-4 col-sm-4 col-4">
                                    <div class="buttons">
                                        @if (Model.StockItemID == 0)
                                        {
                                            <input class="btn btn-theme btn-md btn-wide" type="submit" value="Create" />
                                        }
                                        else
                                        {
                                            <input class="btn btn-theme btn-md btn-wide" type="submit" value="Update" />
                                        }
                                    </div>
                                </div>
                            </div>

                        </div>
                    </div>
                }
                <!--  user type form End  -->
            </div>

        </div>
    </div>
</div>

<div class="menu">
    <div class="menu-inner">
        <div class="container">
            <div class="row ">
                <div class="col-sm-12 col-12 commontop text-center">
                    <h4>Menu</h4>
                    <div class="divider style-1 center">
                        <span class="hr-simple left"></span>
                        <i class="icofont icofont-ui-press hr-icon"></i>
                        <span class="hr-simple right"></span>
                    </div>
                </div>

                <!--  List Start  -->
                <div class="col-sm-12 col-12">
                    <!--  Menu Tabs Start  -->
                    <ul class="nav nav-tabs list-inline">
                        @{
                            bool isfirstcategorychecked = false;
                            foreach (var categorymenu in Model.Categories)
                            {
                                var menucategory = categorymenu.MenuCategory.Replace(' ', '_').ToLower();

                                if (isfirstcategorychecked == false)
                                {
                                    <li class="nav-item">
                                        <a class="nav-link active" href="#@menucategory" data-toggle="tab" aria-expanded="true">@categorymenu.MenuCategory</a>
                                    </li>
                                    isfirstcategorychecked = true;
                                }
                                else
                                {
                                    <li class="nav-item">
                                        <a class="nav-link" href="#@menucategory" data-toggle="tab" aria-expanded="false">@categorymenu.MenuCategory</a>
                                    </li>
                                }

                            }
                        }
                    </ul>
                    <!--  Menu Tabs Start  -->
                    <!--  Menu Tabs Content Start  -->
                    <div class="tab-content">
                        <!--  Menu Tab Start  -->
                        @{
                            bool isfirsttabactive = false;
                            foreach (var category in Model.Categories)
                            {
                                var menucategory = category.MenuCategory.Replace(' ', '_').ToLower();

                                if (isfirsttabactive == false)
                                {
                                    <div class="tab-pane show active" id="@menucategory">
                                        <div class="row">
                                            @foreach (var item in category.Lists)
                                            {
                                                <div class="col-md-6 col-sm-6 col-12">
                                                    <!-- Box Start -->
                                                    <div class="box">
                                                        <div class="image">
                                                            <img src="@Url.Content(item.ItemPhotoPath)" alt="image" title="image" class="img-fluid" style="border-radius: 50%;" />
                                                        </div>
                                                        <div class="caption">
                                                            <h4>@item.StockItemTitle - @item.ItemSize | (@item.VisibleStatus)</h4>
                                                            <p class="des">Order Type : @item.OrderType  | Reg Date :  @item.RegisterDate | Created By : @item.CreateBy </p>
                                                            <div class="price">PRICE : @item.UnitPrice PKR</div>
                                                        </div>
                                                    </div>
                                                    <!-- Box End -->
                                                </div>
                                            }
                                        </div>
                                    </div>
                                    isfirsttabactive = true;
                                }
                                else
                                {
                                    <div class="tab-pane" id="@menucategory">
                                        <div class="row">
                                            @foreach (var item in category.Lists)
                                            {
                                                <div class="col-md-6 col-sm-6 col-12">
                                                    <!-- Box Start -->
                                                    <div class="box">
                                                        <div class="image">
                                                            <img src="@Url.Content(item.ItemPhotoPath)" alt="image" title="@item.StockItemTitle" class="img-fluid" style="width:130px; height:200px; max-width: 100%; height: auto;" />

                                                        </div>
                                                        <div class="caption">
                                                            <h4>@item.StockItemTitle - @item.ItemSize | (@item.VisibleStatus)</h4>
                                                            <p class="des">Order Type : @item.OrderType  | Reg Date :  @item.RegisterDate | Created By : @item.CreateBy </p>
                                                            <div class="price">@item.UnitPrice PKR</div>
                                                        </div>
                                                    </div>
                                                    <!-- Box End -->
                                                </div>
                                            }
                                        </div>
                                    </div>
                                }
                            }
                        }
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

so once all above steps is done then run the application... 

Result : 






Comments