Skip to content

Commit

Permalink
Merge pull request #53 from ArttuKuikka/master
Browse files Browse the repository at this point in the history
masteri deviin kesäloman jäljiltä
  • Loading branch information
ArttuKuikka authored Jul 23, 2023
2 parents 776ca09 + 3e65044 commit fd11f67
Show file tree
Hide file tree
Showing 11 changed files with 390 additions and 32 deletions.
51 changes: 38 additions & 13 deletions Controllers/HomeController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,35 +15,60 @@ public HomeController(ApplicationDbContext db)
this.db = db;
}

public IActionResult Index()
[HttpGet("/")]
public async Task <IActionResult> Index(int? weekId, int? Year)
{
ViewBag.Nykyinenviikko = false;
ViewBag.RuokaOlemassa = false;
var viikko = System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now);
var viikko = weekId ?? System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now);
var vuosi = Year ?? DateTime.Now.Year;
if (weekId== null)
{
if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday || DateTime.Today.DayOfWeek == DayOfWeek.Saturday)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko += 1;
}
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)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko+= 1;
}
}
}

ViewBag.viikko = viikko;

Ruokalista ruokalista = null;
try
{
ruokalista = db.Ruokalista
.Where(m => m.Year == DateTime.Now.Year).FirstOrDefaultAsync(k => k.WeekId == viikko).GetAwaiter().GetResult();
}catch(Exception ex) {
ViewBag.RuokaOlemass = false;
return View();
}
var ruokalista = db.Ruokalista.Where(m => m.Year == vuosi)?.FirstOrDefault(k => k.WeekId == viikko);


if(ruokalista != null)
{
if (ruokalista.WeekId == viikko)
if (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);
}
ViewBag.RuokaOlemassa = true;
ViewBag.Vuosi = ruokalista.Year;
}

if(ruokalista != null) { ViewBag.RuokaOlemassa = true; }

ViewBag.SeuraavaViikkoNumero = viikko + 1;

ViewBag.ruokalista = ruokalista;
return View();
}

[HttpGet("Listaa")]
public async Task<IActionResult> Listaa()
{
var ruokalista = db.Ruokalista?.ToList();
ruokalista.Reverse();

return View(ruokalista);
}
}
}
102 changes: 102 additions & 0 deletions Controllers/IGController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
using Microsoft.AspNetCore.Mvc;
using RuokalistaServer.Data;
using System.Globalization;

namespace RuokalistaServer.Controllers
{
public class IGController : Controller
{
private ApplicationDbContext db;

public IGController(ApplicationDbContext db)
{
this.db = db;
}
public async Task<IActionResult> Index(int? weekId, int? Year)
{
ViewBag.Nykyinenviikko = false;
ViewBag.RuokaOlemassa = false;
var viikko = weekId ?? System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now);
ViewBag.Viikko = viikko;
var vuosi = Year ?? DateTime.Now.Year;

var viikonekapaiva = GetFirstDayOfWeek(vuosi, viikko);
var viikonperjantai = viikonekapaiva.AddDays(4);

ViewBag.Paivat = viikonekapaiva.ToString("dd.MM") + "-" + viikonperjantai.ToString("dd.MM");


if (weekId == null)
{
if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday || DateTime.Today.DayOfWeek == DayOfWeek.Saturday)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko += 1;
}
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)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko += 1;
}
}
}

ViewBag.viikko = viikko;

var ruokalista = db.Ruokalista.Where(m => m.Year == vuosi)?.FirstOrDefault(k => k.WeekId == viikko);


if (ruokalista != null)
{
if (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);
}
ViewBag.RuokaOlemassa = true;
ViewBag.Vuosi = ruokalista.Year;
}
else
{
return NotFound("Tämäm viikon ruokalistaa ei ole olemassa");
}


ViewBag.SeuraavaViikkoNumero = viikko + 1;

ViewBag.ruokalista = ruokalista;
return View();
}


public static DateTime GetFirstDayOfWeek(int year, int weekOfYear)
{
DateTime jan1 = new DateTime(year, 1, 1);
int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;

// Use first Thursday in January to get first week of the year as
// it will never be in Week 52/53
DateTime firstThursday = jan1.AddDays(daysOffset);
var cal = CultureInfo.CurrentCulture.Calendar;
int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);

var weekNum = weekOfYear;
// As we're adding days to a date in Week 1,
// we need to subtract 1 in order to get the right date for week #1
if (firstWeek == 1)
{
weekNum -= 1;
}

// Using the first Thursday as starting week ensures that we are starting in the right year
// then we add number of weeks multiplied with days
var result = firstThursday.AddDays(weekNum * 7);

