Compare commits

..

No commits in common. "9add5ac628a7c833aa52fef81222c4e9505dbdc4" and "c9f10887eeb407af24eb04e3a4a404ba7ae80598" have entirely different histories.

8 changed files with 100 additions and 752 deletions

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

@ -5,19 +5,19 @@ namespace WebApi.Models;
public partial class Bestellungsposition public partial class Bestellungsposition
{ {
public int Idbestellung { get; set; } public int Idbestellung { get; set; }
public int? Menge { get; set; } public int? Menge { get; set; }
public DateTime? Datum { get; set; } public DateTime? Datum { get; set; }
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

@ -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="/Bestellabschluss" class="btn_forward btn w-75 ">Weiter</a>
</div> </div>
</div> </div>
</div> </div>
@ -121,28 +121,9 @@
</div> </div>
@code { @code {
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>();
@ -218,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

View File

@ -1,305 +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*@ <img src="assets/White-Circle.png ">
@if (kunde.Treuepunkte > i) }
{ <br>
<img src="assets/Point-Circle.png "> </div>
}
else
{
<img src="assets/White-Circle.png ">
}
}
<br>
</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">
<form id="button1" action="Warenkorb">
<input type="submit" value="Zurück" class="btn">
</form>
<form id="button2" action="Confirm">
<input type="submit" value="Vorbestellen" class="btn">
</form>
</div>
</div>
}
<div class="button">
<form id="button1" action="Warenkorb">
<a href="/shopping_cart" class="btn">Zurück</a>
</form>
<form id="button2" action="Confirm">
<input value="Vorbestellen" class="btn" @onclick="Vorbestellen" />
</form>
</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);
}
else
{
localStorage.SetItem("RabattEinloesen", false);
}
// 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
bestellungsposition.RabattIdrabatt = rabatt.Idrabatt;
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);
}
// delete all localStorage
localStorage.SetItem("MenuItemIds", new Dictionary<int, int>());
localStorage.SetItem("Hour", 0);
localStorage.SetItem("Minute", 0);
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()
{
// 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");
bestellungspositionHasMenuitems = await Http.GetFromJsonAsync<List<BestellungspositionHasMenuitem>>("https://localhost:7076/api/BestellungspositionHasMenuitems");
// test use the first kunde
kunde = kunden[0];
// 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,236 +1,38 @@
@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>
<tr class="loadtext"> <tr class="loadtext">
<td>Bestellung eingegangen</td> <td>Bestellung eingegangen</td>
<td class="load2">Bestellung wird zubereitet</td> <td class="load2">Bestellung wird zubereitet</td>
<td class="load3">Essen abholbereit</td> <td class="load3">Essen abholbereit</td>
</tr> </tr>
</table> </table>
<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"> <input type="submit" value="Zur Startseite" class="btn">
@*<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 Vorbestellen()
{
// set rabattEinloesen
if (rabattEinloesen)
localStorage.SetItem("RabattEinloesen", true);
else
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>();
protected override async Task OnInitializedAsync()
{
// 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");
// test use the first kunde
kunde = kunden[0];
// 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

@ -14,10 +14,6 @@
</div> </div>
<div class="container mt-auto">
<h1>Bestellübersicht</h1>
</div>
<br><br> <br><br>
@code { @code {