From c27eff938fe624866604795460f641ac62316efd Mon Sep 17 00:00:00 2001
From: Michael Gordeev
Date: Sat, 13 Feb 2021 23:35:01 +0300
Subject: [PATCH] Added wishlist
---
.../Admin/Controllers/WishlistController.cs | 43 ++++++
.../Areas/Admin/Views/Shared/Wishlist.cshtml | 48 +++++++
.../MyWebsite/Controllers/HomeController.cs | 4 +
.../Models/Databases/DatabaseContext.cs | 1 +
MyWebsite/MyWebsite/Models/WishlistModel.cs | 24 ++++
.../Resources/Views/Shared/Wishlist.ru.resx | 129 ++++++++++++++++++
.../MyWebsite/ViewModels/WishlistViewModel.cs | 19 +++
MyWebsite/MyWebsite/Views/Admin/Index.cshtml | 3 +-
.../MyWebsite/Views/Shared/Wishlist.cshtml | 30 ++++
9 files changed, 300 insertions(+), 1 deletion(-)
create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Controllers/WishlistController.cs
create mode 100644 MyWebsite/MyWebsite/Areas/Admin/Views/Shared/Wishlist.cshtml
create mode 100644 MyWebsite/MyWebsite/Models/WishlistModel.cs
create mode 100644 MyWebsite/MyWebsite/Resources/Views/Shared/Wishlist.ru.resx
create mode 100644 MyWebsite/MyWebsite/ViewModels/WishlistViewModel.cs
create mode 100644 MyWebsite/MyWebsite/Views/Shared/Wishlist.cshtml
diff --git a/MyWebsite/MyWebsite/Areas/Admin/Controllers/WishlistController.cs b/MyWebsite/MyWebsite/Areas/Admin/Controllers/WishlistController.cs
new file mode 100644
index 0000000..0c4a5df
--- /dev/null
+++ b/MyWebsite/MyWebsite/Areas/Admin/Controllers/WishlistController.cs
@@ -0,0 +1,43 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using MyWebsite.Controllers;
+using MyWebsite.Models;
+using MyWebsite.Models.Databases;
+using System;
+using System.Linq;
+
+namespace MyWebsite.Areas.Admin.Controllers
+{
+ [Authorize]
+ [Area("Admin")]
+ public class WishlistController : ExtendedController
+ {
+ private const string ViewPath = "Areas/Admin/Views/Shared/Wishlist.cshtml";
+ public WishlistController(DatabaseContext context) : base(context) { }
+
+ [HttpGet]
+ public IActionResult Index() =>
+ View(ViewPath, Database.Wishlist.FirstOrDefault());
+
+ [HttpPost]
+ public IActionResult Index(WishlistModel model)
+ {
+ if (model == null)
+ throw new ArgumentNullException(nameof(model));
+
+ if (!ModelState.IsValid)
+ {
+ ModelState.AddModelError("Error", "Invalid data");
+ return View(ViewPath, model);
+ }
+
+ model.LastUpdated = DateTime.Now;
+
+ Database.Wishlist.RemoveRange(Database.Wishlist);
+ Database.Wishlist.Add(model);
+ Database.SaveChanges();
+
+ return RedirectToAction("Index", "Admin");
+ }
+ }
+}
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/Areas/Admin/Views/Shared/Wishlist.cshtml b/MyWebsite/MyWebsite/Areas/Admin/Views/Shared/Wishlist.cshtml
new file mode 100644
index 0000000..6b1ca00
--- /dev/null
+++ b/MyWebsite/MyWebsite/Areas/Admin/Views/Shared/Wishlist.cshtml
@@ -0,0 +1,48 @@
+@model WishlistModel
+@{
+ ViewData["Title"] = "Wishlist";
+}
+
+
+
+
+
+
+
+@section Imports
+{
+
+}
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/Controllers/HomeController.cs b/MyWebsite/MyWebsite/Controllers/HomeController.cs
index affaa67..811c062 100644
--- a/MyWebsite/MyWebsite/Controllers/HomeController.cs
+++ b/MyWebsite/MyWebsite/Controllers/HomeController.cs
@@ -67,5 +67,9 @@ namespace MyWebsite.Controllers
return Redirect(Extensions.CheckNullOrWhitespace(Request.Headers["Referer"], "/"));
}
+
+ [Route("Wishlist")]
+ public IActionResult Wishlist() =>
+ View(new WishlistViewModel(Database, CultureInfo.CurrentUICulture));
}
}
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/Models/Databases/DatabaseContext.cs b/MyWebsite/MyWebsite/Models/Databases/DatabaseContext.cs
index bde2171..9533749 100644
--- a/MyWebsite/MyWebsite/Models/Databases/DatabaseContext.cs
+++ b/MyWebsite/MyWebsite/Models/Databases/DatabaseContext.cs
@@ -12,6 +12,7 @@ namespace MyWebsite.Models.Databases
public DbSet Resume { get; set; }
public DbSet ShortLinks { get; set; }
public DbSet CustomData { get; set; }
+ public DbSet Wishlist { get;set; }
public DatabaseContext(DbContextOptions options) : base(options) =>
Database.EnsureCreated();
diff --git a/MyWebsite/MyWebsite/Models/WishlistModel.cs b/MyWebsite/MyWebsite/Models/WishlistModel.cs
new file mode 100644
index 0000000..aa9cf03
--- /dev/null
+++ b/MyWebsite/MyWebsite/Models/WishlistModel.cs
@@ -0,0 +1,24 @@
+using System;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace MyWebsite.Models
+{
+ public class WishlistModel
+ {
+ [Key]
+ [Required]
+ public Guid Id { get; set; } = Guid.NewGuid();
+ [Required]
+ [Column(TypeName = "text")]
+ [DisplayName("English list")]
+
+ public string EnglishContent { get; set; }
+ [Column(TypeName = "text")]
+ [DisplayName("Russian list")]
+ public string RussianContent { get;set; }
+ [DisplayName("Last chagnge")]
+ public DateTime LastUpdated { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/Resources/Views/Shared/Wishlist.ru.resx b/MyWebsite/MyWebsite/Resources/Views/Shared/Wishlist.ru.resx
new file mode 100644
index 0000000..c9ae481
--- /dev/null
+++ b/MyWebsite/MyWebsite/Resources/Views/Shared/Wishlist.ru.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Список желаемого
+
+
+ На тот случай, если вы не знаете что мне подарить
+
+
+ Последнее обновление
+
+
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/ViewModels/WishlistViewModel.cs b/MyWebsite/MyWebsite/ViewModels/WishlistViewModel.cs
new file mode 100644
index 0000000..d35b2f7
--- /dev/null
+++ b/MyWebsite/MyWebsite/ViewModels/WishlistViewModel.cs
@@ -0,0 +1,19 @@
+using MyWebsite.Models;
+using MyWebsite.Models.Databases;
+using System.Globalization;
+using System.Linq;
+
+namespace MyWebsite.ViewModels
+{
+ public class WishlistViewModel : ViewModelBase
+ {
+ public WishlistModel Wishlist { get; }
+ public string Content { get; }
+ public WishlistViewModel(DatabaseContext context, CultureInfo language) : base(context)
+ {
+ Wishlist = context.Wishlist.FirstOrDefault();
+ Content = language?.TwoLetterISOLanguageName == "ru" ? Wishlist?.RussianContent : Wishlist?.EnglishContent;
+ Content ??= Wishlist?.EnglishContent;
+ }
+ }
+}
\ No newline at end of file
diff --git a/MyWebsite/MyWebsite/Views/Admin/Index.cshtml b/MyWebsite/MyWebsite/Views/Admin/Index.cshtml
index 96d97ea..e1df5f8 100644
--- a/MyWebsite/MyWebsite/Views/Admin/Index.cshtml
+++ b/MyWebsite/MyWebsite/Views/Admin/Index.cshtml
@@ -12,7 +12,8 @@
-
+
+
diff --git a/MyWebsite/MyWebsite/Views/Shared/Wishlist.cshtml b/MyWebsite/MyWebsite/Views/Shared/Wishlist.cshtml
new file mode 100644
index 0000000..2fe027a
--- /dev/null
+++ b/MyWebsite/MyWebsite/Views/Shared/Wishlist.cshtml
@@ -0,0 +1,30 @@
+@model WishlistViewModel
+@{
+ ViewData["Title"] = Localizer["My wishlist"];
+}
+
+@section OpenGraph
+{
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+ @Localizer["My wishlist"]
+ @Localizer["In case you don't know what to give me"]
+ @Localizer["Last update"]: @Model?.Wishlist?.LastUpdated
+
+
+
+ @Html.Raw(Model?.Content)
+
\ No newline at end of file