Compare commits

..

No commits in common. "3a4064198dee56f98d9a86ebe35cd21858621682" and "b2dc8402f2ddb3e55bb660807a075ee7899ce9df" have entirely different histories.

28 changed files with 608 additions and 2095 deletions

View File

@ -6,7 +6,7 @@ Yummy4Friends ist eine benutzerfreundliche und visuell ansprechende Webapp zur O
## Description (English) ## Description (English)
Yummy4Friends is a user-friendly and visually appealing WebApp for ordering food or other things online. Food or other stuff gets dynamically fetched from a customer and food database while also taking into account special requests. To attract customers, one can also offer limited-time sales and coupons, order in advance, and have the option to choose the preferred pickup time. Yummy4Friends is a user friendly and visually appealing WebApp for ordering food or other things online. Food or other stuff get dynamically fetched from a customer and food database while also taking into account special requests. To attract customers one can also offer limeted time sales/coupons, ordering in advance as well as being able to choosing their preferred pickup time.
## Tech Stack ## Tech Stack

View File

@ -1,138 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebApi.Data;
using WebApi.Models;
namespace WebApi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class BestellungspositionHasMenuitemsController : ControllerBase
{
private readonly WebApiContext _context;
public BestellungspositionHasMenuitemsController(WebApiContext context)
{
_context = context;
}
// GET: api/BestellungspositionHasMenuitems
[HttpGet]
public async Task<ActionResult<IEnumerable<BestellungspositionHasMenuitem>>> GetBestellungspositionHasMenuitem()
{
if (_context.BestellungspositionHasMenuitem == null)
{
return NotFound();
}
return await _context.BestellungspositionHasMenuitem.ToListAsync();
}
// GET: api/BestellungspositionHasMenuitems/5
[HttpGet("{id}")]
public async Task<ActionResult<BestellungspositionHasMenuitem>> GetBestellungspositionHasMenuitem(int? id)
{
if (_context.BestellungspositionHasMenuitem == null)
{
return NotFound();
}
var bestellungspositionHasMenuitem = await _context.BestellungspositionHasMenuitem.FindAsync(id);
if (bestellungspositionHasMenuitem == null)
{
return NotFound();
}
return bestellungspositionHasMenuitem;
}
// PUT: api/BestellungspositionHasMenuitems/5
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPut("{id}")]
public async Task<IActionResult> PutBestellungspositionHasMenuitem(int? id, BestellungspositionHasMenuitem bestellungspositionHasMenuitem)
{
if (id != bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung)
{
return BadRequest();
}
_context.Entry(bestellungspositionHasMenuitem).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!BestellungspositionHasMenuitemExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/BestellungspositionHasMenuitems
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPost]
public async Task<ActionResult<BestellungspositionHasMenuitem>> PostBestellungspositionHasMenuitem(BestellungspositionHasMenuitem bestellungspositionHasMenuitem)
{
if (_context.BestellungspositionHasMenuitem == null)
{
return Problem("Entity set 'WebApiContext.BestellungspositionHasMenuitem' is null.");
}
_context.BestellungspositionHasMenuitem.Add(bestellungspositionHasMenuitem);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (BestellungspositionHasMenuitemExists(bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtAction("GetBestellungspositionHasMenuitem", new { id = bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung }, bestellungspositionHasMenuitem);
}
// DELETE: api/BestellungspositionHasMenuitems/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteBestellungspositionHasMenuitem(int? id)
{
if (_context.BestellungspositionHasMenuitem == null)
{
return NotFound();
}
var bestellungspositionHasMenuitem = await _context.BestellungspositionHasMenuitem.FindAsync(id);
if (bestellungspositionHasMenuitem == null)
{
return NotFound();
}
_context.BestellungspositionHasMenuitem.Remove(bestellungspositionHasMenuitem);
await _context.SaveChangesAsync();
return NoContent();
}
private bool BestellungspositionHasMenuitemExists(int? id)
{
return (_context.BestellungspositionHasMenuitem?.Any(e => e.Bestellungsposition_IDBestellung == id)).GetValueOrDefault();
}
}
}

View File

@ -29,8 +29,6 @@ public partial class WebApiContext : DbContext
public virtual DbSet<Admin> Admins { get; set; } public virtual DbSet<Admin> Admins { get; set; }
public virtual DbSet<BestellungspositionHasMenuitem> BestellungspositionHasMenuitem { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder modelBuilder
@ -83,31 +81,31 @@ public partial class WebApiContext : DbContext
.OnDelete(DeleteBehavior.ClientSetNull) .OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_Bestellungsposition_Rabatt1"); .HasConstraintName("fk_Bestellungsposition_Rabatt1");
//entity.HasMany(d => d.MenuItemIdmenuItems).WithMany(p => p.BestellungspositionIdbestellungs) entity.HasMany(d => d.MenuItemIdmenuItems).WithMany(p => p.BestellungspositionIdbestellungs)
// .UsingEntity<Dictionary<string, object>>( .UsingEntity<Dictionary<string, object>>(
// "BestellungspositionHasMenuitem", "BestellungspositionHasMenuitem",
// r => r.HasOne<Menuitem>().WithMany() r => r.HasOne<Menuitem>().WithMany()
// .HasForeignKey("MenuItemIdmenuItem") .HasForeignKey("MenuItemIdmenuItem")
// .OnDelete(DeleteBehavior.ClientSetNull) .OnDelete(DeleteBehavior.ClientSetNull)
// .HasConstraintName("fk_Bestellungsposition_has_MenuItem_MenuItem1"), .HasConstraintName("fk_Bestellungsposition_has_MenuItem_MenuItem1"),
// l => l.HasOne<Bestellungsposition>().WithMany() l => l.HasOne<Bestellungsposition>().WithMany()
// .HasForeignKey("BestellungspositionIdbestellung") .HasForeignKey("BestellungspositionIdbestellung")
// .OnDelete(DeleteBehavior.ClientSetNull) .OnDelete(DeleteBehavior.ClientSetNull)
// .HasConstraintName("fk_Bestellungsposition_has_MenuItem_Bestellungsposition1"), .HasConstraintName("fk_Bestellungsposition_has_MenuItem_Bestellungsposition1"),
// j => j =>
// { {
// j.HasKey("BestellungspositionIdbestellung", "MenuItemIdmenuItem") j.HasKey("BestellungspositionIdbestellung", "MenuItemIdmenuItem")
// .HasName("PRIMARY") .HasName("PRIMARY")
// .HasAnnotation("MySql:IndexPrefixLength", new[] { 0, 0 }); .HasAnnotation("MySql:IndexPrefixLength", new[] { 0, 0 });
// j.ToTable("bestellungsposition_has_menuitem"); j.ToTable("bestellungsposition_has_menuitem");
// j.HasIndex(new[] { "MenuItemIdmenuItem" }, "fk_Bestellungsposition_has_MenuItem_MenuItem1"); j.HasIndex(new[] { "MenuItemIdmenuItem" }, "fk_Bestellungsposition_has_MenuItem_MenuItem1");
// j.IndexerProperty<int>("BestellungspositionIdbestellung") j.IndexerProperty<int>("BestellungspositionIdbestellung")
// .HasColumnType("int(11)") .HasColumnType("int(11)")
// .HasColumnName("Bestellungsposition_IDBestellung"); .HasColumnName("Bestellungsposition_IDBestellung");
// j.IndexerProperty<int>("MenuItemIdmenuItem") j.IndexerProperty<int>("MenuItemIdmenuItem")
// .HasColumnType("int(11)") .HasColumnType("int(11)")
// .HasColumnName("MenuItem_IDMenuItem"); .HasColumnName("MenuItem_IDMenuItem");
// }); });
}); });
modelBuilder.Entity<Kunde>(entity => modelBuilder.Entity<Kunde>(entity =>
@ -214,16 +212,16 @@ public partial class WebApiContext : DbContext
entity.Property(e => e.Password).HasMaxLength(100); entity.Property(e => e.Password).HasMaxLength(100);
}); });
modelBuilder.Entity<BestellungspositionHasMenuitem>(entity => //modelBuilder.Entity<BestellungspositionHasMenuitem>(entity =>
{ //{
entity.HasKey(e => new { e.Bestellungsposition_IDBestellung, e.MenuItem_IDMenuItem }) // entity.HasKey(e => new { e.BestellungspositionId, e.MenuitemId })
.HasName("PRIMARY"); // .HasName("PRIMARY");
entity.ToTable("bestellungsposition_has_menuitem"); // entity.ToTable("bestellungsposition_has_menuitem");
entity.Property(e => e.Bestellungsposition_IDBestellung).HasColumnType("int(11)").HasColumnName("Bestellungsposition_IDBestellung"); // entity.Property(e => e.BestellungspositionId).HasColumnType("int(11)");
entity.Property(e => e.MenuItem_IDMenuItem).HasColumnType("int(11)").HasColumnName("MenuItem_IDMenuItem"); // entity.Property(e => e.MenuitemId).HasColumnType("int(11)");
}); //});
modelBuilder.Entity<MenuitemHasAllergie>(entity => modelBuilder.Entity<MenuitemHasAllergie>(entity =>
{ {

View File

@ -13,11 +13,11 @@ public partial class Bestellungsposition
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde? KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;
public virtual Rabatt? RabattIdrabattNavigation { get; set; } = null!; public virtual Rabatt RabattIdrabattNavigation { get; set; } = null!;
public virtual ICollection<Menuitem>? MenuItemIdmenuItems { get; set; } = new List<Menuitem>(); public virtual ICollection<Menuitem> MenuItemIdmenuItems { get; set; } = new List<Menuitem>();
} }

View File

@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
namespace WebApi.Models;
public partial class BestellungspositionHasMenuitem
{
public int? Bestellungsposition_IDBestellung { get; set; }
public int? MenuItem_IDMenuItem { get; set; }
}

View File

@ -1,36 +1,5 @@
@page "/allergene" @page "/allergene"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
}
public class Kunde
{
public int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<PageTitle>Allergene</PageTitle> <PageTitle>Allergene</PageTitle>
<table class="tg"> <table class="tg">
@ -118,8 +87,4 @@
</tbody> </tbody>
</table> </table>
<br> <br><br><br><br>
<br>
<br>
<br>

View File

@ -1,33 +1,5 @@
@page "/cookies" @page "/cookies"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
}
public class Kunde
{
public int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<!DOCTYPE html> <!DOCTYPE html>
<html lang=""> <html lang="">
<head> <head>

View File

@ -1,33 +1,5 @@
@page "/datenschutzerklärung" @page "/datenschutzerklärung"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
}
public class Kunde
{
public int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<!DOCTYPE html> <!DOCTYPE html>
<html lang=""> <html lang="">
<head> <head>

View File

@ -4,8 +4,6 @@
@inject HttpClient Http @inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager @inject NavigationManager _navigationManager
@inject IJSRuntime JSRuntime;
<PageTitle>Yummy4Friends</PageTitle> <PageTitle>Yummy4Friends</PageTitle>
@ -34,25 +32,14 @@
{ {
localStorage.SetItem("kunde", kunde); localStorage.SetItem("kunde", kunde);
_navigationManager.NavigateTo("/speisekarte"); _navigationManager.NavigateTo("/speisekarte");
break;
return;
} }
} }
JSRuntime.InvokeVoidAsync("alert", "Zugangscode ist falsch!");
} }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
// if already logged in navigate to speisekarte
if (localStorage.ContainKey("kunde"))
{
_navigationManager.NavigateTo("/speisekarte");
}
} }
public class Kunde public class Kunde

