From 2086c46538cead0e4f7b042671e95f0a36c7ffcf Mon Sep 17 00:00:00 2001 From: Arttu Kuikka <75498768+ArttuKuikka@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:16:55 +0300 Subject: [PATCH] Index viewmodel + parannuksia --- Controllers/HomeController.cs | 52 ++++++++-------- ViewModels/IndexViewModel.cs | 12 ++++ Views/Home/Index.cshtml | 108 +++++++++++++--------------------- Views/Home/Listaa.cshtml | 4 +- wwwroot/css/site.css | 3 + 5 files changed, 88 insertions(+), 91 deletions(-) create mode 100644 ViewModels/IndexViewModel.cs diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index e88b5f0..30e97ec 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore; using RuokalistaServer.Data; using RuokalistaServer.Models; +using RuokalistaServer.ViewModels; namespace RuokalistaServer.Controllers { @@ -17,52 +18,57 @@ public HomeController(ApplicationDbContext db) } [HttpGet("/")] - public async Task Index(int? weekId, int? Year) + public async Task Index(int? Year, int? Week) { - ViewBag.Nykyinenviikko = false; - ViewBag.RuokaOlemassa = false; - var viikko = weekId ?? System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now); + var viikko = Week ?? System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now); var vuosi = Year ?? DateTime.Now.Year; - if (weekId== null) + + var model = new IndexViewModel(); + + + model.NextWeeksMenuExists = db.Ruokalista.Where(m => m.Year == DateTime.Now.Year)?.FirstOrDefault(k => k.WeekId == viikko + 1) != null; + //if not viewing custom week and year + if (Week == null && Year == null) { if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday || DateTime.Today.DayOfWeek == DayOfWeek.Saturday) { - ViewBag.NytOnSeuraavaViikko = true; + model.ShowingNextWeeksMenu = true; viikko += 1; } - if(DateTime.Today.DayOfWeek == DayOfWeek.Friday && DateTime.Now.Hour > 12) + else if(DateTime.Today.DayOfWeek == DayOfWeek.Friday && DateTime.Now.Hour > 12) { - if(db.Ruokalista.Where(m => m.Year == DateTime.Now.Year)?.FirstOrDefault(k => k.WeekId == viikko + 1) != null) + if(model.NextWeeksMenuExists) { - ViewBag.NytOnSeuraavaViikko = true; - viikko+= 1; + model.ShowingNextWeeksMenu = true; + viikko += 1; } } } - - ViewBag.viikko = viikko; + + - var ruokalista = db.Ruokalista.Where(m => m.Year == vuosi)?.FirstOrDefault(k => k.WeekId == viikko); + model.Ruokalista = db.Ruokalista.Where(m => m.Year == vuosi)?.FirstOrDefault(k => k.WeekId == viikko); - if(ruokalista != null) + if(model.Ruokalista != null) { - if (ruokalista.WeekId == System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now)) + if (model.Ruokalista.WeekId == System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now)) { - ViewBag.Nykyinenviikko = true; - ViewBag.SeuraavaViikko = db.Ruokalista.Where(m => m.Year == DateTime.Now.Year)?.FirstOrDefault(k => k.WeekId == viikko + 1); + model.ShowingCurrentWeeksMenu = true; + } - ViewBag.RuokaOlemassa = true; - ViewBag.Vuosi = ruokalista.Year; } + return View("Index", model); + } - ViewBag.SeuraavaViikkoNumero = viikko + 1; - - ViewBag.ruokalista = ruokalista; - return View(); + [HttpGet("/{Year:int}/{Week:int}")] + public async Task SpesificIndex(int? Year, int? Week) + { + return await Index(Year, Week); } + [HttpGet("Listaa")] public async Task Listaa() { diff --git a/ViewModels/IndexViewModel.cs b/ViewModels/IndexViewModel.cs new file mode 100644 index 0000000..433a323 --- /dev/null +++ b/ViewModels/IndexViewModel.cs @@ -0,0 +1,12 @@ +using RuokalistaServer.Models; + +namespace RuokalistaServer.ViewModels +{ + public class IndexViewModel + { + public Ruokalista? Ruokalista { get; set; } + public bool ShowingNextWeeksMenu { get; set; } + public bool ShowingCurrentWeeksMenu { get; set; } + public bool NextWeeksMenuExists { get; set; } + } +} diff --git a/Views/Home/Index.cshtml b/Views/Home/Index.cshtml index 5df3e43..baba4af 100644 --- a/Views/Home/Index.cshtml +++ b/Views/Home/Index.cshtml @@ -1,92 +1,67 @@ - +@model RuokalistaServer.ViewModels.IndexViewModel + @{ - ViewData["Title"] = "Ruokalista"; + ViewData["Title"] = Model.Ruokalista != null ? $"Viikon {Model.Ruokalista.WeekId} ruokalista" : "Tätä ruokalistaa ei ole olemassa"; }
@{ - if(ViewBag.RuokaOlemassa ?? false) + if(Model.Ruokalista != null) { - @if (ViewBag.NykyinenViikko ?? false) + @if (Model.ShowingCurrentWeeksMenu) { -
Tämän viikon(@ViewBag.viikko) ruokalista
+
Tämän viikon(@Model.Ruokalista.WeekId) ruokalista
} - else if (ViewBag.NytOnSeuraavaViikko ?? false) + else if (Model.ShowingNextWeeksMenu) { -
Seuraavan viikon(@ViewBag.viikko) ruokalista
+
Seuraavan viikon(@Model.Ruokalista.WeekId) ruokalista
} else { -
Viikon(@ViewBag.viikko) ruokalista
+
@Model.Ruokalista.Year/@Model.Ruokalista.WeekId ruokalista
} - RuokalistaServer.Models.Ruokalista ruoka = ViewBag.ruokalista; - if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Monday){ -
Maanantai
-
@ruoka.Maanantai
- } - else - { -
Maanantai
-
@ruoka.Maanantai
- } - + +
+

Maanantai

+

@Model.Ruokalista.Maanantai

+ +

- if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Tuesday) - { -
Tiistai
-
@ruoka.Tiistai
- } - else - { -
Tiistai
-
@ruoka.Tiistai
- } - +
+

