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));
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
\ 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));
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
\ 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";
+}
+
+
+
+
+
+
+
+ | Preview |
+
+ @Html.DisplayNameFor(model => model.Name)
+ |
+
+ @Html.DisplayNameFor(model => model.Description)
+ |
+
+ @Html.DisplayNameFor(model => model.Image)
+ |
+ |
+
+
+
+ @foreach (var item in Model)
+ {
+
+ |
+
+ |
+
+ @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; }
}
}