View File

@ -1,37 +1,5 @@
@page "/Kontakt" @page "/Kontakt"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
}
public class Kunde
{
public int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<h3>Kontakt</h3> <h3>Kontakt</h3>
<h4>Kundenservice</h4> <h4>Kundenservice</h4>

View File

@ -91,8 +91,8 @@
<td class="d-flex justify-content-center align-items-center" style="padding-top:0px;"> <td class="d-flex justify-content-center align-items-center" style="padding-top:0px;">
<div style="margin:20px;"> <div style="margin:20px;">
<div class="d-flex justify-content-center align-items-center"> <div class="d-flex justify-content-center align-items-center">
<input type="number" style="width:80px" min="10" max="19" @bind-value="@hour" @onclick="@(()=>UpdateTime())" /> <input type="number" style="width:80px" min="10" max="19" />
<input type="number" style="width:80px" min="0" max="59" @bind-value="@minute" @onclick="@(()=>UpdateTime())" /> <input type="number" style="width:80px" min="0" max="59" />
&nbsp; &nbsp;
Uhr Uhr
</div> </div>
@ -111,7 +111,7 @@
<div class="col mt-auto "> <div class="col mt-auto ">
<div class="d-flex flex-column align-items-center "> <div class="d-flex flex-column align-items-center ">
<a href="/speisekarte" class="btn_bg w-75 btn text-center">Zurück</a> <a href="/speisekarte" class="btn_bg w-75 btn text-center">Zurück</a>
<a class="btn_forward btn w-75 " @onclick="@(() => SetBestllung())">Weiter</a> <a href="#" class="btn_forward btn w-75 ">Weiter</a>
</div> </div>
</div> </div>
</div> </div>
@ -121,31 +121,9 @@
</div> </div>
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public int hour;
public int minute;
private void UpdateTime()
{
localStorage.SetItem<int>("Hour", hour);
localStorage.SetItem<int>("Minute", minute);
}
private void SetBestllung()
{
if (menuitemIds.Count == 0)
{
return;
}
UpdateTime();
localStorage.SetItem<Dictionary<int, int>>("MenuItemIds", menuitemIds);
_navigationManager.NavigateTo("/Bestellabschluss");
}
public decimal summe; public decimal summe;
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>(); public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
@ -185,6 +163,7 @@
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt // allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>(); private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>(); private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>(); private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
@ -192,17 +171,6 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// get data from localstorage // get data from localstorage
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null) if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{ {
@ -212,6 +180,7 @@
// get data from api // get data from api
allergien = await Http.GetFromJsonAsync<List<Allergie>>("https://localhost:7076/api/allergien"); allergien = await Http.GetFromJsonAsync<List<Allergie>>("https://localhost:7076/api/allergien");
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen"); bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems"); menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems");
menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/Menuitemkategories"); menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/Menuitemkategories");
menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/Menuitemueberkategories"); menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/Menuitemueberkategories");
@ -230,17 +199,6 @@
} }
} }
} }
localStorage.SetItem<decimal>("Summe", summe);
// if hour/minute is set, set the values
if (localStorage.GetItem<int>("Hour") != 0)
{
hour = localStorage.GetItem<int>("Hour");
}
if (localStorage.GetItem<int>("Minute") != 0)
{
minute = localStorage.GetItem<int>("Minute");
}
} }
public class Allergie public class Allergie
@ -261,7 +219,7 @@
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;

View File

@ -4,7 +4,6 @@
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager @inject NavigationManager _navigationManager
<h1>Speisekarte</h1> <h1>Speisekarte</h1>
<div class="row justify-content-center"> <div class="row justify-content-center">
@foreach (var item in menuitemueberkategories) @foreach (var item in menuitemueberkategories)
@ -26,39 +25,18 @@
<tr> <tr>
<td><a href="/SpeisekarteChinesich">@item2.Bezeichnung</a></td> <td><a href="/SpeisekarteChinesich">@item2.Bezeichnung</a></td>
</tr> </tr>
@if (@item2.Bezeichnung == "Nachspeise")
{
<tr>
<td class="lowest"><br></td>
</tr>
}
} }
else if (@item.Bezeichnung == "Japanisch") else if (@item.Bezeichnung == "Japanisch")
{ {
<tr> <tr>
<td><a href="/SpeisekarteJapanisch">@item2.Bezeichnung</a></td> <td><a href="/SpeisekarteJapanisch">@item2.Bezeichnung</a></td>
</tr> </tr>
@if (@item2.Bezeichnung == "Nachspeise")
{
<tr>
<td class="lowest"><br></td>
</tr>
}
} }
else if (@item.Bezeichnung == "Getränke") else if (@item.Bezeichnung == "Getränke")
{ {
<tr> <tr>
<td><a href="/SpeisekarteGetraenke">@item2.Bezeichnung</a></td> <td><a href="/SpeisekarteGetraenke">@item2.Bezeichnung</a></td>
</tr> </tr>
@if (@item2.Bezeichnung == "Bier")
{
<tr>
<td class="lowest"><br></td>
</tr><tr>
<td class="lowest"><br></td>
</tr>
}
} }
else if (@item.Bezeichnung == "Sonstiges") else if (@item.Bezeichnung == "Sonstiges")
{ {
@ -68,9 +46,15 @@
} }
else else
{ {
<tr>
<td><a href="/">@item2.Bezeichnung</a></td>
</tr>
} }
} }
} }
<tr>
<td class="lowest"><br></td>
</tr>
<tr> <tr>
<td class="lowest"><br></td> <td class="lowest"><br></td>
@ -88,25 +72,27 @@
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<Kunde> kunden = new List<Kunde>();
private Kunde curretKunde = new Kunde(); private Kunde curretKunde = new Kunde();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (kunden.Count > 0)
if (localStorage.ContainKey("kunde")) {
kunde = localStorage.GetItem<Kunde>("kunde"); var kunde = localStorage.GetItem<Kunde>("kunde");
if (kunde != null)
{
curretKunde = kunde;
}
else else
{
_navigationManager.NavigateTo("/"); _navigationManager.NavigateTo("/");
}
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code)) }
_navigationManager.NavigateTo("/");
menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/MenuItemKategories"); menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/MenuItemKategories");
menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/MenuItemUeberkategories"); menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/MenuItemUeberkategories");
@ -137,5 +123,5 @@
public string Code { get; set; } public string Code { get; set; }
public int Treuepunkte { get; set; } public int Treuepunkte { get; set; }
} }
}
}