// Subtract 3 days from Thursday to get Monday, which is the first weekday in ISO8601
return result.AddDays(-3);
}

}
}
26 changes: 22 additions & 4 deletions Controllers/InfotvController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,39 @@ public IActionResult Index()
ViewBag.Nykyinenviikko = false;
ViewBag.RuokaOlemassa = false;
var viikko = System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now);
var vuosi = DateTime.Now.Year;
if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday || DateTime.Today.DayOfWeek == DayOfWeek.Saturday)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko += 1;
}
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)
{
ViewBag.NytOnSeuraavaViikko = true;
viikko += 1;
}
}

ViewBag.viikko = viikko;

var ruokalista = db.Ruokalista
.Where(m => m.Year == DateTime.Now.Year).FirstOrDefaultAsync(k => k.WeekId == viikko).GetAwaiter().GetResult();
var ruokalista = db.Ruokalista.Where(m => m.Year == vuosi)?.FirstOrDefault(k => k.WeekId == viikko);


if (ruokalista != null)
{
if (ruokalista.WeekId == viikko)
if (ruokalista.WeekId == System.Globalization.ISOWeek.GetWeekOfYear(DateTime.Now))
{
ViewBag.Nykyinenviikko = true;

}
ViewBag.RuokaOlemassa = true;
}

if (ruokalista != null) { ViewBag.RuokaOlemassa = true; }

ViewBag.SeuraavaViikkoNumero = viikko + 1;

ViewBag.ruokalista = ruokalista;
return View();
}
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
# RuokalistaServer
# RuokalistaServer

Isonkyrön koulun virallinen ruokalista palvelu
27 changes: 19 additions & 8 deletions RuokalistaServer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,28 @@


<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.2">
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="7.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.6" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>



<ItemGroup>
<Content Update="wwwroot\pohja.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\sample_bg.jpg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

</Project>
29 changes: 24 additions & 5 deletions Views/Home/Index.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,34 @@
@{
ViewData["Title"] = "Ruokalista";
}

<a class="btn btn-primary" onclick="window.location = '/Listaa';" style="margin: 0em 1em 0.5em 0em">Edellisten viikkojen ruokalistat</a>
@if(@ViewBag.Nykyinenviikko){
if(@ViewBag.SeuraavaViikko != null){
<a class="btn btn-primary" onclick="window.location = '/?weekId=@ViewBag.SeuraavaViikkoNumero';" style="margin: 0em 1em 0.5em 0em">Seuraavan viikon ruokalista</a>
}
}
else{
<a class="btn btn-primary" onclick="window.location = '/?weekId=@ViewBag.SeuraavaViikkoNumero&Year=@ViewBag.Vuosi';" style="margin: 0em 1em 0.5em 0em">Seuraavan viikon ruokalista</a>
}
<div class="text-center">

@{
if(ViewBag.RuokaOlemassa)
{
<h1 class="display-4">Tämän viikon(@ViewBag.viikko) ruokalista</h1>
if(ViewBag.RuokaOlemassa ?? false)
{
@if (ViewBag.NykyinenViikko ?? false)
{
<h1 class="display-4">Tämän viikon(@ViewBag.viikko) ruokalista</h1>
}
else if (ViewBag.NytOnSeuraavaViikko ?? false)
{
<h1 class="display-4">Seuraavan viikon(@ViewBag.viikko) ruokalista</h1>
}
else
{
<h1 class="display-4">Viikon(@ViewBag.viikko) ruokalista</h1>
}

RuokalistaServer.Models.Ruokalista ruoka = ViewBag.ruokalista;
RuokalistaServer.Models.Ruokalista ruoka = ViewBag.ruokalista;

if (ViewBag.Nykyinenviikko && DateTime.Now.DayOfWeek == DayOfWeek.Monday){
<h3 style="color:orange">Maanantai</h3>
Expand Down
24 changes: 24 additions & 0 deletions Views/Home/Listaa.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
@model List<RuokalistaServer.Models.Ruokalista>
@{
ViewData["Title"] = "Listaa ruokalistat";

}

<h1>Kaikki ruokalistat</h1>

<table class="table" style="color:white;">
<tr>
<th>Viikko ja vuosi</th>
<th></th>
</tr>
@foreach(var viikko in Model)
{
<tr>
<td><h3>@viikko.WeekId</h3> <p>@viikko.Year</p></td>
<td><a class="btn btn-primary" onclick="window.location = '/?weekId=@viikko.WeekId&Year=@viikko.Year';">Näytä</a></td>

</tr>
}


</table>
Loading

0 comments on commit fd11f67

Please sign in to comment.