Add db integration show menuitems

This commit is contained in:
MET18937 2023-06-23 14:52:39 +02:00
parent 9cd1376cfd
commit a51fe08db8
10 changed files with 969 additions and 356 deletions

2
.gitignore vendored
View File

@ -136,3 +136,5 @@ $RECYCLE.BIN/
.DS_Store .DS_Store
_NCrunch* _NCrunch*
/src/WebApi/appsettings.json
/src/WebApi/appsettings.json

View File

@ -0,0 +1,138 @@
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 MenuitemHasAllergiesController : ControllerBase
{
private readonly WebApiContext _context;
public MenuitemHasAllergiesController(WebApiContext context)
{
_context = context;
}
// GET: api/MenuitemHasAllergies
[HttpGet]
public async Task<ActionResult<IEnumerable<MenuitemHasAllergie>>> GetMenuitemHasAllergie()
{
if (_context.MenuitemHasAllergie == null)
{
return NotFound();
}
return await _context.MenuitemHasAllergie.ToListAsync();
}
// GET: api/MenuitemHasAllergies/5
[HttpGet("{id}")]
public async Task<ActionResult<MenuitemHasAllergie>> GetMenuitemHasAllergie(int? id)
{
if (_context.MenuitemHasAllergie == null)
{
return NotFound();
}
var menuitemHasAllergie = await _context.MenuitemHasAllergie.FindAsync(id);
if (menuitemHasAllergie == null)
{
return NotFound();
}
return menuitemHasAllergie;
}
// PUT: api/MenuitemHasAllergies/5
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPut("{id}")]
public async Task<IActionResult> PutMenuitemHasAllergie(int? id, MenuitemHasAllergie menuitemHasAllergie)
{
if (id != menuitemHasAllergie.MenuItem_IDMenuItem)
{
return BadRequest();
}
_context.Entry(menuitemHasAllergie).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!MenuitemHasAllergieExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
// POST: api/MenuitemHasAllergies
// To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
[HttpPost]
public async Task<ActionResult<MenuitemHasAllergie>> PostMenuitemHasAllergie(MenuitemHasAllergie menuitemHasAllergie)
{
if (_context.MenuitemHasAllergie == null)
{
return Problem("Entity set 'WebApiContext.MenuitemHasAllergie' is null.");
}
_context.MenuitemHasAllergie.Add(menuitemHasAllergie);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (MenuitemHasAllergieExists(menuitemHasAllergie.MenuItem_IDMenuItem))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtAction("GetMenuitemHasAllergie", new { id = menuitemHasAllergie.MenuItem_IDMenuItem }, menuitemHasAllergie);
}
// DELETE: api/MenuitemHasAllergies/5
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteMenuitemHasAllergie(int? id)
{
if (_context.MenuitemHasAllergie == null)
{
return NotFound();
}
var menuitemHasAllergie = await _context.MenuitemHasAllergie.FindAsync(id);
if (menuitemHasAllergie == null)
{
return NotFound();
}
_context.MenuitemHasAllergie.Remove(menuitemHasAllergie);
await _context.SaveChangesAsync();
return NoContent();
}
private bool MenuitemHasAllergieExists(int? id)
{
return (_context.MenuitemHasAllergie?.Any(e => e.MenuItem_IDMenuItem == id)).GetValueOrDefault();
}
}
}

View File