View File

@ -90,9 +90,6 @@
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>(); public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
private void SetMenuItemId(int id) private void SetMenuItemId(int id)
@ -111,6 +108,7 @@
private List<Allergie> allergien = new List<Allergie>(); private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>(); private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>(); private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
@ -119,17 +117,19 @@
private Kunde curretKunde = new Kunde(); private Kunde curretKunde = new Kunde();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (kunden.Count > 0)
if (localStorage.ContainKey("kunde")) {
kunde = localStorage.GetItem<Kunde>("kunde"); var kunde = localStorage.GetItem<Kunde>("kunde");
if (kunde != null)
{
curretKunde = kunde;
}
else else
{
_navigationManager.NavigateTo("/"); _navigationManager.NavigateTo("/");
}
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code)) }
_navigationManager.NavigateTo("/");
// kunde login end
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null) if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{ {
@ -163,7 +163,7 @@
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;

View File

@ -94,8 +94,6 @@
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>(); public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
@ -117,6 +115,7 @@
private List<Allergie> allergien = new List<Allergie>(); private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>(); private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>(); private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
@ -125,17 +124,20 @@
private Kunde curretKunde = new Kunde(); private Kunde curretKunde = new Kunde();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (kunden.Count > 0)
if (localStorage.ContainKey("kunde")) {
kunde = localStorage.GetItem<Kunde>("kunde"); var kunde = localStorage.GetItem<Kunde>("kunde");
if (kunde != null)
{
curretKunde = kunde;
}
else else
{
_navigationManager.NavigateTo("/"); _navigationManager.NavigateTo("/");
}
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code)) }
_navigationManager.NavigateTo("/");
// kunde login end
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null) if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{ {
@ -168,7 +170,7 @@
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;

View File

@ -94,8 +94,6 @@
</div> </div>
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>(); public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
@ -115,6 +113,7 @@
private List<Allergie> allergien = new List<Allergie>(); private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>(); private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>(); private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
@ -123,17 +122,21 @@
private Kunde curretKunde = new Kunde(); private Kunde curretKunde = new Kunde();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (kunden.Count > 0)
if (localStorage.ContainKey("kunde")) {
kunde = localStorage.GetItem<Kunde>("kunde"); var kunde = localStorage.GetItem<Kunde>("kunde");
if (kunde != null)
{
curretKunde = kunde;
}
else else
{
_navigationManager.NavigateTo("/"); _navigationManager.NavigateTo("/");
}
}
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null) if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{ {
menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds"); menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds");
@ -165,7 +168,7 @@
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;

View File

@ -93,8 +93,6 @@
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>(); public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
@ -114,6 +112,7 @@
private List<Allergie> allergien = new List<Allergie>(); private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>(); private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>(); private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>(); private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>(); private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
@ -122,17 +121,21 @@
private Kunde curretKunde = new Kunde(); private Kunde curretKunde = new Kunde();
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (kunden.Count > 0)
if (localStorage.ContainKey("kunde")) {
kunde = localStorage.GetItem<Kunde>("kunde"); var kunde = localStorage.GetItem<Kunde>("kunde");
if (kunde != null)
{
curretKunde = kunde;
}
else else
{
_navigationManager.NavigateTo("/"); _navigationManager.NavigateTo("/");
}
}
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null) if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{ {
menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds"); menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds");
@ -164,7 +167,7 @@
public int KundeIdkunde { get; set; } public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; } public int RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!; public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;

View File

@ -0,0 +1,51 @@
@page "/TestFetchAllergienData"
@inject HttpClient Http
<PageTitle>Allergien</PageTitle>
<h1>Allergien</h1>
<p>This component demonstrates fetching data from the mysql server.</p>
@if (allergien == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
@foreach (var allergie in allergien)
{
<tr>
<td>@allergie.Idallergie</td>
<td>@allergie.Beschreibung</td>
</tr>
}
</tbody>
</table>
}
@code {
private const string ServiceEndpoint = "https://localhost:7076/api/Allergien";
private Allergie[]? allergien;
protected override async Task OnInitializedAsync()
{
allergien = await Http.GetFromJsonAsync<Allergie[]>(ServiceEndpoint);
}
public partial class Allergie
{
public int Idallergie { get; set; }
public string? Beschreibung { get; set; }
}
}

View File

@ -1,37 +1,5 @@
@page "/yummypoints" @page "/yummypoints"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
}
public class Kunde
{
int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<body style='--blazor-load-percentage: 100%; --blazor-load-percentage-text: "100%";'> <body style='--blazor-load-percentage: 100%; --blazor-load-percentage-text: "100%";'>
<div class="d-flex justify-content-center"> <div class="d-flex justify-content-center">

View File

@ -1,341 +1,36 @@
@page "/Bestellabschluss" @page "/Bestellabschluss"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
<body> <body>
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<p>Sie haben derzeit <b>@kunde.Treuepunkte Yummy-Punkt(e)</b></p> <p>Sie haben derzeit <b>1 Yummy-Punkt(e)</b></p>
<p class="text"> <p class="text">Bei einem Mindestbestellwert von 8€ erhalten Sie ein Yummy-Punkt.
Bei einem Mindestbestellwert von 8€ erhalten Sie ein Yummy-Punkt. Ab der 10ten Bestellung gibt es einen Rabatt zu Ihrer nächsten Bestellung.</p>
Ab der 10ten Bestellung gibt es einen Rabatt (@rabatt.Prozent%) zu Ihrer nächsten Bestellung.
</p>
<div class="img"> <div class="img" >
@for (int i = 0; i < 10; i++) @for(int i = 0; i < 10; i++)
{
@*if kunde hat treuepunkte*@
@if (kunde.Treuepunkte > i)
{
<img src="assets/Point-Circle.png ">
}
else
{ {
<img src="assets/White-Circle.png "> <img src="assets/White-Circle.png ">
} }
}
<br> <br>
</div> </div>
<p class="text">
Achtung: Bitte beachten Sie, dass keine online Bezahlung zur Verfügung steht.
Diese dient nur zur Vorbestellung und muss selbst abgeholt werden.
</p>
<p>
Ihr gesamt bestellter Betrag beträgt: <strong>@summe €</strong>
</p>
@*if treuepunkte 10 dann angebot bieten*@
@if (kunde.Treuepunkte == 10)
{
<p class=""><strong>Sie haben 10 Yummy-Punkte erreicht</strong>. Sie können diese jetzt einlösen und erhalten einen Rabatt von <strong>@rabatt.Prozent%</strong>.</p>
<p><strong>Wollen Sie diese einlösen?</strong> <InputCheckbox @bind-Value="rabattEinloesen" /></p>
@if (rabattEinloesen == true) <p class="text">Achtung: Bitte beachten Sie, dass keine online Bezahlung zur Verfügung steht.
{ Diese dient nur zur Vorbestellung und muss selbst abgeholt werden.</p>
<p>Betrag beträgt abzüglich des Rabattes: <strong>@Math.Round(summe - (summe * rabatt.Prozent / 100), 2) €</strong></p>
}
}
<div class="button"> <div class="button">
<form id="button1" action="Warenkorb"> <form id="button1" action="Warenkorb">
<a href="/shopping_cart" class="btn">Zurück</a> <input type="submit" value="Zurück" class="btn">
</form> </form>
<form id="button2" action="Confirm"> <form id="button2" action="Confirm">
<input value="Vorbestellen" class="btn" @onclick="Vorbestellen" /> <input type="submit" value="Vorbestellen" class="btn">
</form> </form>
</div> </div>
</div> </div>
</body> </body>
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
private List<Rabatt> rabatte = new List<Rabatt>();
private Rabatt rabatt = new Rabatt();
private bool rabattEinloesen;
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
public List<Bestellungsposition> bestellungspositionen = new List<Bestellungsposition>();
public int hour;
public int minute;
public decimal summe;
public void Vorbestellen()
{
// set rabattEinloesen
if (rabattEinloesen)
{
kunde.Treuepunkte = 0;
// delete treuepunkte API
Http.PutAsJsonAsync("https://localhost:7076/api/kunden/" + kunde.Idkunde, kunde);
summe = Math.Round(summe - (summe * rabatt.Prozent / 100), 2);
localStorage.SetItem("Summe", summe);
localStorage.SetItem("RabattEinloesen", true);
}
else
{
localStorage.SetItem("RabattEinloesen", false);
localStorage.SetItem("Summe", summe);
if (summe >= 8)
{
if (kunde.Treuepunkte < 10)
{
kunde.Treuepunkte++;
Http.PutAsJsonAsync("https://localhost:7076/api/kunden/" + kunde.Idkunde, kunde);
}
}
}
// add bestellung to API
// add all bestellungspositionen to API
// get latest bestellungsposition id wenn nix da dann 0
int bestellungspositionId = 0;
if (bestellungspositions != null)
{
// get the highest id from bestellungspositions
int highestId;
foreach (var item in bestellungspositions)
{
highestId = item.Idbestellung;
if (highestId > bestellungspositionId)
{
bestellungspositionId = highestId;
}
}
}
foreach (var item in menuitemIds)
{
bestellungspositionId++;
Bestellungsposition bestellungsposition = new Bestellungsposition();
bestellungsposition.Idbestellung = bestellungspositionId;
bestellungsposition.Menge = item.Value;
// make a new date with hour and minute
DateTime abholzeit = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, minute, 0);
bestellungsposition.Datum = abholzeit;
// latest possible rabatt
if (rabattEinloesen)
{
bestellungsposition.RabattIdrabatt = rabatt.Idrabatt;
}
else
{
bestellungsposition.RabattIdrabatt = null;
}
bestellungsposition.KundeIdkunde = kunde.Idkunde;
Http.PostAsJsonAsync("https://localhost:7076/api/bestellungspositionen", bestellungsposition);
////Add menuitems to bestellungspositionHasMenuItem
//BestellungspositionHasMenuitem bestellungspositionHasMenuItem = new BestellungspositionHasMenuitem();
//bestellungspositionHasMenuItem.Bestellungsposition_IDBestellung = bestellungsposition.Idbestellung;
//bestellungspositionHasMenuItem.MenuItem_IDMenuItem = item.Key;
//Http.PostAsJsonAsync("https://localhost:7076/api/bestellungspositionhasmenuitems", bestellungspositionHasMenuItem);
var newBestellungsposition = new BestellungspositionHasMenuitem()
{
Bestellungsposition_IDBestellung = bestellungsposition.Idbestellung,
MenuItem_IDMenuItem = item.Key
};
Http.PostAsJsonAsync("https://localhost:7076/api/bestellungspositionhasmenuitems", newBestellungsposition);
}
// delete all localStorage
localStorage.SetItem("MenuItemIds", new Dictionary<int, int>());
localStorage.SetItem("Summe", 0);
localStorage.SetItem("RabattEinloesen", false);
_navigationManager.NavigateTo("/Bestellbestätigung");
}
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<BestellungspositionHasMenuitem> bestellungspositionHasMenuitems = new List<BestellungspositionHasMenuitem>();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
// get data from api
allergien = await Http.GetFromJsonAsync<List<Allergie>>("https://localhost:7076/api/allergien");
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems");
menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/Menuitemkategories");
menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/Menuitemueberkategories");
rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte");
bestellungspositionHasMenuitems = await Http.GetFromJsonAsync<List<BestellungspositionHasMenuitem>>("https://localhost:7076/api/BestellungspositionHasMenuitems");
// get kunde from local storage
kunde = localStorage.GetItem<Kunde>("kunde");
// get the most recent rabatt, that are still valid (GueltigkeitBis)
// if there is no rabatt, set the rabatt to null
if (rabatte.Count == 0)
{
rabatt = null;
}
else
{
for (int i = 0; i < rabatte.Count; i++)
{
if (rabatte[i].GueltigkeitBis > DateTime.Now)
{
rabatt = rabatte[i];
}
}
}
// get data from localstorage
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{
menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds");
}
// calculate the sum of all menuitems
summe = 0;
foreach (var item in menuitemIds)
{
foreach (var item2 in menuitems)
{
if (item.Key == item2.IdmenuItem)
{
summe += item2.Preis * item.Value;
}
}
}
// if hour/minute is set, set the values
if (localStorage.GetItem<int>("Hour") != 0)
{
hour = localStorage.GetItem<int>("Hour");
}
if (localStorage.GetItem<int>("Minute") != 0)
{
minute = localStorage.GetItem<int>("Minute");
}
}
public class Allergie
{
public int Idallergie { get; set; }
public string? Beschreibung { get; set; }
public virtual ICollection<Menuitem> MenuItemIdmenuItems { get; set; } = new List<Menuitem>();
}
public class Bestellungsposition
{
public int Idbestellung { get; set; }
public int? Menge { get; set; }
public DateTime? Datum { get; set; }
public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; }
}
public class Kunde
{
public int Idkunde { get; set; }
public string? Code { get; set; }
public int? Treuepunkte { get; set; }
public virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
public class Menuitem
{
public int IdmenuItem { get; set; }
public string? Bezeichnung { get; set; }
public string? Zusatzinformation { get; set; }
public decimal Preis { get; set; }
public int MenuItemKategorieIdmenuItemKategorie { get; set; }
public virtual Menuitemkategorie MenuItemKategorieIdmenuItemKategorieNavigation { get; set; } = null!;
public virtual ICollection<Allergie> AllergieIdallergies { get; set; } = new List<Allergie>();
public virtual ICollection<Bestellungsposition> BestellungspositionIdbestellungs { get; set; } = new List<Bestellungsposition>();
}
public class Menuitemkategorie
{
public int IdmenuItemKategorie { get; set; }
public string? Bezeichnung { get; set; }
public int MenuItemUeberkategorieIdmenuItemUeberkategorie { get; set; }
public virtual Menuitemueberkategorie MenuItemUeberkategorieIdmenuItemUeberkategorieNavigation { get; set; } = null!;
public virtual ICollection<Menuitem> Menuitems { get; set; } = new List<Menuitem>();
}
public class Menuitemueberkategorie
{
public int IdmenuItemUeberkategorie { get; set; }
public string? Bezeichnung { get; set; }
public virtual ICollection<Menuitemkategorie> Menuitemkategories { get; set; } = new List<Menuitemkategorie>();
}
public class Rabatt
{
public int Idrabatt { get; set; }
public decimal Prozent { get; set; }
public DateTime? GueltigkeitVon { get; set; }
public DateTime? GueltigkeitBis { get; set; }
public bool Einloesen { get; set; }
public virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
public class BestellungspositionHasMenuitem
{
public int Bestellungsposition_IDBestellung { get; set; }
public int MenuItem_IDMenuItem { get; set; }
}
} }

