From 88d7deedd7e08f840ad9c7a2467f549c792bd183 Mon Sep 17 00:00:00 2001 From: Michael Gordeev Date: Fri, 13 Dec 2019 18:50:06 +0300 Subject: [PATCH] Badges management pages done --- .../Admin/Controllers/BadgesController.cs | 64 +++++++++++++++++ .../Admin/Controllers/ContactsController.cs | 2 +- .../Areas/Admin/Views/Badges/Create.cshtml | 71 +++++++++++++++++++ .../Areas/Admin/Views/Badges/Delete.cshtml | 36 ++++++++++ .../Areas/Admin/Views/Badges/Edit.cshtml | 71 +++++++++++++++++++ .../Areas/Admin/Views/Badges/Index.cshtml | 65 +++++++++++++++++ MyWebsite/MyWebsite/Models/Badge.cs | 6 +- 7 files changed, 313 insertions(+), 2 deletions(-) create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Controllers/BadgesController.cs create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Create.cshtml create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Delete.cshtml create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Edit.cshtml create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Index.cshtml diff --git a/MyWebsite/MyWebsite/Areas/Admin/Controllers/BadgesController.cs b/MyWebsite/MyWebsite/Areas/Admin/Controllers/BadgesController.cs new file mode 100644 index 0000000..f0dd133 --- /dev/null +++ b/MyWebsite/MyWebsite/Areas/Admin/Controllers/BadgesController.cs @@ -0,0 +1,64 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using MyWebsite.Models; +using System.IO; + +namespace MyWebsite.Areas.Admin.Controllers +{ + [Area("Admin")] + [Authorize] + public class BadgesController : Controller + { + public BadgesController(DatabaseContext context) => + Startup.Database = context; + + public IActionResult Index() => + View(Startup.Database.Badges); + + [HttpGet] + public IActionResult Edit(string id) => + View(Startup.Database.Badges.Find(id)); + + [HttpPost] + public IActionResult Edit(Badge model) + { + Startup.Database.Badges.Update(model); + Startup.Database.SaveChanges(); + + return RedirectToAction("Index"); + } + + [HttpGet] + public IActionResult Delete(string id) => + View(Startup.Database.Badges.Find(id)); + + [HttpPost] + public IActionResult Delete(Badge model) + { + Startup.Database.Badges.Remove(model); + Startup.Database.SaveChanges(); + + return RedirectToAction("Index"); + } + + [HttpGet] + public IActionResult Create() => + View(); + + [HttpPost] + public IActionResult Create(Badge model) + { + if (!ModelState.IsValid) + { + ModelState.AddModelError("Error", "Invalid data"); + return View(model); + } + + Startup.Database.Badges.Add(model); + Startup.Database.SaveChanges(); + + return RedirectToAction("Index"); + } + } +} \ No newline at end of file diff --git a/MyWebsite/MyWebsite/Areas/Admin/Controllers/ContactsController.cs b/MyWebsite/MyWebsite/Areas/Admin/Controllers/ContactsController.cs index 424e28d..a8e6bbb 100644 --- a/MyWebsite/MyWebsite/Areas/Admin/Controllers/ContactsController.cs +++ b/MyWebsite/MyWebsite/Areas/Admin/Controllers/ContactsController.cs @@ -49,7 +49,7 @@ namespace MyWebsite.Areas.Admin.Controllers { if (!ModelState.IsValid) { - ModelState.AddModelError("Authorization error", "Invalid data"); + ModelState.AddModelError("Error", "Invalid data"); return View(link); } diff --git a/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Create.cshtml b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Create.cshtml new file mode 100644 index 0000000..7a611d9 --- /dev/null +++ b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Create.cshtml @@ -0,0 +1,71 @@ +@model MyWebsite.Models.Badge +@using System.IO; +@{ + ViewData["Title"] = "Create badge"; + List files = new List(); + foreach (string path in Directory.GetFiles(Directory.GetCurrentDirectory() + "/wwwroot/images/Badges")) + { + string fileName = System.IO.Path.GetFileNameWithoutExtension(path); + files.Add(new SelectListItem(fileName, fileName)); + } +} + +
+

Back to the list

+

Create project badge

+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ +
+ + .png +
+ +
+
+ +
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Delete.cshtml b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Delete.cshtml new file mode 100644 index 0000000..7ea06e3 --- /dev/null +++ b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Delete.cshtml @@ -0,0 +1,36 @@ +@model MyWebsite.Models.Badge + +@{ + ViewData["Title"] = "Delete badge"; +} + +
+

Back to the list

+

Delete project badge

+

Are you sure you want to delete this?

+
+ +
+

+ @Html.DisplayNameFor(model => model.Name): @Html.DisplayFor(model => model.Name)
+ @Html.DisplayNameFor(model => model.Description): @Html.DisplayFor(model => model.Description)
+ @Html.DisplayNameFor(model => model.Image): @(Html.DisplayFor(model => model.Image)).png
+ + Preview: +

+

+ +
+ + +
+
+ + + \ No newline at end of file diff --git a/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Edit.cshtml b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Edit.cshtml new file mode 100644 index 0000000..5de435a --- /dev/null +++ b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Edit.cshtml @@ -0,0 +1,71 @@ +@using System.IO; +@model MyWebsite.Models.Badge +@{ + ViewData["Title"] = "Edit badge"; + List files = new List(); + foreach (string path in Directory.GetFiles(Directory.GetCurrentDirectory() + "/wwwroot/images/Badges")) + { + string fileName = System.IO.Path.GetFileNameWithoutExtension(path); + files.Add(new SelectListItem(fileName, fileName)); + } +} + +
+

Back to the list

+

Edit project badge

+
+ +
+
+
+
+ + + +
+
+ + + +
+
+ +
+ + .png +
+ +
+
+ +
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Index.cshtml b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Index.cshtml new file mode 100644 index 0000000..78335d0 --- /dev/null +++ b/MyWebsite/MyWebsite/Areas/Admin/Views/Badges/Index.cshtml @@ -0,0 +1,65 @@ +@model IEnumerable + +@{ + ViewData["Title"] = "Badges list"; +} + +
+

Back to main menu

+

Project badges list

+

+ // + Create New +

+
+ +
+ + + + + + + + + + + + @foreach (var item in Model) + { + + + + + + + + } + +
Preview + @Html.DisplayNameFor(model => model.Name) + + @Html.DisplayNameFor(model => model.Description) + + @Html.DisplayNameFor(model => model.Image) +
+
+
+ @Html.DisplayFor(modelItem => item.Name) + + @Html.DisplayFor(modelItem => item.Description) + + @(Html.DisplayFor(modelItem => item.Image)).png + + @Html.ActionLink("Edit", "Edit", new { id=item.Name }) | + @Html.ActionLink("Delete", "Delete", new { id=item.Name }) +
+
+ + + \ No newline at end of file diff --git a/MyWebsite/MyWebsite/Models/Badge.cs b/MyWebsite/MyWebsite/Models/Badge.cs index e9b491e..8762c44 100644 --- a/MyWebsite/MyWebsite/Models/Badge.cs +++ b/MyWebsite/MyWebsite/Models/Badge.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace MyWebsite.Models @@ -7,12 +8,15 @@ namespace MyWebsite.Models { [Key] [Column(TypeName = "varchar(10)")] + [DisplayName("ID")] public string Name { get; set; } [Column(TypeName = "varchar(100)")] [Required] + [DisplayName("Caption")] public string Description { get; set; } [Column(TypeName = "varchar(20)")] [Required] + [DisplayName("Image name")] public string Image { get; set; } } }