diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e2bff5..ddbf7b2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: docker push registry.digitalocean.com/kemkas/kemkas-be:${{ env.GITHUB_SHA_SHORT }} - uses: actions/checkout@v4 with: - repository: morbalint/kemkas-deployment + repository: ${{ github.repository_owner }}/kemkas-deployment ref: refs/heads/main path: ./deployment-repo clean: false diff --git a/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.Designer.cs b/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.Designer.cs new file mode 100644 index 0000000..13e5d74 --- /dev/null +++ b/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.Designer.cs @@ -0,0 +1,702 @@ +// +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("20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E")] + partial class FelszerelesUpgradeViseltCipeltAprosagokIn2E + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .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("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("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.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.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"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.cs b/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.cs new file mode 100644 index 0000000..cfea975 --- /dev/null +++ b/Kemkas.Web/Db/Migrations/20240521001219_FelszerelesUpgradeViseltCipeltAprosagokIn2E.cs @@ -0,0 +1,62 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Kemkas.Web.Db.Migrations +{ + /// + public partial class FelszerelesUpgradeViseltCipeltAprosagokIn2E : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Count", + table: "Felszerelesek2E", + type: "integer", + nullable: false, + defaultValue: 1); + + migrationBuilder.AddColumn( + name: "IsAprosag", + table: "Felszerelesek2E", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "IsCipelt", + table: "Felszerelesek2E", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "IsViselt", + table: "Felszerelesek2E", + type: "boolean", + nullable: false, + defaultValue: false); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Count", + table: "Felszerelesek2E"); + + migrationBuilder.DropColumn( + name: "IsAprosag", + table: "Felszerelesek2E"); + + migrationBuilder.DropColumn( + name: "IsCipelt", + table: "Felszerelesek2E"); + + migrationBuilder.DropColumn( + name: "IsViselt", + table: "Felszerelesek2E"); + } + } +} diff --git a/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs b/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs index 2b5073c..53c90d1 100644 --- a/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/Kemkas.Web/Db/Migrations/ApplicationDbContextModelSnapshot.cs @@ -265,9 +265,21 @@ namespace Kemkas.Web.Db.Migrations .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"); diff --git a/Kemkas.Web/Db/Models/V2Felszereles.cs b/Kemkas.Web/Db/Models/V2Felszereles.cs index 3e05a8a..74b8b81 100644 --- a/Kemkas.Web/Db/Models/V2Felszereles.cs +++ b/Kemkas.Web/Db/Models/V2Felszereles.cs @@ -1,3 +1,4 @@ +using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; @@ -10,8 +11,18 @@ public class V2Felszereles public Guid KarakterId { get; set; } public string TargyId { get; set; } - public bool IsFegyver { get; set; } = true; - + + [DefaultValue(1)] + public int Count { get; set; } = 1; + + public bool IsFegyver { get; set; } = false; + + public bool IsViselt { get; set; } = false; + + public bool IsCipelt { get; set; } = false; + + public bool IsAprosag { get; set; } = false; + [ForeignKey(nameof(KarakterId))] public virtual V2Karakter Karakter { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/Program.cs b/Kemkas.Web/Program.cs index 034dd63..e5711e6 100644 --- a/Kemkas.Web/Program.cs +++ b/Kemkas.Web/Program.cs @@ -55,20 +55,21 @@ builder.Services.AddHealthChecks(); builder.Services.AddCharacter1EServices(); builder.Services.AddCharacter2EServices(); +// Configure the HTTP request pipeline. var app = builder.Build(); app.UsePathBase("/api"); -// Configure the HTTP request pipeline. +app.UseForwardedHeaders(new ForwardedHeadersOptions +{ + ForwardedForHeaderName = "X-Forwarded-For", + ForwardedHostHeaderName = "X-Forwarded-Host", + ForwardedProtoHeaderName = "X-Forwarded-Proto", + ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto, + KnownNetworks = { new IPNetwork(new IPAddress([0,0,0,0]), 0) } +}); + if (app.Environment.IsDevelopment()) { - app.UseForwardedHeaders(new ForwardedHeadersOptions - { - ForwardedForHeaderName = "X-Forwarded-For", - ForwardedHostHeaderName = "X-Forwarded-Host", - ForwardedProtoHeaderName = "X-Forwarded-Proto", - ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedHost | ForwardedHeaders.XForwardedProto, - KnownNetworks = { new IPNetwork(new IPAddress([0,0,0,0]), 0) } - }); app.UseMigrationsEndPoint(); app.UseDeveloperExceptionPage(); } diff --git a/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs b/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs index 09dfe08..7d41cad 100644 --- a/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs +++ b/Kemkas.Web/Services/FirstEdition/Character/Character1EDtoToDbModelService.cs @@ -32,11 +32,11 @@ public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService Bolcsesseg = dto.Tulajdonsagok.Bol, Karizma = dto.Tulajdonsagok.Kar, Szint = dto.Szint, - Pajzs = dto.Felszereles.PajzsId, - Pancel = dto.Felszereles.PancelId + Pajzs = dto.Felszereles1E.PajzsId, + Pancel = dto.Felszereles1E.PancelId }; karakter.KarakterKepzettsegek = ConvertKepzettsegek(dto, karakter); - karakter.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V1Felszereles + karakter.Felszereles = dto.Felszereles1E.FegyverIds.Select(x => new V1Felszereles { Karakter = karakter, IsFegyver = true, @@ -63,10 +63,10 @@ public class Character1EDtoToDbModelService : ICharacter1EDtoToDbModelService original.Bolcsesseg = dto.Tulajdonsagok.Bol; original.Karizma = dto.Tulajdonsagok.Kar; original.Szint = dto.Szint; - original.Pajzs = dto.Felszereles.PajzsId; - original.Pancel = dto.Felszereles.PancelId; + original.Pajzs = dto.Felszereles1E.PajzsId; + original.Pancel = dto.Felszereles1E.PancelId; original.KarakterKepzettsegek = ConvertKepzettsegek(dto, original); - original.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V1Felszereles + original.Felszereles = dto.Felszereles1E.FegyverIds.Select(x => new V1Felszereles { Karakter = original, IsFegyver = true, diff --git a/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs b/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs index e65fa5c..80652d8 100644 --- a/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs +++ b/Kemkas.Web/Services/FirstEdition/Character/CharacterDbModelToDtoService.cs @@ -38,7 +38,7 @@ public class CharacterDbModelToDto1EService : ICharacterDbModelToDto1EService TulajdonsagNovelesek = entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.TulajdonsagNoveles).Where(x => x is not null).Cast().Select(x => x.Convert()).ToList(), HarcosSpecializaciok = entity.Osztaly == Osztaly1E.Harcos ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast().ToList() : [], KalozKritikus = entity.Osztaly == Osztaly1E.Kaloz ? entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(x => x.FegyverSpecializacio).Where(x => x != null).Cast().ToList() : [], - Felszereles = new KarakterFelszerelesDto + Felszereles1E = new KarakterFelszereles1eDto { PajzsId = entity.Pajzs, PancelId = entity.Pancel, diff --git a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs index 5ad0c92..e786a4f 100644 --- a/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs +++ b/Kemkas.Web/Services/SecondEdition/Character/Character2EDtoToDbModelService.cs @@ -35,12 +35,36 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService }; karakter.KarakterKepzettsegek = ConvertKarakterKepzettsegek(dto, karakter); - karakter.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V2Felszereles + var felszereles = dto.Felszereles.Fegyverek.Select(x => new V2Felszereles { Karakter = karakter, IsFegyver = true, - TargyId = x, + TargyId = x.Id, + Count = x.Count, }).ToList(); + felszereles.AddRange(dto.Felszereles.Viselt.Select(x => new V2Felszereles + { + Karakter = karakter, + IsViselt = true, + TargyId = x.Id, + Count = x.Count, + })); + felszereles.AddRange(dto.Felszereles.Cipelt.Select(x => new V2Felszereles + { + Karakter = karakter, + IsCipelt = true, + TargyId = x.Id, + Count = x.Count, + })); + felszereles.AddRange(dto.Felszereles.Aprosagok.Select(x => new V2Felszereles + { + Karakter = karakter, + IsAprosag = true, + TargyId = x.Id, + Count = x.Count, + })); + karakter.Felszereles = felszereles; + karakter.Szintlepesek = dto.Szintlepesek.Select((x, i) => new V2Szintlepes { Karakter = karakter, @@ -73,12 +97,35 @@ public class Character2EDtoToDbModelService : ICharacter2EDtoToDbModelService original.Pajzs = dto.Felszereles.PajzsId; original.Pancel = dto.Felszereles.PancelId; original.KarakterKepzettsegek = ConvertKarakterKepzettsegek(dto, original); - original.Felszereles = dto.Felszereles.FegyverIds.Select(x => new V2Felszereles + var felszereles = dto.Felszereles.Fegyverek.Select(x => new V2Felszereles { Karakter = original, IsFegyver = true, - TargyId = x, + TargyId = x.Id, + Count = x.Count, }).ToList(); + felszereles.AddRange(dto.Felszereles.Viselt.Select(x => new V2Felszereles + { + Karakter = original, + IsViselt = true, + TargyId = x.Id, + Count = x.Count, + })); + felszereles.AddRange(dto.Felszereles.Cipelt.Select(x => new V2Felszereles + { + Karakter = original, + IsCipelt = true, + TargyId = x.Id, + Count = x.Count, + })); + felszereles.AddRange(dto.Felszereles.Aprosagok.Select(x => new V2Felszereles + { + Karakter = original, + IsAprosag = true, + TargyId = x.Id, + Count = x.Count, + })); + original.Felszereles = felszereles; original.Szintlepesek = dto.Szintlepesek.Select((x, i) => new V2Szintlepes { Karakter = original, diff --git a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs index bb1d8f1..f8ef74b 100644 --- a/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs +++ b/Kemkas.Web/Services/SecondEdition/Character/CharacterDbModelToDto2EService.cs @@ -33,11 +33,14 @@ public class CharacterDbModelToDto2EService : ICharacterDbModelToDto2EService Kepzettsegek = entity.KarakterKepzettsegek.Where(x => !x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(), Tolvajkepzettsegek = entity.KarakterKepzettsegek.Where(x => x.IsTolvajKepzettseg).Select(x => x.Kepzettseg.Convert()).ToList(), Szint = entity.Szint, - Felszereles = new KarakterFelszerelesDto + Felszereles = new KarakterFelszereles2eDto { PajzsId = entity.Pajzs, PancelId = entity.Pancel, - FegyverIds = entity.Felszereles.Where(x => x.IsFegyver).Select(x => x.TargyId).ToList(), + Fegyverek = entity.Felszereles.Where(x => x.IsFegyver).Select(x => new FelszerelesIdAndCount { Id = x.TargyId, Count = x.Count}).ToList(), + Viselt = entity.Felszereles.Where(x => x.IsViselt).Select(x => new FelszerelesIdAndCount { Id = x.TargyId, Count = x.Count}).ToList(), + Cipelt = entity.Felszereles.Where(x => x.IsCipelt).Select(x => new FelszerelesIdAndCount { Id = x.TargyId, Count = x.Count}).ToList(), + Aprosagok = entity.Felszereles.Where(x => x.IsAprosag).Select(x => new FelszerelesIdAndCount { Id = x.TargyId, Count = x.Count}).ToList(), }, IsPublic = entity.IsPublic, Szintlepesek = entity.Szintlepesek.OrderBy(x => x.KarakterSzint).Select(sz => new Szintlepes diff --git a/Kemkas.Web/ViewModels/Character1eDto.cs b/Kemkas.Web/ViewModels/Character1eDto.cs index 6e2ef60..9ac5a09 100644 --- a/Kemkas.Web/ViewModels/Character1eDto.cs +++ b/Kemkas.Web/ViewModels/Character1eDto.cs @@ -3,7 +3,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public struct Character1eDto +public class Character1eDto { [Required] [JsonPropertyName("name")] @@ -52,7 +52,7 @@ public struct Character1eDto public IList KalozKritikus { get; set; } [JsonPropertyName("felszereles")] - public KarakterFelszerelesDto Felszereles { get; set; } + public KarakterFelszereles1eDto Felszereles1E { get; set; } public bool? IsPublic { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/Character2eDto.cs b/Kemkas.Web/ViewModels/Character2eDto.cs index 60cd3f9..64218db 100644 --- a/Kemkas.Web/ViewModels/Character2eDto.cs +++ b/Kemkas.Web/ViewModels/Character2eDto.cs @@ -3,7 +3,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public struct Character2eDto +public class Character2eDto { [Required] [JsonPropertyName("nev")] @@ -40,7 +40,7 @@ public struct Character2eDto public IList Szintlepesek { get; set; } [JsonPropertyName("felszereles")] - public KarakterFelszerelesDto Felszereles { get; set; } + public KarakterFelszereles2eDto Felszereles { get; set; } public bool? IsPublic { get; set; } } \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/CharacterListItemDto.cs b/Kemkas.Web/ViewModels/CharacterListItemDto.cs index c8dddab..a0745b4 100644 --- a/Kemkas.Web/ViewModels/CharacterListItemDto.cs +++ b/Kemkas.Web/ViewModels/CharacterListItemDto.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public struct CharacterListItemDto() +public class CharacterListItemDto() { [JsonPropertyName("id")] public required Guid Id { get; set; } diff --git a/Kemkas.Web/ViewModels/FelszerelesIdAndCount.cs b/Kemkas.Web/ViewModels/FelszerelesIdAndCount.cs new file mode 100644 index 0000000..7de9fa7 --- /dev/null +++ b/Kemkas.Web/ViewModels/FelszerelesIdAndCount.cs @@ -0,0 +1,12 @@ +using System.Text.Json.Serialization; + +namespace Kemkas.Web.ViewModels; + +public class FelszerelesIdAndCount +{ + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("count")] + public int Count { get; set; } +} \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/KarakterFelszerelesDto.cs b/Kemkas.Web/ViewModels/KarakterFelszereles1eDto.cs similarity index 70% rename from Kemkas.Web/ViewModels/KarakterFelszerelesDto.cs rename to Kemkas.Web/ViewModels/KarakterFelszereles1eDto.cs index 702534e..0857e33 100644 --- a/Kemkas.Web/ViewModels/KarakterFelszerelesDto.cs +++ b/Kemkas.Web/ViewModels/KarakterFelszereles1eDto.cs @@ -2,10 +2,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -/// -/// currently the same for 1st edition and 2nd edition, be cautious! -/// -public struct KarakterFelszerelesDto +public class KarakterFelszereles1eDto { [JsonPropertyName("pancelID")] public string? PancelId { get; set; } diff --git a/Kemkas.Web/ViewModels/KarakterFelszereles2eDto.cs b/Kemkas.Web/ViewModels/KarakterFelszereles2eDto.cs new file mode 100644 index 0000000..506ebb6 --- /dev/null +++ b/Kemkas.Web/ViewModels/KarakterFelszereles2eDto.cs @@ -0,0 +1,24 @@ +using System.Text.Json.Serialization; + +namespace Kemkas.Web.ViewModels; + +public class KarakterFelszereles2eDto +{ + [JsonPropertyName("pancelID")] + public string? PancelId { get; set; } + + [JsonPropertyName("pajzsID")] + public string? PajzsId { get; set; } + + [JsonPropertyName("fegyverek")] + public IList Fegyverek { get; set; } + + [JsonPropertyName("viselt")] + public IList Viselt { get; set; } + + [JsonPropertyName("cipelt")] + public IList Cipelt { get; set; } + + [JsonPropertyName("aprosagok")] + public IList Aprosagok { get; set; } +} \ No newline at end of file diff --git a/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs b/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs index d8c8503..e2fb5cf 100644 --- a/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs +++ b/Kemkas.Web/ViewModels/KarakterTulajdonsagokDto.cs @@ -5,7 +5,7 @@ namespace Kemkas.Web.ViewModels; /// /// currently the same for 1st edition and 2nd edition, be cautious! /// -public struct KarakterTulajdonsagokDto +public class KarakterTulajdonsagokDto { [JsonPropertyName("t_ero")] public byte Ero { get; set; } diff --git a/Kemkas.Web/ViewModels/Szintlepes.cs b/Kemkas.Web/ViewModels/Szintlepes.cs index 2f2e451..c6e9b57 100644 --- a/Kemkas.Web/ViewModels/Szintlepes.cs +++ b/Kemkas.Web/ViewModels/Szintlepes.cs @@ -2,7 +2,7 @@ using System.Text.Json.Serialization; namespace Kemkas.Web.ViewModels; -public struct Szintlepes +public class Szintlepes { [JsonPropertyName("osztaly")] public string Osztaly { get; set; }