Bump .NEt

Add Freezer stuff

Update Project

Update Data
This commit is contained in:
KaasKop
2026-01-25 19:33:30 +01:00
parent 01da101b94
commit 5e990fadc5
18 changed files with 43 additions and 513 deletions

2
.gitignore vendored
View File

@@ -78,3 +78,5 @@ ClientBin/
.idea/
*.sqlite3
/db.sqlite3-shm
/db.sqlite3-wal

View File

@@ -1,26 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>Api</RootNamespace>
<LangVersion>latestmajor</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="12.0.1" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.8">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.5" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Data\Data.csproj" />
</ItemGroup>
</Project>

View File

@@ -1,14 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Data;
using Data.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ThuisApi.Data;
using ThuisApi.Models;
namespace ThuisApi.Controllers
namespace Api.Controllers
{
[Route("api/[controller]")]
[ApiController]

View File

@@ -1,15 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Api.Models;
using AutoMapper;
using Microsoft.AspNetCore.Http;
using Data;
using Data.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ThuisApi.Data;
using ThuisApi.Models;
namespace ThuisApi.Controllers
namespace Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
@@ -28,21 +24,11 @@ namespace ThuisApi.Controllers
[HttpGet]
public async Task<ActionResult<IEnumerable<FreezerDto>>> GetFreezer()
{
// Iterate over the freezers to add amount in freezer.
var freezers = await _context.Freezer.ToListAsync();
var freezerResponse = new List<FreezerDto>();
foreach (var freezer in freezers)
return Ok(new { freezers = _context.Freezer.Select(freezer => new FreezerDto
{
freezerResponse.Add(new FreezerDto
{
FreezerId = freezer.FreezerId,
Name = freezer.Name,
AmountInFreezer =
await _context.FreezerItem.CountAsync(a => a.Freezer.FreezerId == freezer.FreezerId)
});
}
return Ok(freezerResponse.ToArray());
FreezerId = freezer.FreezerId, Name = freezer.Name,
AmountInFreezer = _context.FreezerItem.Count(fi => fi.FreezerId == freezer.FreezerId)
})});
}
// GET: api/Freezer/5

View File