View File

@ -1,20 +1,16 @@
@page "/Bestellbestätigung" @page "/Bestellbestätigung"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
<body> <body>
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<h5>Vielen Dank für Ihre Bestellung</h5><br> <h5>Vielen Dank für Ihre Bestellung</h5><br>
<p class="text"> <p class="text">
<strong>Ihr Essen ist heute um @hour:@minute abholbereit.</strong> Ihr Essen ist in <b>30 Minuten</b> abholbereit.
Sie erhalten eine Benachrichtigung sobald das Essen fertig ist. Wir würden uns freuen, wenn Sie uns ein <a href="Feedback">Feedback</a> geben. Sie erhalten eine Benachrichtigung sobald das Essen fertig ist. Wir würden uns freuen, wenn Sie uns ein <a href="Feedback">Feedback</a> geben.
<br><br><br><br> <br><br><br><br>
</p> </p>
<div class="progress"> <div class="progress">
<div class="progress-bar bg-warning progress-bar-striped progress-bar-animated" style="width:10%"></div> <div class="progress-bar bg-warning progress-bar-striped progress-bar-animated" style="width:50%"></div>
</div> </div>
<table> <table>
@ -29,213 +25,14 @@
<div class="button"> <div class="button">
<br><br><br><br> <br><br><br><br>
<form id="button1" action="/"> <form id="button1" action="/">
<input type="submit" value="Bestellungsübersicht" class="btn" @onclick="BestellungsUuebersicht"/> <input type="submit" value="Zur Startseite" class="btn">
</form> </form>
</div> </div>
</div> </div>
</body> </body>
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
private List<Rabatt> rabatte = new List<Rabatt>();
private Rabatt rabatt = new Rabatt();
private bool rabattEinloesen;
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
public int hour;
public int minute;
public decimal summe;
public void BestellungsUuebersicht()
{
_navigationManager.NavigateTo("/Kontoverwaltung");
}
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
// get data from api
allergien = await Http.GetFromJsonAsync<List<Allergie>>("https://localhost:7076/api/allergien");
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems");
menuitemkategories = await Http.GetFromJsonAsync<List<Menuitemkategorie>>("https://localhost:7076/api/Menuitemkategories");
menuitemueberkategories = await Http.GetFromJsonAsync<List<Menuitemueberkategorie>>("https://localhost:7076/api/Menuitemueberkategories");
rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte");
// get kunde from local storage
kunde = localStorage.GetItem<Kunde>("kunde");
// get the most recent rabatt, that are still valid (GueltigkeitBis)
// if there is no rabatt, set the rabatt to null
if (rabatte.Count == 0)
{
rabatt = null;
}
else
{
for (int i = 0; i < rabatte.Count; i++)
{
if (rabatte[i].GueltigkeitBis > DateTime.Now)
{
rabatt = rabatte[i];
}
}
}
// get data from localstorage
if (localStorage.GetItem<Dictionary<int, int>>("MenuItemIds") != null)
{
menuitemIds = localStorage.GetItem<Dictionary<int, int>>("MenuItemIds");
}
// calculate the sum of all menuitems
summe = 0;
foreach (var item in menuitemIds)
{
foreach (var item2 in menuitems)
{
if (item.Key == item2.IdmenuItem)
{
summe += item2.Preis * item.Value;
}
}
}
// if hour/minute is set, set the values
if (localStorage.GetItem<int>("Hour") != 0)
{
hour = localStorage.GetItem<int>("Hour");
}
if (localStorage.GetItem<int>("Minute") != 0)
{
minute = localStorage.GetItem<int>("Minute");
}
//
}
public class Allergie
{
public int Idallergie { get; set; }
public string? Beschreibung { get; set; }
public virtual ICollection<Menuitem> MenuItemIdmenuItems { get; set; } = new List<Menuitem>();
}
public class Bestellungsposition
{
public int Idbestellung { get; set; }
public int? Menge { get; set; }
public DateTime? Datum { get; set; }
public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; }
public virtual Kunde KundeIdkundeNavigation { get; set; } = null!;
public virtual Rabatt RabattIdrabattNavigation { get; set; } = null!;
public virtual ICollection<Menuitem> MenuItemIdmenuItems { get; set; } = new List<Menuitem>();
}
public class Kunde
{
public int Idkunde { get; set; }
public string? Code { get; set; }
public int? Treuepunkte { get; set; }
public virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
public class Menuitem
{
public int IdmenuItem { get; set; }
public string? Bezeichnung { get; set; }
public string? Zusatzinformation { get; set; }
public decimal Preis { get; set; }
public int MenuItemKategorieIdmenuItemKategorie { get; set; }
public virtual Menuitemkategorie MenuItemKategorieIdmenuItemKategorieNavigation { get; set; } = null!;
public virtual ICollection<Allergie> AllergieIdallergies { get; set; } = new List<Allergie>();
public virtual ICollection<Bestellungsposition> BestellungspositionIdbestellungs { get; set; } = new List<Bestellungsposition>();
}
public class Menuitemkategorie
{
public int IdmenuItemKategorie { get; set; }
public string? Bezeichnung { get; set; }
public int MenuItemUeberkategorieIdmenuItemUeberkategorie { get; set; }
public virtual Menuitemueberkategorie MenuItemUeberkategorieIdmenuItemUeberkategorieNavigation { get; set; } = null!;
public virtual ICollection<Menuitem> Menuitems { get; set; } = new List<Menuitem>();
}
public class Menuitemueberkategorie
{
public int IdmenuItemUeberkategorie { get; set; }
public string? Bezeichnung { get; set; }
public virtual ICollection<Menuitemkategorie> Menuitemkategories { get; set; } = new List<Menuitemkategorie>();
}
public class Rabatt
{
public int Idrabatt { get; set; }
public decimal? Prozent { get; set; }
public DateTime? GueltigkeitVon { get; set; }
public DateTime? GueltigkeitBis { get; set; }
public bool Einloesen { get; set; }
public virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
} }

