From 740f8a955de283a0c14673fdae76c2eb34e09b45 Mon Sep 17 00:00:00 2001 From: AleksDw Date: Sat, 31 May 2025 01:51:48 +0200 Subject: [PATCH] Rename EventEndpoints VolunteerId to UserId --- WebApp/Data/ApplicationDbContext.cs | 2 +- WebApp/Endpoints/AuthEndpoints.cs | 2 +- WebApp/Entities/EventRegistration.cs | 2 +- ...235051_RenameEventRegistration.Designer.cs | 622 ++++++++++++++++++ .../20250530235051_RenameEventRegistration.cs | 97 +++ .../ApplicationDbContextModelSnapshot.cs | 13 +- 6 files changed, 727 insertions(+), 11 deletions(-) create mode 100644 WebApp/Migrations/20250530235051_RenameEventRegistration.Designer.cs create mode 100644 WebApp/Migrations/20250530235051_RenameEventRegistration.cs diff --git a/WebApp/Data/ApplicationDbContext.cs b/WebApp/Data/ApplicationDbContext.cs index 2f4d686..1ca7d77 100644 --- a/WebApp/Data/ApplicationDbContext.cs +++ b/WebApp/Data/ApplicationDbContext.cs @@ -35,7 +35,7 @@ namespace WebApp.Data .HasKey(es => new { es.EventId, es.SkillId }); builder.Entity() - .HasKey(er => new { er.VolunteerId, er.EventId }); + .HasKey(er => new { er.UserId, er.EventId }); builder.Entity() .HasKey(ma => new { ma.Sender, ma.Recipient }); diff --git a/WebApp/Endpoints/AuthEndpoints.cs b/WebApp/Endpoints/AuthEndpoints.cs index 3668d6c..2363ce7 100644 --- a/WebApp/Endpoints/AuthEndpoints.cs +++ b/WebApp/Endpoints/AuthEndpoints.cs @@ -97,7 +97,7 @@ namespace WebApp.Endpoints if(!user.IsOrganisation) { var events = await context.EventRegistrations - .Where(er => er.VolunteerId == user.UserId) + .Where(er => er.UserId == user.UserId) .Select(er => er.Event.ToEventSummaryNoErDto()) .ToListAsync(); diff --git a/WebApp/Entities/EventRegistration.cs b/WebApp/Entities/EventRegistration.cs index 759bc6c..4ae6e2d 100644 --- a/WebApp/Entities/EventRegistration.cs +++ b/WebApp/Entities/EventRegistration.cs @@ -3,7 +3,7 @@ public class EventRegistration { public int EventId { get; set; } - public required int VolunteerId { get; set; } + public required int UserId { get; set; } public DateTime RegisteredAt { get; set; } = DateTime.UtcNow; public Event? Event { get; set; } public User? User { get; set; } diff --git a/WebApp/Migrations/20250530235051_RenameEventRegistration.Designer.cs b/WebApp/Migrations/20250530235051_RenameEventRegistration.Designer.cs new file mode 100644 index 0000000..c402472 --- /dev/null +++ b/WebApp/Migrations/20250530235051_RenameEventRegistration.Designer.cs @@ -0,0 +1,622 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using WebApp.Data; + +#nullable disable + +namespace WebApp.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20250530235051_RenameEventRegistration")] + partial class RenameEventRegistration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.3") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("text"); + + 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("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") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("text"); + + 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("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") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("text"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("WebApp.Entities.Event", b => + { + b.Property("EventId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("EventId")); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Location") + .IsRequired() + .HasColumnType("text"); + + b.Property("OrganisationId") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("EventId"); + + b.HasIndex("OrganisationId"); + + b.ToTable("Events"); + }); + + modelBuilder.Entity("WebApp.Entities.EventRegistration", b => + { + b.Property("UserId") + .HasColumnType("integer"); + + b.Property("EventId") + .HasColumnType("integer"); + + b.Property("RegisteredAt") + .HasColumnType("timestamp with time zone"); + + b.HasKey("UserId", "EventId"); + + b.HasIndex("EventId"); + + b.ToTable("EventRegistrations"); + }); + + modelBuilder.Entity("WebApp.Entities.EventSkill", b => + { + b.Property("EventId") + .HasColumnType("integer"); + + b.Property("SkillId") + .HasColumnType("integer"); + + b.HasKey("EventId", "SkillId"); + + b.HasIndex("SkillId"); + + b.ToTable("EventSkills"); + }); + + modelBuilder.Entity("WebApp.Entities.Message", b => + { + b.Property("MessageId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("MessageId")); + + b.Property("Content") + .HasColumnType("text"); + + b.Property("EventType") + .HasColumnType("integer"); + + b.Property("IsMsgFromVolunteer") + .HasColumnType("boolean"); + + b.Property("IsoDate") + .HasColumnType("timestamp with time zone"); + + b.Property("OrganizationId") + .HasColumnType("integer"); + + b.Property("VolunteerId") + .HasColumnType("integer"); + + b.HasKey("MessageId"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("WebApp.Entities.MessageActivity", b => + { + b.Property("Sender") + .HasColumnType("integer"); + + b.Property("Recipient") + .HasColumnType("integer"); + + b.Property("RecipientLastActive") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Sender", "Recipient"); + + b.ToTable("MessagesActivities"); + }); + + modelBuilder.Entity("WebApp.Entities.Organisation", b => + { + b.Property("OrganisationId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("OrganisationId")); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("integer"); + + b.Property("Website") + .HasColumnType("text"); + + b.HasKey("OrganisationId"); + + b.HasIndex("UserId"); + + b.ToTable("Organisations"); + }); + + modelBuilder.Entity("WebApp.Entities.Skill", b => + { + b.Property("SkillId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("SkillId")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("SkillId"); + + b.ToTable("Skills"); + }); + + modelBuilder.Entity("WebApp.Entities.Token", b => + { + b.Property("TokenId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("TokenId")); + + b.Property("UserId") + .HasColumnType("integer"); + + b.Property("ValidUntil") + .HasColumnType("timestamp with time zone"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("TokenId"); + + b.HasIndex("UserId"); + + b.ToTable("Tokens"); + }); + + modelBuilder.Entity("WebApp.Entities.User", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("UserId")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsOrganisation") + .HasColumnType("boolean"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("WebUsers"); + }); + + modelBuilder.Entity("WebApp.Entities.VolunteerSkill", b => + { + b.Property("UserId") + .HasColumnType("integer"); + + b.Property("SkillId") + .HasColumnType("integer"); + + b.HasKey("UserId", "SkillId"); + + b.HasIndex("SkillId"); + + b.ToTable("VolunteerSkills"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("WebApp.Entities.Event", b => + { + b.HasOne("WebApp.Entities.Organisation", "Organisation") + .WithMany("Events") + .HasForeignKey("OrganisationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organisation"); + }); + + modelBuilder.Entity("WebApp.Entities.EventRegistration", b => + { + b.HasOne("WebApp.Entities.Event", "Event") + .WithMany("EventRegistrations") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WebApp.Entities.User", "User") + .WithMany("EventRegistrations") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Event"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("WebApp.Entities.EventSkill", b => + { + b.HasOne("WebApp.Entities.Event", "Event") + .WithMany("EventSkills") + .HasForeignKey("EventId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WebApp.Entities.Skill", "Skill") + .WithMany("EventSkills") + .HasForeignKey("SkillId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Event"); + + b.Navigation("Skill"); + }); + + modelBuilder.Entity("WebApp.Entities.Organisation", b => + { + b.HasOne("WebApp.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("WebApp.Entities.Token", b => + { + b.HasOne("WebApp.Entities.User", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("WebApp.Entities.VolunteerSkill", b => + { + b.HasOne("WebApp.Entities.Skill", "Skill") + .WithMany("VolunteerSkills") + .HasForeignKey("SkillId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("WebApp.Entities.User", "User") + .WithMany("VolunteerSkills") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Skill"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("WebApp.Entities.Event", b => + { + b.Navigation("EventRegistrations"); + + b.Navigation("EventSkills"); + }); + + modelBuilder.Entity("WebApp.Entities.Organisation", b => + { + b.Navigation("Events"); + }); + + modelBuilder.Entity("WebApp.Entities.Skill", b => + { + b.Navigation("EventSkills"); + + b.Navigation("VolunteerSkills"); + }); + + modelBuilder.Entity("WebApp.Entities.User", b => + { + b.Navigation("EventRegistrations"); + + b.Navigation("Tokens"); + + b.Navigation("VolunteerSkills"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/WebApp/Migrations/20250530235051_RenameEventRegistration.cs b/WebApp/Migrations/20250530235051_RenameEventRegistration.cs new file mode 100644 index 0000000..7275a55 --- /dev/null +++ b/WebApp/Migrations/20250530235051_RenameEventRegistration.cs @@ -0,0 +1,97 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WebApp.Migrations +{ + /// + public partial class RenameEventRegistration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_EventRegistrations_WebUsers_UserId", + table: "EventRegistrations"); + + migrationBuilder.DropPrimaryKey( + name: "PK_EventRegistrations", + table: "EventRegistrations"); + + migrationBuilder.DropIndex( + name: "IX_EventRegistrations_UserId", + table: "EventRegistrations"); + + migrationBuilder.DropColumn( + name: "VolunteerId", + table: "EventRegistrations"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "EventRegistrations", + type: "integer", + nullable: false, + defaultValue: 0, + oldClrType: typeof(int), + oldType: "integer", + oldNullable: true); + + migrationBuilder.AddPrimaryKey( + name: "PK_EventRegistrations", + table: "EventRegistrations", + columns: new[] { "UserId", "EventId" }); + + migrationBuilder.AddForeignKey( + name: "FK_EventRegistrations_WebUsers_UserId", + table: "EventRegistrations", + column: "UserId", + principalTable: "WebUsers", + principalColumn: "UserId", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_EventRegistrations_WebUsers_UserId", + table: "EventRegistrations"); + + migrationBuilder.DropPrimaryKey( + name: "PK_EventRegistrations", + table: "EventRegistrations"); + + migrationBuilder.AlterColumn( + name: "UserId", + table: "EventRegistrations", + type: "integer", + nullable: true, + oldClrType: typeof(int), + oldType: "integer"); + + migrationBuilder.AddColumn( + name: "VolunteerId", + table: "EventRegistrations", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddPrimaryKey( + name: "PK_EventRegistrations", + table: "EventRegistrations", + columns: new[] { "VolunteerId", "EventId" }); + + migrationBuilder.CreateIndex( + name: "IX_EventRegistrations_UserId", + table: "EventRegistrations", + column: "UserId"); + + migrationBuilder.AddForeignKey( + name: "FK_EventRegistrations_WebUsers_UserId", + table: "EventRegistrations", + column: "UserId", + principalTable: "WebUsers", + principalColumn: "UserId"); + } + } +} diff --git a/WebApp/Migrations/ApplicationDbContextModelSnapshot.cs b/WebApp/Migrations/ApplicationDbContextModelSnapshot.cs index 428e810..af1c340 100644 --- a/WebApp/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/WebApp/Migrations/ApplicationDbContextModelSnapshot.cs @@ -252,7 +252,7 @@ namespace WebApp.Migrations modelBuilder.Entity("WebApp.Entities.EventRegistration", b => { - b.Property("VolunteerId") + b.Property("UserId") .HasColumnType("integer"); b.Property("EventId") @@ -261,15 +261,10 @@ namespace WebApp.Migrations b.Property("RegisteredAt") .HasColumnType("timestamp with time zone"); - b.Property("UserId") - .HasColumnType("integer"); - - b.HasKey("VolunteerId", "EventId"); + b.HasKey("UserId", "EventId"); b.HasIndex("EventId"); - b.HasIndex("UserId"); - b.ToTable("EventRegistrations"); }); @@ -524,7 +519,9 @@ namespace WebApp.Migrations b.HasOne("WebApp.Entities.User", "User") .WithMany("EventRegistrations") - .HasForeignKey("UserId"); + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.Navigation("Event");