@ -145,31 +145,31 @@ public partial class WebApiContext : DbContext
.OnDelete(DeleteBehavior.ClientSetNull) .OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_MenuItem_MenuItemKategorie1"); .HasConstraintName("fk_MenuItem_MenuItemKategorie1");
entity.HasMany(d => d.AllergieIdallergies).WithMany(p => p.MenuItemIdmenuItems) //entity.HasMany(d => d.AllergieIdallergies).WithMany(p => p.MenuItemIdmenuItems)
.UsingEntity<Dictionary<string, object>>( // .UsingEntity<Dictionary<string, object>>(
"MenuitemHasAllergie", // "MenuitemHasAllergie",
r => r.HasOne<Allergie>().WithMany() // r => r.HasOne<Allergie>().WithMany()
.HasForeignKey("AllergieIdallergie") // .HasForeignKey("AllergieIdallergie")
.OnDelete(DeleteBehavior.ClientSetNull) // .OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_MenuItem_has_Allergie_Allergie1"), // .HasConstraintName("fk_MenuItem_has_Allergie_Allergie1"),
l => l.HasOne<Menuitem>().WithMany() // l => l.HasOne<Menuitem>().WithMany()
.HasForeignKey("MenuItemIdmenuItem") // .HasForeignKey("MenuItemIdmenuItem")
.OnDelete(DeleteBehavior.ClientSetNull) // .OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_MenuItem_has_Allergie_MenuItem1"), // .HasConstraintName("fk_MenuItem_has_Allergie_MenuItem1"),
j => // j =>
{ // {
j.HasKey("MenuItemIdmenuItem", "AllergieIdallergie") // j.HasKey("MenuItemIdmenuItem", "AllergieIdallergie")
.HasName("PRIMARY") // .HasName("PRIMARY")
.HasAnnotation("MySql:IndexPrefixLength", new[] { 0, 0 }); // .HasAnnotation("MySql:IndexPrefixLength", new[] { 0, 0 });
j.ToTable("menuitem_has_allergie"); // j.ToTable("menuitem_has_allergie");
j.HasIndex(new[] { "AllergieIdallergie" }, "fk_MenuItem_has_Allergie_Allergie1"); // j.HasIndex(new[] { "AllergieIdallergie" }, "fk_MenuItem_has_Allergie_Allergie1");
j.IndexerProperty<int>("MenuItemIdmenuItem") // j.IndexerProperty<int>("MenuItemIdmenuItem")
.HasColumnType("int(11)") // .HasColumnType("int(11)")
.HasColumnName("MenuItem_IDMenuItem"); // .HasColumnName("MenuItem_IDMenuItem");
j.IndexerProperty<int>("AllergieIdallergie") // j.IndexerProperty<int>("AllergieIdallergie")
.HasColumnType("int(11)") // .HasColumnType("int(11)")
.HasColumnName("Allergie_IDAllergie"); // .HasColumnName("Allergie_IDAllergie");
}); // });
}); });
modelBuilder.Entity<Menuitemkategorie>(entity => modelBuilder.Entity<Menuitemkategorie>(entity =>
@ -223,8 +223,44 @@ public partial class WebApiContext : DbContext
entity.Property(e => e.Prozent).HasPrecision(8, 2); entity.Property(e => e.Prozent).HasPrecision(8, 2);
}); });
//modelBuilder.Entity<Admin>(entity =>
//{
// entity.HasKey(e => e.Id).HasName("PRIMARY");
// entity.ToTable("admin");
// entity.Property(e => e.Id)
// .ValueGeneratedNever()
// .HasColumnType("int(11)")
// .HasColumnName("Id");
// entity.Property(e => e.Username).HasMaxLength(100);
// entity.Property(e => e.Password).HasMaxLength(100);
//});
//modelBuilder.Entity<BestellungspositionHasMenuitem>(entity =>
//{
// entity.HasKey(e => new { e.BestellungspositionId, e.MenuitemId })
// .HasName("PRIMARY");
// entity.ToTable("bestellungsposition_has_menuitem");
// entity.Property(e => e.BestellungspositionId).HasColumnType("int(11)");
// entity.Property(e => e.MenuitemId).HasColumnType("int(11)");
//});
modelBuilder.Entity<MenuitemHasAllergie>(entity =>
{
entity.HasKey(e => new { e.MenuItem_IDMenuItem, e.Allergie_IDAllergie })
.HasName("PRIMARY");
entity.ToTable("menuitem_has_allergie");
entity.Property(e => e.MenuItem_IDMenuItem).HasColumnType("int(11)");
entity.Property(e => e.Allergie_IDAllergie).HasColumnType("int(11)");
});
OnModelCreatingPartial(modelBuilder); OnModelCreatingPartial(modelBuilder);
} }
partial void OnModelCreatingPartial(ModelBuilder modelBuilder); partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
public DbSet<WebApi.Models.MenuitemHasAllergie> MenuitemHasAllergie { get; set; } = default!;
} }

View File

@ -0,0 +1,11 @@
namespace WebApi.Models
{
public class MenuitemHasAllergie
{
// navigation references Menuitem
public int? MenuItem_IDMenuItem { get; set; }
// navigation references Allergie
public int? Allergie_IDAllergie { get; set; }
}
}

View File

@ -7,18 +7,18 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.4" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.5"> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.5"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.6" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="7.0.7" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0" /> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,12 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"Y4FDB": "Server=localhost;Database=y4f;Uid=user;Pwd=user"
}
}

View File