View File

@ -1,81 +1,65 @@
@page "/Bestelluebersicht" @page "/Bestelluebersicht"
@layout ChefinLayout @layout ChefinLayout
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@*// logout button*@
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<button type="button" class="btn" @onclick="@Logout">Logout</button>
</div>
<div class="container d-flex flex-column"> <div class="container d-flex flex-column">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-lg-8">
<br /><br /> <br /><br />
<table class="table table-bordered"> <table class="table table-bordered">
<thead> <thead>
<tr> <tr>
<th>Aktive Bestellungen @day.@month.@year</th> <th colspan="2">Aktive Bestellungen</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@*iterate all kunden*@
@foreach (var kunde in kunden)
{
bool firstTime = true;
@*if kunde has made a recent bestellungsposiotn from today and higher value than now, print it*@
@foreach (var bestellungsposition in bestellungspositions)
{
if (bestellungsposition.KundeIdkunde == kunde.Idkunde)
{
@*get the last highes datum from Datum*@
if (firstTime)
{
@*if (bestellungsposition.Datum == bestellungspositions.Max(x => x.Datum))*@
@*{*@
@*get hour and minute from datetime of last bestellungsposition*@
hour = bestellungsposition.Datum.Hour;
minute = bestellungsposition.Datum.Minute;
day = bestellungsposition.Datum.Day;
month = bestellungsposition.Datum.Month;
year = bestellungsposition.Datum.Year;
@*print only if date is higher than now datum, all expired hh:mm unvisible *@
@*if (bestellungsposition.Datum > DateTime.Now)
{
<tr> <tr>
<td> <td><a href="BDetail">#1234 &nbsp; 12:30</a></td>
<p @onclick="@(()=>BDetail(@kunde.Idkunde))" class="mb-0 pb-0"> <td><a href="BDetail">#2345 &nbsp; 18:45</a></td>
#@kunde.Code &nbsp;
@hour:@minute
</p>
</td>
</tr> </tr>
}*@
@*print only if date is in current day month year *@
if (bestellungsposition.Datum.Day == DateTime.Now.Day && bestellungsposition.Datum.Month == DateTime.Now.Month && bestellungsposition.Datum.Year == DateTime.Now.Year)
{
<tr> <tr>
<td> <td><a href="BDetail">#3456 &nbsp; 13:00</a></td>
<p @onclick="@(()=>BDetail(@kunde.Idkunde))" class="mb-0 pb-0"> <td><a href="BDetail">#4567 &nbsp; 19:00</a></td>
#@kunde.Code &nbsp;
@hour:@minute
</p>
</td>
</tr> </tr>
} <tr>
firstTime = false; <td><a href="BDetail">#5678 &nbsp; 14:30</a></td>
} <td><a href="BDetail">#6789 &nbsp; 19:15</a></td>
}
} </tr>
} <tr>
<td><a href="BDetail">#4321 &nbsp; 15:15</a></td>
<td><a href="BDetail">#5432 &nbsp; 19:15</a></td>
</tr>
<tr>
<td><a href="BDetail">#6543 &nbsp; 15:30</a></td>
<td><a href="BDetail">#7654 &nbsp; 19:15</a></td>
</tr>
<tr>
<td><a href="BDetail">#7654 &nbsp; 15:30</a></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="BDetail">#8765 &nbsp; 16:00</a></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="BDetail">#9876 &nbsp; 17:30</a></td>
<td>&nbsp;</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="col-lg-3"> <div class="col-lg-3">
@* <p id="text" readonly>Abholzeit</p> <p id="text" readonly >Abholzeit</p>
<br /> <br />
<form id="button" action="Bestelluebersicht"> <form id="button" action="Bestelluebersicht">
<input type="submit" value="30 Min" class="btn"> <input type="submit" value="30 Min" class="btn">
@ -85,7 +69,7 @@
</form> </form>
<form id="button" action="Bestelluebersicht"> <form id="button" action="Bestelluebersicht">
<input type="submit" value="1 Std" class="btn"> <input type="submit" value="1 Std" class="btn">
</form>*@ </form>
</div> </div>
</div> </div>
@ -94,80 +78,5 @@
@code { @code {
public int hour;
public int minute;
public int day;
public int month;
public int year;
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
public void Logout()
{
localStorage.Clear();
_navigationManager.NavigateTo("/");
}
public void BDetail(int id)
{
localStorage.SetItem<int>("KundeId", id);
_navigationManager.NavigateTo("/BestelluebersichtD-Chefin");
}
protected override async Task OnInitializedAsync()
{
// get data from api
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
// set hour, minute, day , month, year to now date
hour = DateTime.Now.Hour;
minute = DateTime.Now.Minute;
day = DateTime.Now.Day;
month = DateTime.Now.Month;
year = DateTime.Now.Year;
//sort bestellungspositions by datum
bestellungspositions = bestellungspositions.OrderByDescending(x => x.Datum).ToList();
//sort kunden by the order of bestellungspositions
List<Kunde> kundenSorted = new List<Kunde>();
foreach (var bestellungsposition in bestellungspositions)
{
foreach (var kunde in kunden)
{
if (bestellungsposition.KundeIdkunde == kunde.Idkunde && !kundenSorted.Contains(kunde))
{
kundenSorted.Add(kunde);
}
}
}
kunden = kundenSorted;
}
public class Bestellungsposition
{
public int Idbestellung { get; set; }
public int Menge { get; set; }
public DateTime Datum { get; set; }
public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; }
}
public class Kunde
{
public int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
} }

View File

@ -1,69 +1,83 @@
@page "/BestelluebersichtD-Chefin" @page "/BestelluebersichtD-Chefin"
@layout ChefinLayout @layout ChefinLayout
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@*// logout button*@
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<button type="button" class="btn" @onclick="@Logout">Logout</button>
</div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-sm-12 col-lg-6"> <div class="col-sm-12 col-lg-6">
@*Tabelle Ihre Bestellung*@ @*Tabelle Ihre Bestellung*@
<div class="tbl-container"> <div class="tbl-container">
<table class="table bdr"> <table class="table bdr">
<thead class="bg_green"> <thead class="bg_green">
<tr> <tr>
<td>Ihre Bestellung (@day.@month.@year)</td> <td>Ihre Bestellung</td>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>
<tbody class="bg_lightgreen" style="background-color:white;"> <tbody class="bg_lightgreen" style="background-color:white;">
@if (menuitemIds.Count == 0)
{
<div class="card-body">
<h5 class="card-title" style="font-size:10pt; margin-bottom:0px;">Warenkorb ist leer</h5>
</div>
}
else
{
@foreach (var item in menuitemIds)
{
@foreach (var item2 in menuitems)
{
@if (item.Key == item2.IdmenuItem)
{
<tr> <tr>
<td class="br" style="padding-top:20px; padding-bottom:0px; border-bottom-width: 0px;"> <td class="br" style="padding-top:20px; padding-bottom:0px; border-bottom-width: 0px;">
@item.Value x 1 Nudel mit Hühnerfleisch (groß)
@item2.Bezeichnung <div style="font-size:0.7rem;padding-left:15px;">mit Knoblauchsoße</div>
<div style="font-size:0.7rem;padding-left:15px;">@item2.Zusatzinformation</div>
</td> </td>
<td class="d-flex justify-content-center align-items-center" style="padding-top:20px; border-bottom-width:0px;">@(item2.Preis * item.Value)€</td> <td class="d-flex justify-content-center align-items-center" style="padding-top:20px; padding-bottom:0px; border-style:hidden;">9,10€</td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;">1 Coca Cola</td>
<td class="d-flex justify-content-center align-items-center" style="padding-top:0px; border-style:hidden;">2,50€</td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-bottom-width: 0px; border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-bottom-width: 0px; border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-bottom-width: 0px; border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-bottom-width: 0px; border-style:hidden;"></td>
</tr>
<tr>
<td class="br" style=" padding-top:0px; border-bottom-width: 0px;"></td>
<td class="d-flex justify-content-center align-items-center" style="border-bottom-width: 0px; border-style:hidden;"></td>
</tr> </tr>
}
}
}
}
</tbody> </tbody>
<tfoot class="bg_lightgreen"> <tfoot class="bg_lightgreen">
<tr style="border-top:solid 1px black; background-color:white;"> <tr style="border-top:solid 1px black; background-color:white;">
<th class="" style="text-align:right;">Summe</th> <th class="" style="text-align:right;">Summe</th>
<td class="d-flex justify-content-center align-items-center"> <td class="d-flex justify-content-center align-items-center">11,60€</td>
@summe€ &nbsp;
@if (rabattEinloesen)
{
<span style="color:green;">(- @rabatt.Prozent%)</span>
}
</td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
@ -76,7 +90,7 @@
<div class="d-flex flex-column align-items-center "> <div class="d-flex flex-column align-items-center ">
<div class="tbl-container w-100"> <div class="tbl-container w-100">
<!-- <== overflow: hidden applied to parent --> <!-- <== overflow: hidden applied to parent -->
<table class="table table-bordered bdr " style=" border-radius: 50px; "> <table class="table table-bordered bdr " style=" border-radius: 50px; margin-left: 50px;">
<thead class="bg_green"> <thead class="bg_green">
<tr> <tr>
<td class="d-flex justify-content-center align-items-center" style="border-bottom:0px;"> <td class="d-flex justify-content-center align-items-center" style="border-bottom:0px;">
@ -84,12 +98,12 @@
</td> </td>
</tr> </tr>
</thead> </thead>
<tbody> <tbody >
<tr> <tr>
<td class="d-flex justify-content-center align-items-center" style="padding-top:0px; background-color:white;"> <td class="d-flex justify-content-center align-items-center" style="padding-top:0px; background-color:white;">
<div style="margin:20px;"> <div style="margin:20px;">
<div class="d-flex justify-content-center align-items-center"> <div class="d-flex justify-content-center align-items-center" >
<p>@hour:@minute Uhr (@day.@month.@year)</p> <p>12:30 Uhr</p>
</div> </div>
</div> </div>
</td> </td>
@ -98,9 +112,9 @@
</table> </table>
<div class="d-flex flex-column" style="align-items: center; margin-left: 100px;"> <div class="d-flex flex-column" style="align-items: center; margin-left: 100px;">
@*<button class="btn_back w-75">Zurück</button>*@ <button class="btn_back w-75">Zurück</button>
@*<button class="btn btn-danger w-75" style="border-radius: 50px; padding-top:12px; padding-bottom:12px; color:black;" @onclick="Aufloesen">Bestellung auflösen</button>*@ <button class="btn btn-danger w-75" style="border-radius: 50px; padding-top:12px; padding-bottom:12px; color:black;">Bestellung auflösen</button>
@*<button class="btn_forward w-75">Bestellung abschließen</button>*@ <button class="btn_forward w-75">Bestellung abschließen</button>
</div> </div>
</div> </div>
@ -110,7 +124,7 @@
@*Buttons*@ @*Buttons*@
</div> </div>
@*<div class="h-100"> @*<div class="h-100">
@ -120,177 +134,6 @@
</div> </div>
</div> </div>
</div>*@ </div>*@
@code { @code {
public int hour;
public int minute;
public int day;
public int month;
public int year;
public decimal summe;
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
private Rabatt rabatt = new Rabatt();
private bool rabattEinloesen;
public decimal rabattGutschrift;
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Rabatt> rabatte = new List<Rabatt>();
private List<BestellungspositionHasMenuitem> bestellungspositionHasMenuitems = new List<BestellungspositionHasMenuitem>();
public void Logout()
{
localStorage.Clear();
_navigationManager.NavigateTo("/");
}
//public void Aufloesen()
//{
// foreach (var bestellungsposition in bestellungspositions)
// {
// foreach (var bestellungspositionHasMenuitem in bestellungspositionHasMenuitems)
// {
// if (bestellungsposition.Idbestellung == bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung)
// {
// Http.DeleteAsync("https://localhost:7076/api/BestellungspositionHasMenuitems/" + bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung + "/" + bestellungspositionHasMenuitem.MenuItem_IDMenuItem);
// }
// }
// if (bestellungsposition.KundeIdkunde == kunde.Idkunde)
// {
// Http.DeleteAsync("https://localhost:7076/api/Bestellungspositionen/" + bestellungsposition.Idbestellung);
// }
// }
//}
protected override async Task OnInitializedAsync()
{
// get data from api
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems");
rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte");
bestellungspositionHasMenuitems = await Http.GetFromJsonAsync<List<BestellungspositionHasMenuitem>>("https://localhost:7076/api/BestellungspositionHasMenuitems");
// get kunde from localstorage
int kundeId = localStorage.GetItem<int>("KundeId");
kunde = kunden.Where(x => x.Idkunde == kundeId).FirstOrDefault();
// get all menuitemIds from bestellungspositions with the last date
foreach (var bestellungsposition in bestellungspositions)
{
if (bestellungsposition.KundeIdkunde == kunde.Idkunde)
{
//if (bestellungsposition.Datum == bestellungspositions.Max(x => x.Datum))
//{
// get hour and minute from datetime of last bestellungsposition
hour = bestellungsposition.Datum.Hour;
minute = bestellungsposition.Datum.Minute;
day = bestellungsposition.Datum.Day;
month = bestellungsposition.Datum.Month;
year = bestellungsposition.Datum.Year;
//if rabatt is used
if (bestellungsposition.RabattIdrabatt != null)
{
rabattEinloesen = true;
foreach (var rabatt in rabatte)
{
if (rabatt.Idrabatt == bestellungsposition.RabattIdrabatt)
{
this.rabatt = rabatt;
}
}
}
foreach (var bestellungspositionHasMenuitem in bestellungspositionHasMenuitems)
{
if (bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung == bestellungsposition.Idbestellung)
{
menuitemIds.Add(bestellungspositionHasMenuitem.MenuItem_IDMenuItem, bestellungsposition.Menge);
}
}
//}
}
}
// get summe
foreach (var menuitem in menuitems)
{
foreach (var menuitemId in menuitemIds)
{
if (menuitem.IdmenuItem == menuitemId.Key)
{
summe += menuitem.Preis * menuitemId.Value;
}
}
}
//if rabatt is used calculate new summe
if (rabattEinloesen)
{
rabattGutschrift = (summe * rabatt.Prozent / 100);
summe = summe - rabattGutschrift;
summe = Math.Round(summe, 2);
}
}
public class Bestellungsposition
{
public int Idbestellung { get; set; }
public int Menge { get; set; }
public DateTime Datum { get; set; }
public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; }
}
public class Kunde
{
public int Idkunde { get; set; }
public string? Code { get; set; }
public int? Treuepunkte { get; set; }
}
public class Menuitem
{
public int IdmenuItem { get; set; }
public string? Bezeichnung { get; set; }
public string? Zusatzinformation { get; set; }
public decimal Preis { get; set; }
}
public class Rabatt
{
public int Idrabatt { get; set; }
public decimal Prozent { get; set; }
public DateTime? GueltigkeitVon { get; set; }
public DateTime? GueltigkeitBis { get; set; }
}
public class BestellungspositionHasMenuitem
{
public int Bestellungsposition_IDBestellung { get; set; }
public int MenuItem_IDMenuItem { get; set; }
}
} }

