eCommerce Website Part 19 Main Categories

  eCommerce Website  Part 19 Main Categories

Hi, Dear's here we learn how to implement eCommerce 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 Main Categories for more details click here: watch vedio

Note : First we are going to Make some changes in database.

MainCategoryMV Code : 

public class MainCategoryMV
    {
        public int Main_CategoryID { get; set; }
        public string Main_CategoryTitle { get; set; }
        public string CreatedBy { get; set; }
        public string CreatedDateTime { get; set; }
        public string Status { get; set; }
    }

> Reg_MainCategoryMV Code : 

 public class Reg_MainCategoryMV
    {
        public Reg_MainCategoryMV()
        {
            List_Status = new List<StatusMV>();
            foreach (var status in new DatabaseLayer.Pro_EcommerceDbEntities().StatusTables.ToList())
            {
                List_Status.Add(new StatusMV() { StatusID = status.StatusID, StatusTitle = status.StatusTitle });
            }

            List_MainCategories = new List<MainCategoryMV>();
            foreach (var category in new DatabaseLayer.Pro_EcommerceDbEntities().MainCategoryTables.ToList())
            {
                var createdby = new DatabaseLayer.Pro_EcommerceDbEntities().UserTables.Find(category.CreatedBy_UserID);
                var status = new DatabaseLayer.Pro_EcommerceDbEntities().StatusTables.Find(category.StatusID);
                var adddatetime = category.CreatedDate + category.CreatedTime;
                List_MainCategories.Add(new MainCategoryMV()
                {
                    Main_CategoryID = category.Main_CategoryID,
                    Main_CategoryTitle = category.Main_CategoryTitle,
                    CreatedBy = createdby.UserName,
                    CreatedDateTime = adddatetime.ToString(),
                    Status = status.StatusTitle
                });
            }
        }
        public Reg_MainCategoryMV(int? id)
        {
            List_Status = new List<StatusMV>();
            foreach (var status in new DatabaseLayer.Pro_EcommerceDbEntities().StatusTables.ToList())
            {
                List_Status.Add(new StatusMV() { StatusID = status.StatusID, StatusTitle = status.StatusTitle });
            }

            List_MainCategories = new List<MainCategoryMV>();
            foreach (var category in new DatabaseLayer.Pro_EcommerceDbEntities().MainCategoryTables.ToList())
            {
                var createdby = new DatabaseLayer.Pro_EcommerceDbEntities().UserTables.Find(category.CreatedBy_UserID);
                var status = new DatabaseLayer.Pro_EcommerceDbEntities().StatusTables.Find(category.StatusID);
                var adddatetime = category.CreatedDate + category.CreatedTime;
                List_MainCategories.Add(new MainCategoryMV()
                {
                    Main_CategoryID = category.Main_CategoryID,
                    Main_CategoryTitle = category.Main_CategoryTitle,
                    CreatedBy = createdby.UserName,
                    CreatedDateTime = adddatetime.ToString(),
                    Status = status.StatusTitle
                });
            }

            var editcategory = new DatabaseLayer.Pro_EcommerceDbEntities().MainCategoryTables.Find(id);
            if (editcategory != null)
            {
                Main_CategoryID = editcategory.Main_CategoryID;
                Main_CategoryTitle = editcategory.Main_CategoryTitle;
                StatusID = editcategory.StatusID;
            }
            else
            {
                Main_CategoryID = 0;
                Main_CategoryTitle = string.Empty;
                StatusID = 0;
            }

        }
        public int Main_CategoryID { get; set; }

        [Required(ErrorMessage = "Required*")]
        [Display(Name = "Main Category")]
        public string Main_CategoryTitle { get; set; }

        [Required(ErrorMessage = "Required*")]
        [Display(Name = "Status")]
        public int StatusID { get; set; }
        public virtual List<MainCategoryMV> List_MainCategories { get; set; }
        public virtual List<StatusMV> List_Status { get; set; }
    }

Next Create Stock Controller and add below code. 