@ -3,11 +3,9 @@
@inject HttpClient Http @inject HttpClient Http
<h1>Speisekarte Chinesisch</h1> <h1>Speisekarte Chinesisch</h1>
@* create an container bootstrap 5*@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
@* Navigation button group, stretch on the width size of the col-8 *@
<div class="btn-group d-flex" role="group"> <div class="btn-group d-flex" role="group">
<button type="button" class="btn">Chinesisch</button> <button type="button" class="btn">Chinesisch</button>
<button type="button" class="btn">Nudel</button> <button type="button" class="btn">Nudel</button>
@ -15,45 +13,39 @@
<button type="button" class="btn">Nachspeise</button> <button type="button" class="btn">Nachspeise</button>
</div> </div>
@* create an bootstrap card for each speise*@ @foreach (var item in menuitemueberkategories)
@*make card round with border*@ {
<div class="card mt-3"> @if (item.Bezeichnung == "Chinesisch")
<div class="card-body"> {
<h5 class="card-title">Nudeln mit Hühnerfleisch (A, E)</h5> @foreach (var item2 in menuitemkategories)
<p class="card-text">Huhn, Gemüse</p> {
</div> if (item2.MenuItemUeberkategorieIdmenuItemUeberkategorie == item.IdmenuItemUeberkategorie)
</div> {
@foreach (var item3 in menuitems)
<div class="card mt-3"> {
<div class="card-body"> if (item2.IdmenuItemKategorie == item3.MenuItemKategorieIdmenuItemKategorie)
<h5 class="card-title">Knusprige Ente auf Nudeln (A, D)</h5> {
<p class="card-text">Ente</p>
</div>
</div>
<div class="card mt-3 "> <div class="card mt-3 ">
<div class="card-body"> <div class="card-body">
@*create two divs columns*@ @*create two divs columns*@
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<h5 class="card-title">Nudeln mit Tofu (D, F)</h5> <h5 class="card-title">@item3.Bezeichnung</h5>
<p class="card-text">Tofu</p> <p class="card-text">@item3.Zusatzinformation</p>
</div> </div>
@*div text center*@ @*div text center*@
<div class="col-4 d-flex justify-content-center align-items-center"> <div class="col-4 d-flex justify-content-center align-items-center">
<div style="font-size:15pt;">10,00€</div> <div style="font-size:15pt;">@item3.Preis</div>
</div>
</div>
</div> </div>
</div> </div>
</div>
</div>
}
}
}
}
}
}
</div> </div>
<div class="col-4"> <div class="col-4">
@* warenkorb anzeige als bootstrap card*@ @* warenkorb anzeige als bootstrap card*@
@ -76,9 +68,6 @@
<a href="#" class="btn btn-primary mx-2 mt-5">Zurück</a> <a href="#" class="btn btn-primary mx-2 mt-5">Zurück</a>
<a href="#" class="btn btn-primary mx-2 mt-1">Weiter</a> <a href="#" class="btn btn-primary mx-2 mt-1">Weiter</a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -87,6 +76,122 @@
@code { @code {
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<Rabatt> rabatte = new List<Rabatt>();
protected override async Task OnInitializedAsync()
{
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");
} }
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 virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
}

View File

@ -14,44 +14,42 @@
<button type="button" class="btn">Bier</button> <button type="button" class="btn">Bier</button>
</div> </div>
@* create an bootstrap card for each speise*@ @foreach (var item in menuitemueberkategories)
@*make card round with border*@ {
<div class="card mt-3"> @if (item.Bezeichnung == "Getränke")
<div class="card-body"> {
<h5 class="card-title">Nudeln mit Hühnerfleisch (A, E)</h5> @foreach (var item2 in menuitemkategories)
<p class="card-text">Huhn, Gemüse</p> {
</div> if (item2.MenuItemUeberkategorieIdmenuItemUeberkategorie == item.IdmenuItemUeberkategorie)
</div> {
@foreach (var item3 in menuitems)
<div class="card mt-3"> {
<div class="card-body"> if (item2.IdmenuItemKategorie == item3.MenuItemKategorieIdmenuItemKategorie)
<h5 class="card-title">Knusprige Ente auf Nudeln (A, D)</h5> {
<p class="card-text">Ente</p>
</div>
</div>
<div class="card mt-3 "> <div class="card mt-3 ">
<div class="card-body"> <div class="card-body">
@*create two divs columns*@ @*create two divs columns*@
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<h5 class="card-title">Nudeln mit Tofu (D, F)</h5> <h5 class="card-title">@item3.Bezeichnung</h5>
<p class="card-text">Tofu</p> <p class="card-text">@item3.Zusatzinformation</p>
</div> </div>
@*div text center*@ @*div text center*@
<div class="col-4 d-flex justify-content-center align-items-center"> <div class="col-4 d-flex justify-content-center align-items-center">
<div style="font-size:15pt;">10,00€</div> <div style="font-size:15pt;">@item3.Preis</div>
</div>
</div>
</div> </div>
</div> </div>
</div>
</div>
}
}
}
}
}
}
</div> </div>
<div class="col-4"> <div class="col-4">
@ -85,7 +83,122 @@
@code { @code {
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<Rabatt> rabatte = new List<Rabatt>();
protected override async Task OnInitializedAsync()
{
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");
} }
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 virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
}

View File