View File

@ -1,36 +1,5 @@
@page "/FBestätigung" @page "/FBestätigung"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
}
public class Kunde
{
int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<h4>Vielen Dank für Ihr Feedback. Durch Feedbacks können wir uns stets verbessern.<br></h4> <h4>Vielen Dank für Ihr Feedback. Durch Feedbacks können wir uns stets verbessern.<br></h4>
@ -38,3 +7,9 @@
<input type="submit" value="Zur Startseite" class="btn"> <input type="submit" value="Zur Startseite" class="btn">
</form> </form>
</div> </div>
@code {
}

View File

@ -1,37 +1,5 @@
@page "/Feedback" @page "/Feedback"
@inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
}
public class Kunde
{
int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
}
<body> <body>
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<h4 for="feedback">Ihr Feedback: </h4> <h4 for="feedback">Ihr Feedback: </h4>
@ -47,3 +15,7 @@
</div> </div>
</body> </body>
@code {
}

View File

@ -1,21 +1,11 @@
@page "/Kontoverwaltung" @page "/Kontoverwaltung"
@inject HttpClient Http <h3>Wichtige Informationen</h3> <br>
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
<h3>Wichtige Informationen</h3>
<br>
@*log out Button *@
<div class="container mt-auto">
<button class="btn" type="button" onclick="@Logout" id="button1">Abmelden</button>
</div>
<br />
<div class="container mt-auto"> <div class="container mt-auto">
<h4>AccountID: @kunde.Code</h4> <h4>AccountID: @RegistrierungA.userName</h4>
<h4>Ihr QR-Code: </h4> <h4>Ihr QR-Code: </h4>
<img src="assets/K-QR.png" class="img" title="logo image"> <img src="assets/K-QR.png" class="img" title="logo image">
@ -24,116 +14,9 @@
</div> </div>
<div class="container mt-auto"> <br><br>
<h1>Bestellübersicht</h1>
</div>
<br>
<br>
<div class="container">
<div class="row">
<div class="col-sm-12 col-lg-6">
@*Tabelle Ihre Bestellung*@
<div class="tbl-container">
<table class="table bdr">
<thead class="bg_green">
<tr>
<td>Ihre Bestellung (@day.@month.@year)</td>
<th></th>
</tr>
</thead>
<tbody class="bg_lightgreen" style="background-color:white;">
@if (menuitemIds.Count == 0)
{
<div class="card-body">
<h5 class="card-title" style="font-size:10pt; margin-bottom:0px;">Warenkorb ist leer</h5>
</div>
}
else
{
@foreach (var item in menuitemIds)
{
@foreach (var item2 in menuitems)
{
@if (item.Key == item2.IdmenuItem)
{
<tr>
<td class="br" style="padding-top:20px; padding-bottom:0px; border-bottom-width: 0px;">
@item.Value x
@item2.Bezeichnung
<div style="font-size:0.7rem;padding-left:15px;">@item2.Zusatzinformation</div>
</td>
<td class="d-flex justify-content-center align-items-center" style="padding-top:20px; border-bottom-width:0px;">@(item2.Preis * item.Value)€</td>
</tr>
}
}
}
}
</tbody>
<tfoot class="bg_lightgreen">
<tr style="border-top:solid 1px black; background-color:white;">
<th class="" style="text-align:right;">Summe</th>
<td class="d-flex justify-content-center align-items-center">
@summe€ &nbsp;
@if (rabattEinloesen)
{
<span style="color:green;">(- @rabatt.Prozent%)</span>
}
</td>
</tr>
</tfoot>
</table>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="d-flex flex-column align-items-center ">
<div class="tbl-container w-100">
<!-- <== overflow: hidden applied to parent -->
<table class="table table-bordered bdr " style=" border-radius: 50px; margin-left: 50px;">
<thead class="bg_green">
<tr>
<td class="d-flex justify-content-center align-items-center" style="border-bottom:0px;">
<p>Abholzeit</p>
</td>
</tr>
</thead>
<tbody>
<tr>
<td class="d-flex justify-content-center align-items-center" style="padding-top:0px; background-color:white;">
<div style="margin:20px;">
<div class="d-flex justify-content-center align-items-center">
<p>@hour:@minute Uhr (@day.@month.@year)</p>
</div>
</div>
</td>
</tr>
</tbody>
</table>
<div class="d-flex flex-column" style="align-items: center; margin-left: 100px;">
@*<button class="btn_back w-75">Zurück</button>*@
@*<button class="btn btn-danger w-75" style="border-radius: 50px; padding-top:12px; padding-bottom:12px; color:black;">Bestellung auflösen</button>*@
@*<button class="btn_forward w-75">Bestellung abschließen</button>*@
</div>
</div>
</div>
</div>
</div>
</div>
@code { @code {
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
bool changeButtonBool { get; set; } = true; bool changeButtonBool { get; set; } = true;
string button1 => changeButtonBool ? "Konto deaktivieren" : "Konto aktivieren"; string button1 => changeButtonBool ? "Konto deaktivieren" : "Konto aktivieren";
@ -143,162 +26,5 @@
//TODO Datenbankaktualisierung //TODO Datenbankaktualisierung
changeButtonBool = !changeButtonBool; changeButtonBool = !changeButtonBool;
} }
public void Logout()
{
localStorage.Clear();
_navigationManager.NavigateTo("/");
}
public int hour;
public int minute;
public int day;
public int month;
public int year;
public decimal summe;
public Dictionary<int, int> menuitemIds = new Dictionary<int, int>();
private Rabatt rabatt = new Rabatt();
private bool rabattEinloesen;
public decimal rabattGutschrift;
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Rabatt> rabatte = new List<Rabatt>();
private List<BestellungspositionHasMenuitem> bestellungspositionHasMenuitems = new List<BestellungspositionHasMenuitem>();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
// get data from api
bestellungspositions = await Http.GetFromJsonAsync<List<Bestellungsposition>>("https://localhost:7076/api/bestellungspositionen");
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
menuitems = await Http.GetFromJsonAsync<List<Menuitem>>("https://localhost:7076/api/Menuitems");
rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte");
bestellungspositionHasMenuitems = await Http.GetFromJsonAsync<List<BestellungspositionHasMenuitem>>("https://localhost:7076/api/BestellungspositionHasMenuitems");
// get kunde from local storage
kunde = localStorage.GetItem<Kunde>("kunde");
// get all menuitemIds from bestellungspositions with the last date
foreach (Bestellungsposition bestellungsposition in bestellungspositions)
{
if (bestellungsposition.KundeIdkunde == kunde.Idkunde)
{
// get hour and minute from datetime of last bestellungsposition
hour = bestellungsposition.Datum.Hour;
minute = bestellungsposition.Datum.Minute;
day = bestellungsposition.Datum.Day;
month = bestellungsposition.Datum.Month;
year = bestellungsposition.Datum.Year;
//if rabatt is used
if (bestellungsposition.RabattIdrabatt != null)
{
rabattEinloesen = true;
foreach (var rabatt in rabatte)
{
if (rabatt.Idrabatt == bestellungsposition.RabattIdrabatt)
{
this.rabatt = rabatt;
}
}
}
foreach (var bestellungspositionHasMenuitem in bestellungspositionHasMenuitems)
{
if (bestellungspositionHasMenuitem.Bestellungsposition_IDBestellung == bestellungsposition.Idbestellung)
{
menuitemIds.Add(bestellungspositionHasMenuitem.MenuItem_IDMenuItem, bestellungsposition.Menge);
}
}
}
}
// get summe
foreach (var menuitem in menuitems)
{
foreach (var menuitemId in menuitemIds)
{
if (menuitem.IdmenuItem == menuitemId.Key)
{
summe += menuitem.Preis * menuitemId.Value;
}
}
}
//if rabatt is used calculate new summe
if (rabattEinloesen)
{
rabattGutschrift = (summe * rabatt.Prozent / 100);
summe = summe - rabattGutschrift;
summe = Math.Round(summe, 2);
}
}
public class Bestellungsposition
{
public int Idbestellung { get; set; }
public int Menge { get; set; }
public DateTime Datum { get; set; }
public int KundeIdkunde { get; set; }
public int? RabattIdrabatt { get; set; }
}
public class Kunde
{
public int Idkunde { get; set; }
public string? Code { get; set; }
public int? Treuepunkte { get; set; }
}
public class Menuitem
{
public int IdmenuItem { get; set; }
public string? Bezeichnung { get; set; }
public string? Zusatzinformation { get; set; }
public decimal Preis { get; set; }
}
public class Rabatt
{
public int Idrabatt { get; set; }
public decimal Prozent { get; set; }
public DateTime? GueltigkeitVon { get; set; }
public DateTime? GueltigkeitBis { get; set; }
}
public class BestellungspositionHasMenuitem
{
public int Bestellungsposition_IDBestellung { get; set; }
public int MenuItem_IDMenuItem { get; set; }
}
} }