Pro_EcommerceDbEntities DB = new Pro_EcommerceDbEntities();
        // GET: Stock
        public ActionResult MainCategory(int? id)
        {
            var category = new Reg_MainCategoryMV(id);
            return View(category);
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult MainCategory(Reg_MainCategoryMV mainCategory)
        {
            if (string.IsNullOrEmpty(Convert.ToString(Session["UserID"])))
            {
                return RedirectToAction("Login", "User");
            }
            int userid = 0;
            int.TryParse(Convert.ToString(Session["UserID"]), out userid);

            if (ModelState.IsValid)
            {
                if (mainCategory.Main_CategoryID == 0)
                {
                    var checkexist = DB.MainCategoryTables.Where(c => c.Main_CategoryTitle == mainCategory.Main_CategoryTitle).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var createcategory = new MainCategoryTable();
                        createcategory.Main_CategoryTitle = mainCategory.Main_CategoryTitle;
                        createcategory.StatusID = mainCategory.StatusID;
                        createcategory.CreatedDate = DateTime.Now.Date;
                        createcategory.CreatedTime = DateTime.Now.TimeOfDay;
                        createcategory.CreatedBy_UserID = userid;
                        DB.MainCategoryTables.Add(createcategory);
                        DB.SaveChanges();
                        return RedirectToAction("MainCategory",new { id = 0});
                    }
                    else {
                        ModelState.AddModelError("Main_CategoryTitle","Already Added!");
                    }
                }
                else
                {
                    var checkexist = DB.MainCategoryTables.Where(c => c.Main_CategoryTitle == mainCategory.Main_CategoryTitle && c.Main_CategoryID != mainCategory.Main_CategoryID).FirstOrDefault();
                    if (checkexist == null)
                    {
                        var editcategory = DB.MainCategoryTables.Find(mainCategory.Main_CategoryID);
                        editcategory.Main_CategoryTitle = mainCategory.Main_CategoryTitle;
                        editcategory.StatusID = mainCategory.StatusID;
                        editcategory.CreatedBy_UserID = userid;
                        DB.Entry(editcategory).State = System.Data.Entity.EntityState.Modified;
                        DB.SaveChanges();
                        return RedirectToAction("MainCategory", new { id = 0 });
                    }
                    else
                    {
                        ModelState.AddModelError("Main_CategoryTitle", "Already Added!");
                    }
                }
            }
            return View(mainCategory);
        }

 > MainCategory View Code : 

@model eCommerceUI.Models.Reg_MainCategoryMV
@{
    ViewBag.Title = "Categories";
}
<div class="container">
    <div class="page-width">
        @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            <hr />
            <h3 class="docs-title text-center">Main Category</h3>
            <div class="form-horizontal">
                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                @Html.HiddenFor(model => model.Main_CategoryID)
                <div class="row" style="margin-left:1px;">
                    <div class="form-group col-md-3">
                        @Html.LabelFor(model => model.Main_CategoryTitle, "Enter Main Category Title", htmlAttributes: new { @class = "control-label" })
                        @Html.EditorFor(model => model.Main_CategoryTitle, new { htmlAttributes = new { @class = "form-control" } })
                        @Html.ValidationMessageFor(model => model.Main_CategoryTitle, "", new { @class = "text-danger" })
                    </div>

                    <div class="form-group col-md-3">
                        @Html.LabelFor(model => model.StatusID, "Select Status", htmlAttributes: new { @class = "control-label" })
                        @Html.DropDownList("StatusID", new SelectList(Model.List_Status, "StatusID", "StatusTitle", Model.StatusID), "--Choose--", htmlAttributes: new { @class = "form-control" })
                        @Html.ValidationMessageFor(model => model.StatusID, "", new { @class = "text-danger" })
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-offset-2 col-md-10">
                        @if (Model.Main_CategoryID == 0)
                        {
                            <input type="submit" value="Create" class="btn btn--secondary" />
                        }
                        else
                        {
                            <input type="submit" value="Update" class="btn btn--secondary" />
                        }
                    </div>
                </div>
            </div>

        }
        <hr />
        <h3 class="docs-title">Main Categories List</h3>
        <form autocomplete="off">
            <p>
                <div style="float:right;">
                    <input type="text"
                           style="background-image: url('@Url.Content("~/Content/Template/images/searchicon.png")');
                           background-position: 10px 5px;
                           background-repeat: no-repeat;
                           font-size: 16px;
                           padding: 12px 20px 12px 40px;
                           border: 1px solid #ddd;
                           margin-bottom: 12px; "
                           class="search form-control"
                           id="myInput"
                           placeholder="What you looking for?">
                </div>
            </p>
        </form>

        <div class="table">
            <table class="responsive-table">
                <thead>
                    <tr>
                        <td>#Unique No</td>
                        <td>Main Category</td>
                        <td>Created Date Time</td>
                        <td>Create By</td>
                        <td>Status</td>
                        <th>Action</th>
                    </tr>
                </thead>
                <tbody id="myTable">
                    @foreach (var item in Model.List_MainCategories)
                    {
                        <tr class="responsive-table-row">
                            <td>#@Html.DisplayFor(modelItem => item.Main_CategoryID)</td>
                            <td>@Html.DisplayFor(modelItem => item.Main_CategoryTitle)</td>
                            <td>@Html.DisplayFor(modelItem => item.CreatedDateTime)</td>
                            <td>@Html.DisplayFor(modelItem => item.CreatedBy)</td>
                            <td>
                                @if (item.Status == "Visible")
                                {
                                    <span class="label label--new mb-3 mr-3 text-nowrap">
                                        @Html.DisplayFor(modelItem => item.Status)
                                    </span>
                                }
                                else
                                {
                                    <span class="label label--sale mb-3 mr-3 text-nowrap">
                                        @Html.DisplayFor(modelItem => item.Status)
                                    </span>
                                }

                            </td>
                            <td>
                                @Html.ActionLink("Edit", "MainCategory", new { id = item.Main_CategoryID }, new { @class = "btn" })
                            </td>
                        </tr>
                    }
                <tbody>
            </table>
        </div>

    </div>
</div>