diff --git a/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.Designer.cs b/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.Designer.cs
new file mode 100644
index 0000000..e21ad0d
--- /dev/null
+++ b/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.Designer.cs
@@ -0,0 +1,750 @@
+//
+using System;
+using Kemkas.Web.Db;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace Kemkas.Web.Db.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20240725071920_AddOsztalyToV2KarakterVarazslat")]
+ partial class AddOsztalyToV2KarakterVarazslat
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.7")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.ApplicationRole", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.ApplicationUser", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("integer");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("text");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("boolean");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("boolean");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("timestamp with time zone");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.Property("PasswordHash")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("text");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("boolean");
+
+ b.Property("SecurityStamp")
+ .HasColumnType("text");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("boolean");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("character varying(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasDatabaseName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasDatabaseName("UserNameIndex");
+
+ b.ToTable("AspNetUsers", (string)null);
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Felszereles", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("IsFegyver")
+ .HasColumnType("boolean");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("Felszerelesek");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Karakter", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Bolcsesseg")
+ .HasColumnType("smallint");
+
+ b.Property("Egeszseg")
+ .HasColumnType("smallint");
+
+ b.Property("Ero")
+ .HasColumnType("smallint");
+
+ b.Property("Faj")
+ .HasColumnType("integer");
+
+ b.Property("Intelligencia")
+ .HasColumnType("smallint");
+
+ b.Property("IsPublic")
+ .HasColumnType("boolean");
+
+ b.Property("Isten")
+ .HasColumnType("text");
+
+ b.Property("Jellem")
+ .HasColumnType("smallint");
+
+ b.Property("Karizma")
+ .HasColumnType("smallint");
+
+ b.Property("Kor")
+ .HasColumnType("double precision");
+
+ b.Property("Nem")
+ .HasColumnType("text");
+
+ b.Property("Nev")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Osztaly")
+ .HasColumnType("integer");
+
+ b.Property("OwnerUserId")
+ .HasColumnType("integer");
+
+ b.Property("Pajzs")
+ .HasColumnType("text");
+
+ b.Property("Pancel")
+ .HasColumnType("text");
+
+ b.Property("Szint")
+ .HasColumnType("smallint");
+
+ b.Property("Ugyesseg")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OwnerUserId");
+
+ b.ToTable("Karakterek");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1KarakterKepzettseg", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("IsTolvajKepzettseg")
+ .HasColumnType("boolean");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("Kepzettseg")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("KarakterKepzettsegek");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Szintlepes", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("FegyverSpecializacio")
+ .HasColumnType("text");
+
+ b.Property("HpRoll")
+ .HasColumnType("smallint");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("KarakterSzint")
+ .HasColumnType("smallint");
+
+ b.Property("TulajdonsagNoveles")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("Szintlepesek");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Felszereles", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.Property("IsAprosag")
+ .HasColumnType("boolean");
+
+ b.Property("IsCipelt")
+ .HasColumnType("boolean");
+
+ b.Property("IsFegyver")
+ .HasColumnType("boolean");
+
+ b.Property("IsViselt")
+ .HasColumnType("boolean");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("TargyId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("Felszerelesek2E");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Karakter", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AranyTaller")
+ .HasColumnType("integer");
+
+ b.Property("Bolcsesseg")
+ .HasColumnType("smallint");
+
+ b.Property("Egeszseg")
+ .HasColumnType("smallint");
+
+ b.Property("ElektrumTaller")
+ .HasColumnType("integer");
+
+ b.Property("Ero")
+ .HasColumnType("smallint");
+
+ b.Property("EzustTaller")
+ .HasColumnType("integer");
+
+ b.Property("Faj")
+ .HasColumnType("integer");
+
+ b.Property("Intelligencia")
+ .HasColumnType("smallint");
+
+ b.Property("IsPublic")
+ .HasColumnType("boolean");
+
+ b.Property("Isten")
+ .HasColumnType("text");
+
+ b.Property("Jellem")
+ .HasColumnType("smallint");
+
+ b.Property("Karizma")
+ .HasColumnType("smallint");
+
+ b.Property("Kor")
+ .HasColumnType("double precision");
+
+ b.Property("Nem")
+ .HasColumnType("text");
+
+ b.Property("Nev")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OwnerUserId")
+ .HasColumnType("integer");
+
+ b.Property("Pajzs")
+ .HasColumnType("text");
+
+ b.Property("Pancel")
+ .HasColumnType("text");
+
+ b.Property("Szint")
+ .HasColumnType("smallint");
+
+ b.Property("Ugyesseg")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OwnerUserId");
+
+ b.ToTable("Karakterek2E");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2KarakterKepzettseg", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("IsTolvajKepzettseg")
+ .HasColumnType("boolean");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("Kepzettseg")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("KarakterKepzettsegek2E");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2KarakterVarazslat", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Bekeszitve")
+ .HasColumnType("boolean");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("Osztaly")
+ .HasColumnType("integer");
+
+ b.Property("VarazslatId")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("V2KarakterVarazslat");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Szintlepes", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("FegyverSpecializacio")
+ .HasColumnType("text");
+
+ b.Property("HpRoll")
+ .HasColumnType("smallint");
+
+ b.Property("KarakterId")
+ .HasColumnType("uuid");
+
+ b.Property("KarakterSzint")
+ .HasColumnType("smallint");
+
+ b.Property("Osztaly")
+ .HasColumnType("integer");
+
+ b.Property("TolvajExtraKepzettseg")
+ .HasColumnType("integer");
+
+ b.Property("TulajdonsagNoveles")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KarakterId");
+
+ b.ToTable("Szintlepesek2E");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.DataProtection.EntityFrameworkCore.DataProtectionKey", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("FriendlyName")
+ .HasColumnType("text");
+
+ b.Property("Xml")
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("DataProtectionKeys");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("text");
+
+ b.Property("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("text");
+
+ b.Property("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("ProviderKey")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("ProviderDisplayName")
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.Property("RoleId")
+ .HasColumnType("integer");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("integer");
+
+ b.Property("LoginProvider")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("Name")
+ .HasMaxLength(128)
+ .HasColumnType("character varying(128)");
+
+ b.Property("Value")
+ .HasColumnType("text");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens", (string)null);
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Felszereles", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V1Karakter", "Karakter")
+ .WithMany("Felszereles")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Karakter", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", "OwnerUser")
+ .WithMany()
+ .HasForeignKey("OwnerUserId");
+
+ b.Navigation("OwnerUser");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1KarakterKepzettseg", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V1Karakter", "Karakter")
+ .WithMany("KarakterKepzettsegek")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Szintlepes", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V1Karakter", "Karakter")
+ .WithMany("Szintlepesek")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Felszereles", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V2Karakter", "Karakter")
+ .WithMany("Felszereles")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Karakter", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", "OwnerUser")
+ .WithMany()
+ .HasForeignKey("OwnerUserId");
+
+ b.Navigation("OwnerUser");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2KarakterKepzettseg", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V2Karakter", "Karakter")
+ .WithMany("KarakterKepzettsegek")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2KarakterVarazslat", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V2Karakter", "Karakter")
+ .WithMany("Varazslatok")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Szintlepes", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.V2Karakter", "Karakter")
+ .WithMany("Szintlepesek")
+ .HasForeignKey("KarakterId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Karakter");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.HasOne("Kemkas.Web.Db.Models.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V1Karakter", b =>
+ {
+ b.Navigation("Felszereles");
+
+ b.Navigation("KarakterKepzettsegek");
+
+ b.Navigation("Szintlepesek");
+ });
+
+ modelBuilder.Entity("Kemkas.Web.Db.Models.V2Karakter", b =>
+ {
+ b.Navigation("Felszereles");
+
+ b.Navigation("KarakterKepzettsegek");
+
+ b.Navigation("Szintlepesek");
+
+ b.Navigation("Varazslatok");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.cs b/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.cs
new file mode 100644
index 0000000..78abc4e
--- /dev/null
+++ b/Kemkas.Web/Db/Migrations/20240725071920_AddOsztalyToV2KarakterVarazslat.cs
@@ -0,0 +1,29 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Kemkas.Web.Db.Migrations
+{
+ ///
+ public partial class AddOsztalyToV2KarakterVarazslat : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "Osztaly",
+ table: "V2KarakterVarazslat",
+ type: "integer",
+ nullable: false,
+ defaultValue: 0);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "Osztaly",
+ table: "V2KarakterVarazslat");
+ }
+ }
+}
diff --git a/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs b/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs
index 9b90891..2474a89 100644
--- a/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -17,7 +17,7 @@ namespace Kemkas.Web.Db.Migrations
{
#pragma warning disable 612, 618
modelBuilder
- .HasAnnotation("ProductVersion", "8.0.6")
+ .HasAnnotation("ProductVersion", "8.0.7")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -402,6 +402,9 @@ namespace Kemkas.Web.Db.Migrations
b.Property("KarakterId")
.HasColumnType("uuid");
+ b.Property("Osztaly")
+ .HasColumnType("integer");
+
b.Property("VarazslatId")
.IsRequired()
.HasColumnType("text");
diff --git a/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs b/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs
index 6fdc1a1..afc33e2 100644
--- a/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs
+++ b/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs
@@ -1,5 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using Kemkas.Web.Db.Enums;
namespace Kemkas.Web.Db.Models;
@@ -14,6 +15,8 @@ public class V2KarakterVarazslat
public bool Bekeszitve { get; set; }
+ public Osztaly2E Osztaly { get; set; }
+
[ForeignKey(nameof(KarakterId))]
public V2Karakter Karakter { get; set; }
}
\ No newline at end of file
diff --git a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs
index 783fe1d..617e85a 100644
--- a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs
+++ b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs
@@ -84,6 +84,7 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService
Karakter = karakter,
Bekeszitve = v.Bekeszitve,
VarazslatId = v.VarazslatId,
+ Osztaly = OsztalyExtensions.Convert2E(v.Osztaly),
}).ToHashSet() ?? [];
return karakter;
@@ -163,11 +164,13 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService
{
VarazslatId = v.VarazslatId,
Bekeszitve = v.Bekeszitve,
+ Osztaly = OsztalyExtensions.Convert2E(v.Osztaly),
}).ToList();
var toUpdate = original.Varazslatok
.Select(x =>
{
- var dtoVarazslat = dtoVarazslatok.FirstOrDefault(v => v.VarazslatId == x.VarazslatId);
+ var dtoVarazslat = dtoVarazslatok.FirstOrDefault(v =>
+ v.VarazslatId == x.VarazslatId && v.Osztaly == x.Osztaly.Convert());
return (dbVarazslat: x, dtoVarazslat);
})
.Where(x => x.dtoVarazslat != null)
diff --git a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs
index dc5c56c..b673830 100644
--- a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs
+++ b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs
@@ -59,6 +59,7 @@ public class CharacterDbModelToDto2EService : ICharacterDbModelToDto2EService
{
Bekeszitve = v.Bekeszitve,
VarazslatId = v.VarazslatId,
+ Osztaly = v.Osztaly.Convert()
}).ToList(),
};
}
diff --git a/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs b/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs
index 2b0a739..92b7121 100644
--- a/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs
+++ b/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs
@@ -9,4 +9,7 @@ public class KarakterVarazslat2eDto
[JsonPropertyName("bekeszitve")]
public bool Bekeszitve { get; set; }
+
+ [JsonPropertyName("osztaly")]
+ public string Osztaly { get; set; }
}
\ No newline at end of file
diff --git a/Kemkas.Web/packages.lock.json b/Kemkas.Web/packages.lock.json
index 2440359..37ec161 100644
--- a/Kemkas.Web/packages.lock.json
+++ b/Kemkas.Web/packages.lock.json
@@ -4,9 +4,9 @@
"net8.0": {
"AspNet.Security.OAuth.Discord": {
"type": "Direct",
- "requested": "[8.0.0, )",
- "resolved": "8.0.0",
- "contentHash": "+MtOHPctq1QT1c03h+7g4oBWtZ/buQYUJg4AR0DG+qjmD2cQRMGWXC1J6/ITeCc6xa5BcXzJmt1L/8pVXIB4kw=="
+ "requested": "[8.1.0, )",
+ "resolved": "8.1.0",
+ "contentHash": "w8BJXc17EuMRTAVSI7hrVBs8tKR+2XLqTdNsK3gQOdmKS7+37YHAPYufE6oGsRcMfMOMjmuPbWZchLgrOSV0Hw=="
},
"Grpc.Core": {
"type": "Direct",
@@ -20,9 +20,9 @@
},
"Microsoft.AspNetCore.Authentication.Facebook": {
"type": "Direct",
- "requested": "[8.0.0, )",
- "resolved": "8.0.0",
- "contentHash": "fniH775aegFKKbTGNtbjbczcs/DEEaYo8pSJNHwUoVQKaYgJ7C4YDHo30jeUk1XZrBaksSTEK8NFUmxPWQOBHg=="
+ "requested": "[8.0.7, )",
+ "resolved": "8.0.7",
+ "contentHash": "UlZ2O0bhFI2NSn8O+jlUq68CKW1eSUE8e50WTecyoAooPATdfy+6d2B2IE8l1RWmiYEstFD6LNRFM4qZXF343w=="
},
"Microsoft.AspNetCore.Authentication.Google": {
"type": "Direct",
@@ -71,24 +71,24 @@
},
"Microsoft.EntityFrameworkCore.Design": {
"type": "Direct",
- "requested": "[8.0.6, )",
- "resolved": "8.0.6",
- "contentHash": "4OT+mH+8EB4Kfn1ENpDx2Ssx459j200gvdhDOKq5lkHmHzkRpmEDKS5GfqaLZvBLJKWu1FVGQ7Wnczcjb0hX4g==",
+ "requested": "[8.0.7, )",
+ "resolved": "8.0.7",
+ "contentHash": "EUPY49Hi5BbpnkiX9ik/2fD9GPEbvKx6wvDmDNZTHZGlXAg1kcR9vt2QA2af1mIoa7gG1wqEvyQRWf9/A8gWqQ==",
"dependencies": {
"Humanizer.Core": "2.14.1",
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0",
- "Microsoft.EntityFrameworkCore.Relational": "8.0.6",
- "Microsoft.Extensions.DependencyModel": "8.0.0",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.7",
+ "Microsoft.Extensions.DependencyModel": "8.0.1",
"Mono.TextTemplating": "2.2.1"
}
},
"Microsoft.EntityFrameworkCore.Relational": {
"type": "Direct",
- "requested": "[8.0.6, )",
- "resolved": "8.0.6",
- "contentHash": "chhfmLusCGLGvNYtvMji6KGQlduPDnJsStG/LjS8qJhFWJDDzTZpSr2LHowewcxMrMo/Axc6Jwe+WwSi/vlkTg==",
+ "requested": "[8.0.7, )",
+ "resolved": "8.0.7",
+ "contentHash": "Hn86yScnW+VXb+A2LGrVGkGmjsQ9KLWR0T8GQBEcESWk8u9JYhBiRtdxz76Aq0ir82Ei48sLEZTN4VE0sJ3yIg==",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "8.0.6",
+ "Microsoft.EntityFrameworkCore": "8.0.7",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
}
},
@@ -291,24 +291,24 @@
},
"Microsoft.EntityFrameworkCore": {
"type": "Transitive",
- "resolved": "8.0.6",
- "contentHash": "Ms5e5QuBAjVIuQsGumeLvkgMiOpnj6wxPvwBIoe1NfTkseWK4NZYztnhgDlpkCPkrUmJEXLv69kl349Ours30Q==",
+ "resolved": "8.0.7",
+ "contentHash": "UOyPNAgyzw/E4hUCurqvZxi0WWVLQAGZuntFPzkTXtvJLTqRjKvokvhv+XazAUSODLsU1DZ67GjZ4mT9d82+0g==",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "8.0.6",
- "Microsoft.EntityFrameworkCore.Analyzers": "8.0.6",
+ "Microsoft.EntityFrameworkCore.Abstractions": "8.0.7",
+ "Microsoft.EntityFrameworkCore.Analyzers": "8.0.7",
"Microsoft.Extensions.Caching.Memory": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0"
}
},
"Microsoft.EntityFrameworkCore.Abstractions": {
"type": "Transitive",
- "resolved": "8.0.6",
- "contentHash": "X7wSSBNFRuN8j8M9HDYG7rPpEeyhY+PdJZR9rftmgvsZH0eK5+bZ3b3As8iO4rLEpjsBzDnrgSIY6q2F3HQatw=="
+ "resolved": "8.0.7",
+ "contentHash": "DHX6nxcg4/tpWfTjAleKrXveDiNFY/OGOK6nm27GipUXNI2Uofev9cH5SYXmtGIgHWxlvfn754TXN4WnrixOwg=="
},
"Microsoft.EntityFrameworkCore.Analyzers": {
"type": "Transitive",
- "resolved": "8.0.6",
- "contentHash": "fDNtuQ4lAaPaCOlsrwUck/GvnF4QLeDpMmE1L5QtxZpMSmWfnL2/vk8sDL9OVTWcfprooI9V5MNpIx3/Tq5ehg=="
+ "resolved": "8.0.7",
+ "contentHash": "nerD0vEOYJVhVapamRVH9DrUYbDNMJ5bPfWze4SibDDaDaekzgwQqBht97/tV+8pgdKoPAXmtiJsB+lDajwVrQ=="
},
"Microsoft.EntityFrameworkCore.Relational.Design": {
"type": "Transitive",
@@ -379,11 +379,11 @@
},
"Microsoft.Extensions.DependencyModel": {
"type": "Transitive",
- "resolved": "8.0.0",
- "contentHash": "NSmDw3K0ozNDgShSIpsZcbFIzBX4w28nDag+TfaQujkXGazBm+lid5onlWoCBy4VsLxqnnKjEBbGSJVWJMf43g==",
+ "resolved": "8.0.1",
+ "contentHash": "5Ou6varcxLBzQ+Agfm0k0pnH7vrEITYlXMDuE6s7ZHlZHz6/G8XJ3iISZDr5rfwfge6RnXJ1+Wc479mMn52vjA==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0",
- "System.Text.Json": "8.0.0"
+ "System.Text.Json": "8.0.4"
}
},
"Microsoft.Extensions.Diagnostics.Abstractions": {
@@ -1469,8 +1469,8 @@
},
"System.Text.Json": {
"type": "Transitive",
- "resolved": "8.0.0",
- "contentHash": "OdrZO2WjkiEG6ajEFRABTRCi/wuXQPxeV6g8xvUJqdxMvvuCCEk86zPla8UiIQJz3durtUEbNyY/3lIhS0yZvQ==",
+ "resolved": "8.0.4",
+ "contentHash": "bAkhgDJ88XTsqczoxEMliSrpijKZHhbJQldhAmObj/RbrN3sU5dcokuXmWJWsdQAhiMJ9bTayWsL1C9fbbCRhw==",
"dependencies": {
"System.Text.Encodings.Web": "8.0.0"
}
diff --git a/README.md b/README.md
index 4e58556..cc6a08b 100644
--- a/README.md
+++ b/README.md
@@ -16,12 +16,12 @@ See deployment repo at: [https://github.com/morbalint/kemkas-deployment](https:/
For frontend see: [Frontend README](https://github.com/morbalint/kemkas/README.md)
-To start development, spin up the docker-compose.yaml file and use the launchSettings.json to start the backend and frontend dev servers.
+To start development, spin up the docker-compose.yaml file and use the launchSettings.json to start the backend dev server. Use the frontend repo to start the frontend dev server.
For the first time setup:
```shell
-dotnet dev-certs https --format PEM --no-password -ep ~/.aspnet/https/kemkas.pem`
-docker compose up -d
+dotnet dev-certs https --clean && \
+dotnet dev-certs https --format PEM --no-password -ep ~/.aspnet/https/kemkas.pem
```
Later start the docker compose first and the project launch settings after the DB is up and running.