View File

@ -1,10 +1,4 @@
@inject HttpClient Http <nav class="navbar navbar-expand-md navbar-light mb-4 me-5 ms-5 ">
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
<nav class="navbar navbar-expand-md navbar-light mb-4 me-5 ms-5 ">
<div class="container-fluid"> <div class="container-fluid">
@*<a class="navbar-brand" href="">Yummy4Friends</a>*@ @*<a class="navbar-brand" href="">Yummy4Friends</a>*@
<a class="navbar-brand" href=""> <a class="navbar-brand" href="">
@ -43,7 +37,7 @@
</li> </li>
<li class="nav-item"> <li class="nav-item">
<NavLink class="nav-link" href="Kontoverwaltung"> <NavLink class="nav-link" href="Kontoverwaltung">
#@kunde.Code #12345
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-person-fill" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-person-fill" viewBox="0 0 16 16">
<path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3Zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" /> <path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3Zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z" />
</svg> </svg>
@ -64,30 +58,4 @@
{ {
collapseNavMenu = !collapseNavMenu; collapseNavMenu = !collapseNavMenu;
} }
private List<Kunde> kunden = new List<Kunde>();
private Kunde kunde = new Kunde();
protected override async Task OnInitializedAsync()
{
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
}
public class Kunde
{
int Idkunde { get; set; }
public string Code { get; set; }
public int Treuepunkte { get; set; }
}
} }

