Online Restaurant Website Part 21 Deal Header

Online Restaurant Website Part 21 Deal Header

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

Note : first download all deals images

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

> StockDealHeaderMV Model Code : 

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

namespace PizzaRestaurantDrink.Models
{
    public class StockDealHeaderMV
    {
        PizzaRestaurentandDrinksDbEntities db = new PizzaRestaurentandDrinksDbEntities();
        public StockDealHeaderMV(int? dealid)
        {
            GetDealItems(dealid);
        }
        public int StockDealID { get; set; }
        public string StockDealTitle { get; set; }
        public double DealPrice { get; set; }
        public string DealPhoto { get; set; }
        public string VisibleStatus { get; set; }
        public System.DateTime StockDealStartDate { get; set; }
        public double Discount { get; set; }
        public System.DateTime StockDealEndDate { get; set; }
        public System.DateTime StockDealRegisterDate { get; set; }
        public string DealItems { get; set; }

        public void GetDealItems(int? dealid)
        {
            foreach (var item in db.StockDealDetailTables.ToList())
            {
                DealItems = DealItems + " | " + item.StockItemTable.StockItemTitle + " (Qty : " + item.Quantity + ")";
            }
        }
    }
}

CRU_StockDealMV Model Code : // To and get to list of item in deals also. 

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_StockDealMV
    {
        PizzaRestaurentandDrinksDbEntities db = new PizzaRestaurentandDrinksDbEntities();
        public CRU_StockDealMV()
        {
            GetDeal();
        }
        public CRU_StockDealMV(int? id)
        {
            GetDeal();
            var editdeal = db.StockDealTables.Find(id);
            if (editdeal != null)
            {
                StockDealID = editdeal.StockDealID;
                StockDealTitle = editdeal.StockDealTitle;
                DealPrice = editdeal.DealPrice;
                VisibleStatusID = editdeal.VisibleStatusID;
                StockDealStartDate = editdeal.StockDealStartDate;
                Discount = editdeal.Discount;
                StockDealEndDate = editdeal.StockDealEndDate;
                StockDealRegisterDate = editdeal.StockDealRegisterDate;
            }
            else
            {
                StockDealID = 0;
                StockDealTitle = string.Empty;
                DealPrice = 0;
                VisibleStatusID = 0;
                StockDealStartDate = DateTime.Now;
                Discount = 0;
                StockDealEndDate = DateTime.Now.AddMonths(3);
                StockDealRegisterDate = DateTime.Now;
            }
        }
        public int StockDealID { get; set; }
        public string StockDealTitle { get; set; }
        public double DealPrice { get; set; }
        public int VisibleStatusID { get; set; }
        public Nullable<System.DateTime> StockDealStartDate { get; set; } = DateTime.Now;
        public Nullable<double> Discount { get; set; }
        public Nullable<System.DateTime> StockDealEndDate { get; set; } = DateTime.Now.AddMonths(3);
        public System.DateTime StockDealRegisterDate { get; set; } = DateTime.Now;
        
        [NotMapped]
        [Display(Name = "Deal Photo")]
        public HttpPostedFileBase PhotoPath { get; set; }


        public virtual List<StockDealHeaderMV> Deals { get; set; }

        public void GetDeal()
        {
            Deals = new List<StockDealHeaderMV>();
            foreach (var item in db.StockDealTables.ToList())
            {
                var visible = db.VisibleStatusTables.Find(item.VisibleStatusID).VisibleStatus;
                Deals.Add(new StockDealHeaderMV(item.StockDealID)
                {
                    StockDealID = item.StockDealID,
                    StockDealTitle = item.StockDealTitle,
                    DealPhoto = item.DealPhoto,
                    DealPrice = item.DealPrice,
                    VisibleStatus = visible,
                    StockDealStartDate = Convert.ToDateTime(item.StockDealStartDate),
                    Discount = (double)item.Discount,
                    StockDealEndDate = Convert.ToDateTime(item.StockDealEndDate),
                    StockDealRegisterDate = item.StockDealRegisterDate
                });
            }
        }
    }
}

StockDeal Action Code : // create and edit. 

