From 3b98fd109f2b7743ff11c7a47f05819614fb108c Mon Sep 17 00:00:00 2001 From: Qais Yousuf Date: Thu, 22 Feb 2024 16:46:42 +0100 Subject: [PATCH] Banner CURD operation completed --- .../Admin/Controllers/BannerController.cs | 85 +++++++++++++ Web/Areas/Admin/Views/Banner/Delete.cshtml | 118 +++++++++++++++++ Web/Areas/Admin/Views/Banner/Edit.cshtml | 109 ++++++++++++++++ Web/Areas/Admin/Views/Banner/Index.cshtml | 119 +++++++++--------- .../Admin/Views/Shared/_AdminLayout.cshtml | 2 + .../Admin/Views/Shared/_Notification.cshtml | 14 +++ 6 files changed, 387 insertions(+), 60 deletions(-) create mode 100644 Web/Areas/Admin/Views/Banner/Delete.cshtml create mode 100644 Web/Areas/Admin/Views/Banner/Edit.cshtml create mode 100644 Web/Areas/Admin/Views/Shared/_Notification.cshtml diff --git a/Web/Areas/Admin/Controllers/BannerController.cs b/Web/Areas/Admin/Controllers/BannerController.cs index 9e15cf2..13d6b07 100644 --- a/Web/Areas/Admin/Controllers/BannerController.cs +++ b/Web/Areas/Admin/Controllers/BannerController.cs @@ -60,11 +60,96 @@ namespace Web.Areas.Admin.Controllers await _banner.Add(banner); await _banner.commitAsync(); + TempData["Success"] = "Banner created successfully"; return RedirectToAction(nameof(Index)); } return View(viewmodel); + } + + [HttpGet] + public IActionResult Edit(int id) + { + var bannerFromdb = _banner.GetBannerById(id); + + var viewmodel = new BannerViewModel + { + Id=bannerFromdb.Id, + Title=bannerFromdb.Title, + Description=bannerFromdb.Description, + Content=bannerFromdb.Content, + ImageUrl=bannerFromdb.ImageUrl, + LinkUrl=bannerFromdb.ImageUrl, + }; + + return View(viewmodel); + } + + [HttpPost] + public async Task Edit(BannerViewModel viewmodel) + { + if(ModelState.IsValid) + { + var banner = _banner.GetBannerById(viewmodel.Id); + + banner.Title = viewmodel.Title; + banner.Content = viewmodel.Content; + banner.Description = viewmodel.Description; + banner.LinkUrl = viewmodel.LinkUrl; + banner.ImageUrl = viewmodel.ImageUrl; + + _banner.Update(banner); + + await _banner.commitAsync(); + TempData["Success"] = "Banner updated successfully"; + + return RedirectToAction(nameof(Index)); + + } + + + + + return View(viewmodel); + } + + [HttpGet] + public IActionResult Delete(int id) + { + var bannerFromDb = _banner.GetBannerById(id); + + var viewmodel = new BannerViewModel + { + Id=bannerFromDb.Id, + Title=bannerFromDb.Title, + Description=bannerFromDb.Description, + Content=bannerFromDb.Content, + ImageUrl=bannerFromDb.ImageUrl, + LinkUrl=bannerFromDb.ImageUrl, + + }; + + return View(viewmodel); + } + + [HttpPost] + [ActionName("Delete")] + public async Task DeleteConfirm(int id) + { + + //var banner = _banner.GetBannerById(id); + + _banner.Delete(id); + + await _banner.commitAsync(); + TempData["Success"] = "Banner deleted successfully"; + + return RedirectToAction(nameof(Index)); + + + + } } } diff --git a/Web/Areas/Admin/Views/Banner/Delete.cshtml b/Web/Areas/Admin/Views/Banner/Delete.cshtml new file mode 100644 index 0000000..fa597aa --- /dev/null +++ b/Web/Areas/Admin/Views/Banner/Delete.cshtml @@ -0,0 +1,118 @@ +@model BannerViewModel + +@{ + ViewData["Title"] = "Delete"; +} + + +
+
+
+
Delete banner
+
Are you sure you want to delete the @Model.Title
+ +
+ + +
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ | Back to list +
+ +
+
+
+
+
+ + +@section Scripts { + + + + @{ + + } +} + + + + + + +@*
+ +
+
+
+ @Html.DisplayNameFor(model => model.Id) +
+
+ @Html.DisplayFor(model => model.Id) +
+
+ @Html.DisplayNameFor(model => model.Title) +
+
+ @Html.DisplayFor(model => model.Title) +
+
+ @Html.DisplayNameFor(model => model.Description) +
+
+ @Html.DisplayFor(model => model.Description) +
+
+ @Html.DisplayNameFor(model => model.Content) +
+
+ @Html.DisplayFor(model => model.Content) +
+
+ @Html.DisplayNameFor(model => model.LinkUrl) +
+
+ @Html.DisplayFor(model => model.LinkUrl) +
+
+ @Html.DisplayNameFor(model => model.ImageUrl) +
+
+ @Html.DisplayFor(model => model.ImageUrl) +
+
+ +
+ | + Back to List +
+
*@ diff --git a/Web/Areas/Admin/Views/Banner/Edit.cshtml b/Web/Areas/Admin/Views/Banner/Edit.cshtml new file mode 100644 index 0000000..a751cca --- /dev/null +++ b/Web/Areas/Admin/Views/Banner/Edit.cshtml @@ -0,0 +1,109 @@ +@model BannerViewModel + +@{ + ViewData["Title"] = "Edit"; +} + +
+
+
+
Update banner
+ +
+ + +
+
+ +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ | Back to list +
+ +
+
+
+
+
+ + +@section Scripts { + + + + @{ + + } +} + + +
+@*
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ +
+
+
+
*@ + + + diff --git a/Web/Areas/Admin/Views/Banner/Index.cshtml b/Web/Areas/Admin/Views/Banner/Index.cshtml index dcb550b..4f894e8 100644 --- a/Web/Areas/Admin/Views/Banner/Index.cshtml +++ b/Web/Areas/Admin/Views/Banner/Index.cshtml @@ -4,64 +4,63 @@ ViewData["Title"] = "Index"; } -