@@ -1,17 +1,12 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Api.Models;
using AutoMapper;
using Microsoft.AspNetCore.Http;
using Data;
using Data.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ThuisApi.Data;
using ThuisApi.Models;
namespace ThuisApi.Controllers
namespace Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
@@ -42,9 +37,9 @@ namespace ThuisApi.Controllers
return NotFound();
}
return Ok(_mapper.Map<FreezerItem[], List<FreezerItemDto>>(await _context.FreezerItem
return Ok(new {freezerItems = _mapper.Map<FreezerItem[], List<FreezerItemDto>>(await _context.FreezerItem
.Where(a => a.FreezerId == id)
.ToArrayAsync()));
.ToArrayAsync())});
}
// GET: api/FreezerItem/5
@@ -98,9 +93,9 @@ namespace ThuisApi.Controllers
public async Task<ActionResult<FreezerItemDto>> PostFreezerItem(FreezerItemDto freezerItemDto)
{
var mappedItem = _mapper.Map<FreezerItemDto, FreezerItem>(freezerItemDto);
if (mappedItem.DatePlacedInFreezer.ToString(CultureInfo.CurrentCulture).Equals(""))
if (mappedItem.AddedOn.ToString(CultureInfo.CurrentCulture).Equals(""))
{
mappedItem.DatePlacedInFreezer = DateTime.Now;
mappedItem.AddedOn = DateTime.Now;
}
mappedItem.Freezer =

View File

@@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
namespace ThuisApi.Controllers;
namespace Api.Controllers;
public class IndexController : ControllerBase
{

View File

@@ -1,51 +0,0 @@
using Microsoft.EntityFrameworkCore;
using ThuisApi.Models;
namespace ThuisApi.Data;
public class ThuisDbContext : DbContext
{
public DbSet<Card> Cards { get; set; }
public DbSet<Freezer> Freezer { get; set; }
public DbSet<FreezerItem> FreezerItem { get; set; }
public ThuisDbContext(DbContextOptions<ThuisDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Freezer>().HasData(
new Freezer
{
FreezerId = 1,
Name = "Keuken"
},
new Freezer
{
FreezerId = 2,
Name = "Berging"
});
modelBuilder.Entity<FreezerItem>().HasData(
new FreezerItem
{
FreezerItemId = 1,
FreezerId = 1,
Item = "Kip",
Amount = 1,
Drawer = 1
},
new FreezerItem
{
FreezerItemId = 2,
FreezerId = 2,
Item = "1 pak van 2 hamburgers",
Amount = 1,
Drawer = 2
});
}
}

View File

@@ -1,131 +0,0 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ThuisApi.Data;
#nullable disable
namespace ThuisApi.Migrations
{
[DbContext(typeof(ThuisDbContext))]
[Migration("20230406151852_InitialDb")]
partial class InitialDb
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.4");
modelBuilder.Entity("ThuisApi.Models.Card", b =>
{
b.Property<int>("CardId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Code")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Issuer")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("CardId");
b.ToTable("Cards");
});
modelBuilder.Entity("ThuisApi.Models.Freezer", b =>
{
b.Property<int>("FreezerId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("FreezerId");
b.ToTable("Freezer");
b.HasData(
new
{
FreezerId = 1,
Name = "Keuken"
},
new
{
FreezerId = 2,
Name = "Berging"
});
});
modelBuilder.Entity("ThuisApi.Models.FreezerItem", b =>
{
b.Property<int>("FreezerItemId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("Amount")
.HasColumnType("INTEGER");
b.Property<DateTime>("DatePlacedInFreezer")
.HasColumnType("TEXT");
b.Property<int>("Drawer")
.HasColumnType("INTEGER");
b.Property<int>("FreezerId")
.HasColumnType("INTEGER");
b.Property<string>("Item")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("FreezerItemId");
b.HasIndex("FreezerId");
b.ToTable("FreezerItem");
b.HasData(
new
{
FreezerItemId = 1,
Amount = 1,
DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Drawer = 1,
FreezerId = 1,
Item = "Kip"
},
new
{
FreezerItemId = 2,
Amount = 1,
DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Drawer = 2,
FreezerId = 2,
Item = "1 pak van 2 hamburgers"
});
});
modelBuilder.Entity("ThuisApi.Models.FreezerItem", b =>
{
b.HasOne("ThuisApi.Models.Freezer", "Freezer")
.WithMany()
.HasForeignKey("FreezerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Freezer");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -1,103 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
namespace ThuisApi.Migrations
{
/// <inheritdoc />
public partial class InitialDb : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Cards",
columns: table => new
{
CardId = table.Column<int>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Issuer = table.Column<string>(type: "TEXT", nullable: false),
Code = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Cards", x => x.CardId);
});
migrationBuilder.CreateTable(
name: "Freezer",
columns: table => new
{
FreezerId = table.Column<int>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Freezer", x => x.FreezerId);
});
migrationBuilder.CreateTable(
name: "FreezerItem",
columns: table => new
{
FreezerItemId = table.Column<int>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Item = table.Column<string>(type: "TEXT", nullable: false),
Amount = table.Column<int>(type: "INTEGER", nullable: false),
Drawer = table.Column<int>(type: "INTEGER", nullable: false),
DatePlacedInFreezer = table.Column<DateTime>(type: "TEXT", nullable: false),
FreezerId = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_FreezerItem", x => x.FreezerItemId);
table.ForeignKey(
name: "FK_FreezerItem_Freezer_FreezerId",
column: x => x.FreezerId,
principalTable: "Freezer",
principalColumn: "FreezerId",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.InsertData(
table: "Freezer",
columns: new[] { "FreezerId", "Name" },
values: new object[,]
{
{ 1, "Keuken" },
{ 2, "Berging" }
});
migrationBuilder.InsertData(
table: "FreezerItem",
columns: new[] { "FreezerItemId", "Amount", "DatePlacedInFreezer", "Drawer", "FreezerId", "Item" },
values: new object[,]
{
{ 1, 1, new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), 1, 1, "Kip" },
{ 2, 1, new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), 2, 2, "1 pak van 2 hamburgers" }
});
migrationBuilder.CreateIndex(
name: "IX_FreezerItem_FreezerId",
table: "FreezerItem",
column: "FreezerId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Cards");
migrationBuilder.DropTable(
name: "FreezerItem");
migrationBuilder.DropTable(
name: "Freezer");
}
}
}

View File

@@ -1,128 +0,0 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using ThuisApi.Data;
#nullable disable
namespace ThuisApi.Migrations
{
[DbContext(typeof(ThuisDbContext))]
partial class ThuisDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.4");
modelBuilder.Entity("ThuisApi.Models.Card", b =>
{
b.Property<int>("CardId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Code")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Issuer")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("CardId");
b.ToTable("Cards");
});
modelBuilder.Entity("ThuisApi.Models.Freezer", b =>
{
b.Property<int>("FreezerId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("FreezerId");
b.ToTable("Freezer");
b.HasData(
new
{
FreezerId = 1,
Name = "Keuken"
},
new
{
FreezerId = 2,
Name = "Berging"
});
});
modelBuilder.Entity("ThuisApi.Models.FreezerItem", b =>
{
b.Property<int>("FreezerItemId")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("Amount")
.HasColumnType("INTEGER");
b.Property<DateTime>("DatePlacedInFreezer")
.HasColumnType("TEXT");
b.Property<int>("Drawer")
.HasColumnType("INTEGER");
b.Property<int>("FreezerId")
.HasColumnType("INTEGER");
b.Property<string>("Item")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("FreezerItemId");
b.HasIndex("FreezerId");
b.ToTable("FreezerItem");
b.HasData(
new
{
FreezerItemId = 1,
Amount = 1,
DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Drawer = 1,
FreezerId = 1,
Item = "Kip"
},
new
{
FreezerItemId = 2,
Amount = 1,
DatePlacedInFreezer = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified),
Drawer = 2,
FreezerId = 2,
Item = "1 pak van 2 hamburgers"
});
});
modelBuilder.Entity("ThuisApi.Models.FreezerItem", b =>
{
b.HasOne("ThuisApi.Models.Freezer", "Freezer")
.WithMany()
.HasForeignKey("FreezerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Freezer");
});
#pragma warning restore 612, 618
}
}
}

View File

@@ -1,9 +0,0 @@
namespace ThuisApi.Models
{
public class Card
{
public int CardId { get; set; }
public string Issuer { get; set; }
public string Code { get; set; }
}
}

View File

@@ -1,7 +0,0 @@
namespace ThuisApi.Models;
public class Freezer
{
public int FreezerId { get; set; }
public string Name { get; set; }
}

View File

@@ -1,8 +1,8 @@
namespace ThuisApi.Models;
namespace Api.Models;
public class FreezerDto
{
public int FreezerId { get; set; }
public string Name { get; set; }
public string? Name { get; set; }
public int AmountInFreezer { get; set; }
}

View File

@@ -1,13 +0,0 @@
namespace ThuisApi.Models;
public class FreezerItem
{
public int FreezerItemId { get; set; }
public string Item { get; set; }
public int Amount { get; set; }
public int Drawer { get; set; }
public DateTime DatePlacedInFreezer { get; set; }
public int FreezerId { get; set; }
public Freezer Freezer { get; set; }
}

View File

@@ -1,11 +1,11 @@
namespace ThuisApi.Models;
namespace Api.Models;
public class FreezerItemDto
{
public int FreezerItemId { get; set; }
public string Item { get; set; }
public string? Name { get; set; }
public int Amount { get; set; }
public int Drawer { get; set; }
public string? DateTimeAdded { get; set; }
public string? AddedOn { get; set; }
public int FreezerId { get; set; }
}

View File

@@ -1,6 +1,7 @@
using AutoMapper;
using Data.Models;
namespace ThuisApi.Models;
namespace Api.Models;
public class ThuisApiProfile : Profile
{

View File

@@ -1,6 +1,6 @@
using Api.Models;
using Data;
using Microsoft.EntityFrameworkCore;
using ThuisApi.Data;
using ThuisApi.Models;
var builder = WebApplication.CreateBuilder(args);

View File

@@ -9,7 +9,7 @@
}
},
"profiles": {
"ThuisApi": {
"Api": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
@@ -19,14 +19,6 @@
"ASPNETCORE_ENVIRONMENT": "Development",
"AUTH_TOKEN": "kaas"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": false,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}