[HttpGet]
        public ActionResult StockDeal(int? id)
        {
            if (string.IsNullOrEmpty(Convert.ToString(Session["UserTypeID"])))
            {
                return RedirectToAction("Index", "Home");
            }
            var stockdeals = new CRU_StockDealMV(id);
            ViewBag.VisibleStatusID = new SelectList(Db.VisibleStatusTables.ToList(), "VisibleStatusID", "VisibleStatus", stockdeals.VisibleStatusID);
            return View(stockdeals);
        }

        [HttpPost]
        public ActionResult StockDeal(CRU_StockDealMV cru_StockDealMV)
        {
            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_StockDealMV.StockDealID == 0)
                {
                    var checkexist = Db.StockDealTables.Where(
                        s => s.StockDealTitle == cru_StockDealMV.StockDealTitle).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var newdeal = new StockDealTable();
                        newdeal.StockDealTitle = cru_StockDealMV.StockDealTitle;
                        newdeal.DealPrice = cru_StockDealMV.DealPrice;
                        newdeal.VisibleStatusID = cru_StockDealMV.VisibleStatusID;
                        newdeal.StockDealStartDate = cru_StockDealMV.StockDealStartDate;
                        newdeal.Discount = cru_StockDealMV.Discount;
                        newdeal.StockDealEndDate = cru_StockDealMV.StockDealEndDate;
                        newdeal.StockDealRegisterDate = cru_StockDealMV.StockDealRegisterDate;
                        Db.StockDealTables.Add(newdeal);
                        Db.SaveChanges();
                        if (cru_StockDealMV.PhotoPath != null)
                        {
                            var folder = "~/Content/Deals";
                            var photoname = string.Format("{0}.jpg", newdeal.StockDealID);
                            var response = HelperClass.FileUpload.UploadPhoto(cru_StockDealMV.PhotoPath, folder, photoname);
                            if (response)
                            {
                                var photo = string.Format("{0}/{1}", folder, photoname);
                                newdeal.DealPhoto = photo;
                                Db.Entry(newdeal).State = System.Data.Entity.EntityState.Modified;
                                Db.SaveChanges();
                            }
                        }
                        return RedirectToAction("StockDeal", new { id = 0 });
                    }
                    else
                    {
                        ModelState.AddModelError("StockDealTitle", "Already Exist!");
                    }
                }
                else
                {
                    var checkexist = Db.StockDealTables.Where(
                        s => s.StockDealTitle == cru_StockDealMV.StockDealTitle
                        && s.StockDealID != cru_StockDealMV.StockDealID).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var editdeal = Db.StockDealTables.Find(cru_StockDealMV.StockDealID);
                        editdeal.StockDealTitle = cru_StockDealMV.StockDealTitle;
                        editdeal.DealPrice = cru_StockDealMV.DealPrice;
                        editdeal.VisibleStatusID = cru_StockDealMV.VisibleStatusID;
                        editdeal.StockDealStartDate = cru_StockDealMV.StockDealStartDate;
                        editdeal.Discount = cru_StockDealMV.Discount;
                        editdeal.StockDealEndDate = cru_StockDealMV.StockDealEndDate;
                        editdeal.StockDealRegisterDate = cru_StockDealMV.StockDealRegisterDate;
                        Db.Entry(editdeal).State = System.Data.Entity.EntityState.Modified;
                        Db.SaveChanges();
                        if (cru_StockDealMV.PhotoPath != null)
                        {
                            var folder = "~/Content/Deals";
                            var photoname = string.Format("{0}.jpg", editdeal.StockDealID);
                            var response = HelperClass.FileUpload.UploadPhoto(cru_StockDealMV.PhotoPath, folder, photoname);
                            if (response)
                            {
                                var photo = string.Format("{0}/{1}", folder, photoname);
                                editdeal.DealPhoto = photo;
                                Db.Entry(editdeal).State = System.Data.Entity.EntityState.Modified;
                                Db.SaveChanges();
                            }
                        }
                        return RedirectToAction("StockDeal", new { id = 0 });
                    }
                    else
                    {
                        ModelState.AddModelError("StockDealTitle", "Already Exist!");
                    }
                }
            }
            ViewBag.VisibleStatusID = new SelectList(Db.VisibleStatusTables.ToList(), "VisibleStatusID", "VisibleStatus", cru_StockDealMV.VisibleStatusID);
            return View(cru_StockDealMV);
        }

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

>  StockDeal View Code : 

@model PizzaRestaurantDrink.Models.CRU_StockDealMV
@{
    ViewBag.Title = "Stock";
}
<!-- Breadcrumb Start -->
<div class="bread-crumb">
    <div class="container">
        <div class="matter">
            <h2>Stock Deals</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/StockDeal")">Stock Deals</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 Deals</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("StockDeal", "Stock", FormMethod.Post, new { @enctype = "multipart/form-data", @class = "form-horizontal" }))
                {
                    @Html.AntiForgeryToken()
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                    @Html.HiddenFor(model => model.StockDealID)
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    Deal Title :
                                    @Html.EditorFor(model => model.StockDealTitle, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Deal Title" } })
                                    @Html.ValidationMessageFor(model => model.StockDealTitle, "", new { @class = "text-danger" })
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    Deal Price :
                                    @Html.EditorFor(model => model.DealPrice, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Deal Price" } })
                                    @Html.ValidationMessageFor(model => model.DealPrice, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12 col-sm-12 col-12">
                                    Discount :
                                    @Html.EditorFor(model => model.Discount, new { htmlAttributes = new { @class = "form-control", @placeholder = "Enter Discount" } })
                                    @Html.ValidationMessageFor(model => model.Discount, "", 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">
                                    Select Status :
                                    @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 Deal Photo</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.StockDealID == 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 Deals</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 Content Start  -->
                    <div class="tab-content">
                        <!--  Menu Tab Start  -->
                        <div class="row">
                            @{
                                foreach (var deal in Model.Deals)
                                {
                                    <div class="col-md-6 col-sm-6 col-12">
                                        <!-- Box Start -->
                                        <div class="box">
                                            <div class="image">
                                                <img src="@Url.Content(deal.DealPhoto)" alt="image" title="@deal.StockDealTitle" class="img-fluid" style="width:130px; height:200px; max-width: 100%; height: auto;" />

                                            </div>
                                            <div class="caption">
                                                <h4>@deal.StockDealTitle | Discount: @deal.Discount PKR | Reg-Date : @deal.StockDealRegisterDate.ToString("dd/MM/yyyy") | Start-Date: @deal.StockDealStartDate.ToString("dd/MM/yyyy") | End-Date: @deal.StockDealEndDate.ToString("dd/MM/yyyy") | (@deal.VisibleStatus)</h4>
                                                <p class="des">Deal Items : (@deal.DealItems)</p>
                                                <span>
                                                    @Html.ActionLink("Edit", "StockDeal", new { id = deal.StockDealID }, new { @class = "btn btn-theme btn-md btn-wide" })
                                                    @Html.ActionLink("Add Items", "StockDealItem", new { dealid = deal.StockDealID, stockdealdetailid = 0 }, new { @class = "btn btn-theme btn-md btn-wide" })
                                                </span>
                                                <div class="price">@deal.DealPrice PKR</div>
                                            </div>
                                        </div>
                                        <!-- Box End -->
                                    </div>
                                }
                            }
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

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






Comments