View File

@ -1,12 +1,7 @@
@page "/RegistrierungA" @page "/RegistrierungA"
@using System.Text;
@using System.Security.Cryptography;
@layout Registrierung @layout Registrierung
@inject HttpClient Http @inject NavigationManager NavManager
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
@inject IJSRuntime JSRuntime;
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
<p>Benutzername:</p> <p>Benutzername:</p>
@ -21,58 +16,21 @@
</div> </div>
@code { @code {
public string inputName { get; set; } public string inputName { get; set; } = string.Empty;
public string inputPassword { get; set; } public string inputPassword { get; set; } = string.Empty;
public string inputPasswordEnc { get; set; }
private List<Admin> admins = new List<Admin>(); public static string userName { get; set; } = string.Empty;
private Admin admin = new Admin();
public void Login() public void Login() {
{ if (inputName == userDataName && inputPassword == userDataPassword) {
// if inputName and inputPassword is not null localStorage.SetItem("name", inputName);
if (string.IsNullOrEmpty(inputName) || string.IsNullOrEmpty(inputPassword)) userName = localStorage.GetItem<string>("name");
{ NavManager.NavigateTo("/Bestelluebersicht");
JSRuntime.InvokeVoidAsync("alert", "Benutzernamen oder Passwort ist falsch!");
return;
} }
else
{
//encode inputpassword
inputPasswordEnc = Convert.ToHexString(SHA512.Create().ComputeHash(Encoding.UTF8.GetBytes(inputPassword)));
// if inputName is in admins with the encrypt SHA512 password
if (admins.Any(a => a.Username == inputName && a.Password == inputPasswordEnc))
{
localStorage.SetItem("admin", admins.First(a => a.Username == inputName && a.Password == inputPasswordEnc));
_navigationManager.NavigateTo("/Bestelluebersicht");
}
}
}
protected override async Task OnInitializedAsync()
{
admins = await Http.GetFromJsonAsync<List<Admin>>("https://localhost:7076/api/admins");
// if already logged in navigate to Bestelluebersicht
// if localsorage admin object is valid from the api
if (localStorage.ContainKey("admin"))
{
admin = localStorage.GetItem<Admin>("admin");
if (admin != null && !admins.Any(a => a.Username == admin.Username && a.Password == admin.Password))
_navigationManager.NavigateTo("/RegistrierungA");
else
_navigationManager.NavigateTo("/Bestelluebersicht");
}
}
public partial class Admin
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
} }
} }
@code {
public string userDataName { get; set; } = "";
public string userDataPassword { get; set; } = "";
}

View File

@ -1,7 +1,6 @@
@page "/Yummy-Punkte" @page "/Yummy-Punkte"
@inject HttpClient Http @inject HttpClient Http
@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
@inject NavigationManager _navigationManager
<body> <body>
<div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content"> <div class="container col-lg-5 col-md-9 col-sm-12 d-flex flex-column " id="content">
@ -60,23 +59,10 @@
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
// kunde login start
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
if (localStorage.ContainKey("kunde"))
kunde = localStorage.GetItem<Kunde>("kunde");
else
_navigationManager.NavigateTo("/");
if (kunde != null && !kunden.Any(k => k.Code == kunde.Code))
_navigationManager.NavigateTo("/");
// kunde login end
kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden"); kunden = await Http.GetFromJsonAsync<List<Kunde>>("https://localhost:7076/api/kunden");
rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte"); rabatte = await Http.GetFromJsonAsync<List<Rabatt>>("https://localhost:7076/api/Rabatte");
// get kunde from local storage kunde = kunden[0];
kunde = localStorage.GetItem<Kunde>("kunde");
// get the most recent rabatt, that are still valid (GueltigkeitBis) // get the most recent rabatt, that are still valid (GueltigkeitBis)
// if there is no rabatt, set the rabatt to null // if there is no rabatt, set the rabatt to null