Online Restaurant Website Part 19 Stock Complete

   Online Restaurant Website Part 19 Stock Complete

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 Stock Designing + Implementation for more details click here: watch vedio

Note : first download all item ingredient's photo's click here

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

> StockCategoryMV Model Code : 

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

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

        public void GetItems(int? categoryid)
        {
            Lists = new List<StockItemMV>();
            foreach (var item in db.StockItemTables.Where(c => c.StockItemCategoryID == categoryid).ToList())
            {
                var visiblestatus = db.VisibleStatusTables.Find(item.VisibleStatusID).VisibleStatus;
                var createdby = db.UserTables.Find(item.CreatedBy_UserID).UserName;
                Lists.Add(new StockItemMV()
                {
                    StockItemID = item.StockItemID,
                    StockItemCategory = item.StockItemCategoryTable.StockItemCategory,
                    ItemPhotoPath = item.ItemPhotoPath,
                    StockItemTitle = item.StockItemTitle,
                    ItemSize = item.ItemSize,
                    UnitPrice = item.UnitPrice,
                    RegisterDate = item.RegisterDate,
                    VisibleStatus = visiblestatus,
                    CreatedBy = createdby,
                    OrderType = item.OrderTypeTable.OrderType,
                });
            }
        }
    }
}

> CRU_StockItemMV Model Code : // To Create and get to list of select item. 

using Dblayer;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace PizzaRestaurantDrink.Models
{
    public class CRU_StockItemMV
    {
        PizzaRestaurentandDrinksDbEntities db = new PizzaRestaurentandDrinksDbEntities();

        public CRU_StockItemMV()
        {
            GetCategory();
        }
        public CRU_StockItemMV(int? id)
        {
            GetCategory();

            var edit = db.StockItemTables.Find(id);
            if (edit != null)
            {
                StockItemID = edit.StockItemID;
                StockItemCategoryID = edit.StockItemCategoryID;
                ItemPhotoPath = edit.ItemPhotoPath;
                StockItemTitle = edit.StockItemTitle;
                ItemSize = edit.ItemSize;
                UnitPrice = edit.UnitPrice;
                VisibleStatusID = edit.VisibleStatusID;
                OrderTypeID = edit.OrderTypeID;
            }
            else
            {
                StockItemID = 0;
                StockItemCategoryID = 0;
                ItemPhotoPath = string.Empty;
                StockItemTitle = string.Empty;
                ItemSize = string.Empty;
                UnitPrice = 0;
                RegisterDate = DateTime.Now;
                VisibleStatusID = 0;
                OrderTypeID = 0;
            }

        }
        public int StockItemID { get; set; }
        [Required(ErrorMessage ="Required*")]
        public int StockItemCategoryID { get; set; }

        public string ItemPhotoPath { get; set; }
        [Required(ErrorMessage = "Required*")]
        public string StockItemTitle { get; set; }
        [Required(ErrorMessage = "Required*")]
        public string ItemSize { get; set; }
        [Required(ErrorMessage = "Required*")]
        public double UnitPrice { get; set; }
        public System.DateTime RegisterDate { get; set; }
        [Required(ErrorMessage = "Required*")]
        public int VisibleStatusID { get; set; }
        public int CreatedBy_UserID { get; set; }
        [Required(ErrorMessage = "Required*")]
        public int OrderTypeID { get; set; }

        [NotMapped]
        [Display(Name = "Item Photo")]
        public HttpPostedFileBase PhotoPath { get; set; }

        public virtual List<StockCategoryMV> Categories { get; set; }

        public void GetCategory()
        {
            Categories = new List<StockCategoryMV>();
            foreach (var item in db.StockItemCategoryTables.ToList())
            {
                Categories.Add(new StockCategoryMV(item.StockItemCategoryID)
                {
                    StockCategory = item.StockItemCategory
                });
            }
        }
    }
}

Next we are going to redesign stock view 'StockItem View', code show below 

>  StockItem View Code : 

@model PizzaRestaurantDrink.Models.CRU_StockItemMV
@{
    ViewBag.Title = "Stock";
}
<!-- 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/StockItem")">Stock Items</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>Stock Items</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("StockItem", "Stock", FormMethod.Post, new { @enctype = "multipart/form-data", @class = "form-horizontal" }))
                {
                    @Html.AntiForgeryToken()
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                    @Html.HiddenFor(model => model.StockItemID)
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.DropDownList("StockItemCategoryID", null, "--Choose Item Category--", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.StockItemCategoryID, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.EditorFor(model => model.StockItemTitle, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Item Title" } })
                                    @Html.ValidationMessageFor(model => model.StockItemTitle, "", new { @class = "text-danger" })
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.EditorFor(model => model.ItemSize, new { htmlAttributes = new { @class = "form-control", @placeholder = "Item Size eg, large, small etc" } })
                                    @Html.ValidationMessageFor(model => model.ItemSize, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    @Html.EditorFor(model => model.UnitPrice, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Item Price" } })
                                    @Html.ValidationMessageFor(model => model.UnitPrice, "", 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("OrderTypeID", null, "--Choose Item Type--", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.OrderTypeID, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <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="row">
                                <div class="form-group">
                                    <div class="col-md-8 col-sm-8 col-8">
                                        <label style="margin-left:20px;">Upload Item Picture</label>
                                        <br />
                                        <span class="btn btn-default btn-file">
                                            @Html.TextBoxFor(model => model.PhotoPath, new { @class = "upload-pic form-control-file", @type = "file" })
                                        </span>
                                    </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>
                    </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>Stock Categories</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.StockCategory.Replace(' ', '_').ToLower();

                                if (isfirstcategorychecked == false)
                                {
                                    <li class="nav-item">
                                        <a class="nav-link active" href="#@menucategory" data-toggle="tab" aria-expanded="true">@categorymenu.StockCategory</a>
                                    </li>
                                    isfirstcategorychecked = true;
                                }
                                else
                                {
                                    <li class="nav-item">
                                        <a class="nav-link" href="#@menucategory" data-toggle="tab" aria-expanded="false">@categorymenu.StockCategory</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.StockCategory.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.CreatedBy </p>
                                                            <span>
                                                                @Html.ActionLink("Edit", "StockItem", new { id = item.StockItemID }, new { @class = "btn btn-theme btn-md btn-wide", @style = "margin-bottom:5px;" })
                                                                @Html.ActionLink("Ingredients", "StockItemIngredient", new { id = item.StockItemID }, new { @class = "btn btn-theme btn-md btn-wide" })
                                                            </span>
                                                            <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.CreatedBy </p>
                                                            <span>
                                                                @Html.ActionLink("Edit", "StockItem", new { id = item.StockItemID }, new { @class = "btn btn-theme btn-md btn-wide" })
                                                                @Html.ActionLink("Ingredients", "StockItemIngredient", new { id = item.StockItemID }, new { @class = "btn btn-theme btn-md btn-wide" })
                                                            </span>
                                                            <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