diff --git a/Kemkas.Web/Controllers/Character1EController.cs b/Kemkas.Web/Controllers/Character1EController.cs index 47be90b..f416355 100644 --- a/Kemkas.Web/Controllers/Character1EController.cs +++ b/Kemkas.Web/Controllers/Character1EController.cs @@ -24,7 +24,7 @@ public class Character1EController( : ControllerBase { [HttpPost] - public async Task> StoreNewCharacter([FromBody] Character1eDto dto, [FromQuery]bool isPublic = true) + public async Task> StoreNewCharacter([FromBody] Karakter1eDto dto, [FromQuery]bool isPublic = true) { if (!ModelState.IsValid) { @@ -50,7 +50,7 @@ public class Character1EController( } [HttpGet("{id:guid}")] - public async Task> GetCharacterById([FromRoute] Guid id) + public async Task> GetCharacterById([FromRoute] Guid id) { var entity = await persistenceService.GetCharacter1EById(id); if (entity is null) @@ -62,7 +62,7 @@ public class Character1EController( } [HttpPost("{id:guid}")] - public async Task> UpdateCharacter([FromRoute] Guid id, [FromBody] Character1eDto dto, [FromQuery]bool isPublic = true) + public async Task> UpdateCharacter([FromRoute] Guid id, [FromBody] Karakter1eDto dto, [FromQuery]bool isPublic = true) { if (!ModelState.IsValid) { diff --git a/Kemkas.Web/Controllers/Character2EController.cs b/Kemkas.Web/Controllers/Character2EController.cs index ac4dc40..64d8a43 100644 --- a/Kemkas.Web/Controllers/Character2EController.cs +++ b/Kemkas.Web/Controllers/Character2EController.cs @@ -16,7 +16,7 @@ public class Character2EController( ) : ControllerBase { [HttpPost] - public async Task> StoreNewCharacter([FromBody] Character2eDto dto, [FromQuery]bool isPublic = true) + public async Task> StoreNewCharacter([FromBody] Karakter2eDto dto, [FromQuery]bool isPublic = true) { if (!ModelState.IsValid) { @@ -43,7 +43,7 @@ public class Character2EController( [HttpGet("{id:guid}")] - public async Task> GetCharacterById([FromRoute] Guid id) + public async Task> GetCharacterById([FromRoute] Guid id) { var entity = await persistenceService.GetCharacter2EById(id); if (entity is null) @@ -55,7 +55,7 @@ public class Character2EController( } [HttpPost("{id:guid}")] - public async Task> UpdateCharacter([FromRoute] Guid id, [FromBody] Character2eDto dto, [FromQuery]bool isPublic = true) + public async Task> UpdateCharacter([FromRoute] Guid id, [FromBody] Karakter2eDto dto, [FromQuery]bool isPublic = true) { if (!ModelState.IsValid) { diff --git a/Kemkas.Web/Db/Migrations/20240718114436_AddVarazslatok2e.Designer.cs b/Kemkas.Web/Db/Migrations/20240718114436_AddVarazslatok2e.Designer.cs new file mode 100644 index 0000000..1f37bc7 --- /dev/null +++ b/Kemkas.Web/Db/Migrations/20240718114436_AddVarazslatok2e.Designer.cs @@ -0,0 +1,747 @@ +// +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("20240718114436_AddVarazslatok2e")] + partial class AddVarazslatok2e + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.6") + .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("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/20240718114436_AddVarazslatok2e.cs b/Kemkas.Web/Db/Migrations/20240718114436_AddVarazslatok2e.cs new file mode 100644 index 0000000..11bc0ea --- /dev/null +++ b/Kemkas.Web/Db/Migrations/20240718114436_AddVarazslatok2e.cs @@ -0,0 +1,47 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Kemkas.Web.Db.Migrations +{ + /// + public partial class AddVarazslatok2e : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "V2KarakterVarazslat", + columns: table => new + { + Id = table.Column(type: "uuid", nullable: false), + KarakterId = table.Column(type: "uuid", nullable: false), + VarazslatId = table.Column(type: "text", nullable: false), + Bekeszitve = table.Column(type: "boolean", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_V2KarakterVarazslat", x => x.Id); + table.ForeignKey( + name: "FK_V2KarakterVarazslat_Karakterek2E_KarakterId", + column: x => x.KarakterId, + principalTable: "Karakterek2E", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_V2KarakterVarazslat_KarakterId", + table: "V2KarakterVarazslat", + column: "KarakterId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "V2KarakterVarazslat"); + } + } +} diff --git a/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs b/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs index 75f7763..9b90891 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.5") + .HasAnnotation("ProductVersion", "8.0.6") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -390,6 +390,29 @@ namespace Kemkas.Web.Db.Migrations 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("VarazslatId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("KarakterId"); + + b.ToTable("V2KarakterVarazslat"); + }); + modelBuilder.Entity("Kemkas.Web.Db.Models.V2Szintlepes", b => { b.Property("Id") @@ -623,6 +646,17 @@ namespace Kemkas.Web.Db.Migrations 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") @@ -701,6 +735,8 @@ namespace Kemkas.Web.Db.Migrations b.Navigation("KarakterKepzettsegek"); b.Navigation("Szintlepesek"); + + b.Navigation("Varazslatok"); }); #pragma warning restore 612, 618 } diff --git a/Kemkas.Web/Db/Models/V2Karakter.cs b/Kemkas.Web/Db/Models/V2Karakter.cs index 840a04a..01f0f16 100644 --- a/Kemkas.Web/Db/Models/V2Karakter.cs +++ b/Kemkas.Web/Db/Models/V2Karakter.cs @@ -47,4 +47,7 @@ public class V2Karakter [InverseProperty(nameof(V2Felszereles.Karakter))] public virtual IEnumerable Felszereles { get; set; } + + [InverseProperty(nameof(V2KarakterVarazslat.Karakter))] + public virtual ISet Varazslatok { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs b/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs new file mode 100644 index 0000000..6fdc1a1 --- /dev/null +++ b/Kemkas.Web/Db/Models/V2KarakterVarazslat.cs @@ -0,0 +1,19 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Kemkas.Web.Db.Models; + +public class V2KarakterVarazslat +{ + [Key] + public Guid Id { get; set; } + + public Guid KarakterId { get; set; } + + public string VarazslatId { get; set; } + + public bool Bekeszitve { get; set; } + + [ForeignKey(nameof(KarakterId))] + public V2Karakter Karakter { get; set; } +} \ No newline at end of file diff --git a/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs b/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs index 7d41cad..0a4d748 100644 --- a/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs +++ b/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs @@ -7,14 +7,14 @@ namespace Kemkas.Web.Services.FirstEdition.Character; public interface ICharacter1EDtoToDbModelService { - public V1Karakter Convert(Character1eDto dto); + public V1Karakter Convert(Karakter1eDto dto); - public void Update(V1Karakter original, Character1eDto dto); + public void Update(V1Karakter original, Karakter1eDto dto); } public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService { - public V1Karakter Convert(Character1eDto dto) + public V1Karakter Convert(Karakter1eDto dto) { var karakter = new V1Karakter { @@ -47,7 +47,7 @@ public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService return karakter; } - public void Update(V1Karakter original, Character1eDto dto) + public void Update(V1Karakter original, Karakter1eDto dto) { original.Nev = dto.Name; original.Nem = dto.Nem; @@ -76,7 +76,7 @@ public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService } // TODO: this is unnecessary duplication of business logic!! - private static List ConvertSzintLepes(Character1eDto dto, V1Karakter karakter) + private static List ConvertSzintLepes(Karakter1eDto dto, V1Karakter karakter) { if (dto.HpRolls.Count < dto.Szint - 2) { @@ -131,7 +131,7 @@ public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService }).Prepend(level1).ToList(); } - private static List ConvertKepzettsegek(Character1eDto dto, V1Karakter karakter) + private static List ConvertKepzettsegek(Karakter1eDto dto, V1Karakter karakter) { var kepzettsegek = dto.Kepzettsegek.Select(x => new V1KarakterKepzettseg { diff --git a/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs b/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs index 80652d8..21506ac 100644 --- a/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs +++ b/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs @@ -6,14 +6,14 @@ namespace Kemkas.Web.Services.FirstEdition.Character; public interface ICharacterDbModelToDto1EService { - public Character1eDto Convert(V1Karakter entity); + public Karakter1eDto Convert(V1Karakter entity); } public class CharacterDbModelToDto1EService : ICharacterDbModelToDto1EService { - public Character1eDto Convert(V1Karakter entity) + public Karakter1eDto Convert(V1Karakter entity) { - return new Character1eDto + return new Karakter1eDto { Name = entity.Nev, Nem = entity.Nem, diff --git a/Kemkas.Web/Services/FirstEdition/Character/CharacterValidationService.cs b/Kemkas.Web/Services/FirstEdition/Character/CharacterValidationService.cs index 9f35636..78b9519 100644 --- a/Kemkas.Web/Services/FirstEdition/Character/CharacterValidationService.cs +++ b/Kemkas.Web/Services/FirstEdition/Character/CharacterValidationService.cs @@ -4,12 +4,12 @@ namespace Kemkas.Web.Services.FirstEdition.Character; public interface ICharacterValidationService { - public string? Validate(Character1eDto dto); + public string? Validate(Karakter1eDto dto); } public class CharacterValidationService : ICharacterValidationService { - public string? Validate(Character1eDto dto) + public string? Validate(Karakter1eDto dto) { // TODO: add validation!! return null; diff --git a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs index f537cb8..783fe1d 100644 --- a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs +++ b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs @@ -6,14 +6,14 @@ namespace Kemkas.Web.Services.SecondEdition.Character; public interface ICharacter2EDtoToDbModelService { - public V2Karakter Convert(Character2eDto dto); + public V2Karakter Convert(Karakter2eDto dto); - public void Update(V2Karakter original, Character2eDto dto); + public void Update(V2Karakter original, Karakter2eDto dto); } public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService { - public V2Karakter Convert(Character2eDto dto) + public V2Karakter Convert(Karakter2eDto dto) { var karakter = new V2Karakter { @@ -78,11 +78,18 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService TulajdonsagNoveles = x.TulajdonsagNoveles == null ? null : TulajdonsagExtensions.Convert(x.TulajdonsagNoveles), TolvajExtraKepzettseg = x.TolvajExtraKepzettseg == null ? null : KepzettsegExtensions.Convert2E(x.TolvajExtraKepzettseg), }).ToList(); - + + karakter.Varazslatok = dto.Varazslatok?.Select(v => new V2KarakterVarazslat + { + Karakter = karakter, + Bekeszitve = v.Bekeszitve, + VarazslatId = v.VarazslatId, + }).ToHashSet() ?? []; + return karakter; } - public void Update(V2Karakter original, Character2eDto dto) + public void Update(V2Karakter original, Karakter2eDto dto) { original.Nev = dto.Nev; original.Nem = dto.Nem; @@ -143,9 +150,38 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService TulajdonsagNoveles = x.TulajdonsagNoveles == null ? null : TulajdonsagExtensions.Convert(x.TulajdonsagNoveles), TolvajExtraKepzettseg = x.TolvajExtraKepzettseg == null ? null : KepzettsegExtensions.Convert2E(x.TolvajExtraKepzettseg), }).ToList(); + + if (dto.Varazslatok == null) + { + original.Varazslatok = new HashSet(); + } + else + { + var dtoVarazslatok = dto.Varazslatok.ToList(); + var toAdd = dtoVarazslatok.Where(v => original.Varazslatok.Any(x => x.VarazslatId == v.VarazslatId)) + .Select(v => new V2KarakterVarazslat + { + VarazslatId = v.VarazslatId, + Bekeszitve = v.Bekeszitve, + }).ToList(); + var toUpdate = original.Varazslatok + .Select(x => + { + var dtoVarazslat = dtoVarazslatok.FirstOrDefault(v => v.VarazslatId == x.VarazslatId); + return (dbVarazslat: x, dtoVarazslat); + }) + .Where(x => x.dtoVarazslat != null) + .Select(x => + { + x.dbVarazslat.Bekeszitve = x.dtoVarazslat!.Bekeszitve; + return x.dbVarazslat; + }) + .ToList(); + original.Varazslatok = toAdd.Concat(toUpdate).ToHashSet(); + } } - private static List ConvertKarakterKepzettsegek(Character2eDto dto, V2Karakter karakter) + private static List ConvertKarakterKepzettsegek(Karakter2eDto dto, V2Karakter karakter) { var kepzettsegek = dto.Kepzettsegek.Select(x => new V2KarakterKepzettseg { diff --git a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs index df253be..dc5c56c 100644 --- a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs +++ b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs @@ -6,14 +6,14 @@ namespace Kemkas.Web.Services.SecondEdition.Character; public interface ICharacterDbModelToDto2EService { - public Character2eDto Convert(V2Karakter entity); + public Karakter2eDto Convert(V2Karakter entity); } public class CharacterDbModelToDto2EService : ICharacterDbModelToDto2EService { - public Character2eDto Convert(V2Karakter entity) + public Karakter2eDto Convert(V2Karakter entity) { - return new Character2eDto + return new Karakter2eDto { Nev = entity.Nev, Nem = entity.Nem, @@ -54,7 +54,12 @@ public class CharacterDbModelToDto2EService : ICharacterDbModelToDto2EService TulajdonsagNoveles = sz.TulajdonsagNoveles?.Convert(), HProll = sz.HpRoll, TolvajExtraKepzettseg = sz.TolvajExtraKepzettseg?.Convert() - }).ToList() + }).ToList(), + Varazslatok = entity.Varazslatok.Select(v => new KarakterVarazslat2eDto + { + Bekeszitve = v.Bekeszitve, + VarazslatId = v.VarazslatId, + }).ToList(), }; } } \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/Character1eDto.cs b/Kemkas.Web/ViewModels/Karakter1eDto.cs similarity index 98% rename from Kemkas.Web/ViewModels/Character1eDto.cs rename to Kemkas.Web/ViewModels/Karakter1eDto.cs index 9ac5a09..656d0ec 100644 --- a/Kemkas.Web/ViewModels/Character1eDto.cs +++ b/Kemkas.Web/ViewModels/Karakter1eDto.cs @@ -3,7 +3,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public class Character1eDto +public class Karakter1eDto { [Required] [JsonPropertyName("name")] diff --git a/Kemkas.Web/ViewModels/Character2eDto.cs b/Kemkas.Web/ViewModels/Karakter2eDto.cs similarity index 89% rename from Kemkas.Web/ViewModels/Character2eDto.cs rename to Kemkas.Web/ViewModels/Karakter2eDto.cs index 64218db..4780342 100644 --- a/Kemkas.Web/ViewModels/Character2eDto.cs +++ b/Kemkas.Web/ViewModels/Karakter2eDto.cs @@ -3,7 +3,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public class Character2eDto +public class Karakter2eDto { [Required] [JsonPropertyName("nev")] @@ -41,6 +41,9 @@ public class Character2eDto [JsonPropertyName("felszereles")] public KarakterFelszereles2eDto Felszereles { get; set; } + + [JsonPropertyName("varazslatok")] + public IList? Varazslatok { get; set; } public bool? IsPublic { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs b/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs new file mode 100644 index 0000000..2b0a739 --- /dev/null +++ b/Kemkas.Web/ViewModels/KarakterVarazslat2eDto.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Kemkas.Web.ViewModels; + +public class KarakterVarazslat2eDto +{ + [JsonPropertyName("id")] + public string VarazslatId { get; set; } + + [JsonPropertyName("bekeszitve")] + public bool Bekeszitve { get; set; } +} \ No newline at end of file