Index

-

- Create New -

- - - - - - - - - - - - - -@foreach (var item in Model) { - - - - - - - - - -} - -
- @Html.DisplayNameFor(model => model.Id) - - @Html.DisplayNameFor(model => model.Title) - - @Html.DisplayNameFor(model => model.Description) - - @Html.DisplayNameFor(model => model.Content) - - @Html.DisplayNameFor(model => model.LinkUrl) - - @Html.DisplayNameFor(model => model.ImageUrl) - - Action -
- @Html.DisplayFor(modelItem => item.Id) - - @Html.DisplayFor(modelItem => item.Title) - - @Html.DisplayFor(modelItem => item.Description) - - @Html.DisplayFor(modelItem => item.Content) - - @Html.DisplayFor(modelItem => item.LinkUrl) - - @Html.DisplayFor(modelItem => item.ImageUrl) - - @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) | - @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) | - @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }) -
+
+ + + +
+
Banners
+
+

Banner list

+

+ Create New +

+ + + + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + + } + + + +
IdTitleDescriptionLink UrlAction
@item.Id @item.Title@item.Description@item.LinkUrl + Delete | + Edit +
+ +
+
+
+ + + + + + + + + + + + + diff --git a/Web/Areas/Admin/Views/Shared/_AdminLayout.cshtml b/Web/Areas/Admin/Views/Shared/_AdminLayout.cshtml index 188577f..63d9c10 100644 --- a/Web/Areas/Admin/Views/Shared/_AdminLayout.cshtml +++ b/Web/Areas/Admin/Views/Shared/_AdminLayout.cshtml @@ -7,6 +7,8 @@ + + diff --git a/Web/Areas/Admin/Views/Shared/_Notification.cshtml b/Web/Areas/Admin/Views/Shared/_Notification.cshtml new file mode 100644 index 0000000..8f14950 --- /dev/null +++ b/Web/Areas/Admin/Views/Shared/_Notification.cshtml @@ -0,0 +1,14 @@ +@if (TempData["Success"] != null) +{ + + + + + + +} \ No newline at end of file