Tiistai

+

@Model.Ruokalista.Tiistai

+ +

+
+

Keskiviikko

+

@Model.Ruokalista.Keskiviikko

- if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Wednesday) - { -
Keskiviikko
-
@ruoka.Keskiviikko
- } - else - { -
Keskiviikko
-
@ruoka.Keskiviikko
- } +
+
+ +
+

Torstai

+

@Model.Ruokalista.Torstai

+

- if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Thursday) - { -
Torstai
-
@ruoka.Torstai
- } - else - { -
Torstai
-
@ruoka.Torstai
- } +
+

Perjantai

+

@Model.Ruokalista.Perjantai

+

- if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Friday) - { -
Perjantai
-
@ruoka.Perjantai
- } - else - { -
Perjantai
-
@ruoka.Perjantai
- } +
@@ -103,14 +78,15 @@
⟵ Edelliset viikot - @if(@ViewBag.Nykyinenviikko){ -if(@ViewBag.SeuraavaViikko != null){ - Seuraava viikko ⟶ -} -} + + + @if (Model.Ruokalista != null && Model.NextWeeksMenuExists && !Model.ShowingNextWeeksMenu) + { + //jos vuosi on vaihtunut niin ei toimi + Seuraava viikko ⟶ + }

- diff --git a/Views/Home/Listaa.cshtml b/Views/Home/Listaa.cshtml index 338afcd..2301736 100644 --- a/Views/Home/Listaa.cshtml +++ b/Views/Home/Listaa.cshtml @@ -14,8 +14,8 @@ @foreach(var viikko in Model) { -

@viikko.WeekId

@viikko.Year

- Näytä +

Viikko @viikko.WeekId

@viikko.Year

+ Näytä } diff --git a/wwwroot/css/site.css b/wwwroot/css/site.css index 4e4b6f0..c59c015 100644 --- a/wwwroot/css/site.css +++ b/wwwroot/css/site.css @@ -58,6 +58,9 @@ body { font-size: 1.9em } +.highlighted { + color: orange; +} @font-face {