@ -16,44 +16,40 @@
<button type="button" class="btn">Vorspeisen</button> <button type="button" class="btn">Vorspeisen</button>
</div> </div>
@* create an bootstrap card for each speise*@ @foreach (var item in menuitemueberkategories)
@*make card round with border*@ {
<div class="card mt-3"> @if (item.Bezeichnung == "Japanisch")
<div class="card-body"> {
<h5 class="card-title">Nudeln mit Hühnerfleisch (A, E)</h5> @foreach (var item2 in menuitemkategories)
<p class="card-text">Huhn, Gemüse</p> {
</div> if (item2.MenuItemUeberkategorieIdmenuItemUeberkategorie == item.IdmenuItemUeberkategorie)
</div> {
@foreach (var item3 in menuitems)
<div class="card mt-3"> {
<div class="card-body"> if (item2.IdmenuItemKategorie == item3.MenuItemKategorieIdmenuItemKategorie)
<h5 class="card-title">Knusprige Ente auf Nudeln (A, D)</h5> {
<p class="card-text">Ente</p>
</div>
</div>
<div class="card mt-3 "> <div class="card mt-3 ">
<div class="card-body"> <div class="card-body">
@*create two divs columns*@ @*create two divs columns*@
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<h5 class="card-title">Nudeln mit Tofu (D, F)</h5> <h5 class="card-title">@item3.Bezeichnung</h5>
<p class="card-text">Tofu</p> <p class="card-text">@item3.Zusatzinformation</p>
</div> </div>
@*div text center*@ @*div text center*@
<div class="col-4 d-flex justify-content-center align-items-center"> <div class="col-4 d-flex justify-content-center align-items-center">
<div style="font-size:15pt;">10,00€</div> <div style="font-size:15pt;">@item3.Preis</div>
</div>
</div>
</div> </div>
</div> </div>
</div>
</div>
}
}
}
}
}
}
</div> </div>
<div class="col-4"> <div class="col-4">
@ -90,4 +86,114 @@
@code { @code {
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<Rabatt> rabatte = new List<Rabatt>();
protected override async Task OnInitializedAsync()
{
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");
} }
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 virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
}

View File

@ -15,44 +15,43 @@
<button type="button" class="btn">Nachspeise</button> <button type="button" class="btn">Nachspeise</button>
</div> </div>
@* create an bootstrap card for each speise*@
@*make card round with border*@
<div class="card mt-3">
<div class="card-body">
<h5 class="card-title">Nudeln mit Hühnerfleisch (A, E)</h5>
<p class="card-text">Huhn, Gemüse</p>
</div>
</div>
<div class="card mt-3"> @foreach (var item in menuitemueberkategories)
<div class="card-body"> {
<h5 class="card-title">Knusprige Ente auf Nudeln (A, D)</h5> @if (item.Bezeichnung == "Japanisch")
<p class="card-text">Ente</p> {
</div> @foreach (var item2 in menuitemkategories)
</div> {
if (item2.MenuItemUeberkategorieIdmenuItemUeberkategorie == item.IdmenuItemUeberkategorie)
{
@foreach (var item3 in menuitems)
{
if (item2.IdmenuItemKategorie == item3.MenuItemKategorieIdmenuItemKategorie)
{
<div class="card mt-3 "> <div class="card mt-3 ">
<div class="card-body"> <div class="card-body">
@*create two divs columns*@ @*create two divs columns*@
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<h5 class="card-title">Nudeln mit Tofu (D, F)</h5> <h5 class="card-title">@item3.Bezeichnung</h5>
<p class="card-text">Tofu</p> <p class="card-text">@item3.Zusatzinformation</p>
</div> </div>
@*div text center*@ @*div text center*@
<div class="col-4 d-flex justify-content-center align-items-center"> <div class="col-4 d-flex justify-content-center align-items-center">
<div style="font-size:15pt;">10,00€</div> <div style="font-size:15pt;">@item3.Preis</div>
</div>
</div>
</div> </div>
</div> </div>
</div>
</div>
}
}
}
}
}
}
</div> </div>
<div class="col-4"> <div class="col-4">
@ -86,7 +85,122 @@
@code { @code {
// allergien, bestellungsposition, kunde, menuitem, menuitemkategorie, menuitemueberkategorie, rabatt
private List<Allergie> allergien = new List<Allergie>();
private List<Bestellungsposition> bestellungspositions = new List<Bestellungsposition>();
private List<Kunde> kunden = new List<Kunde>();
private List<Menuitem> menuitems = new List<Menuitem>();
private List<Menuitemkategorie> menuitemkategories = new List<Menuitemkategorie>();
private List<Menuitemueberkategorie> menuitemueberkategories = new List<Menuitemueberkategorie>();
private List<Rabatt> rabatte = new List<Rabatt>();
protected override async Task OnInitializedAsync()
{
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");
} }
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 virtual ICollection<Bestellungsposition> Bestellungspositions { get; set; } = new List<Bestellungsposition>();
}
}