diff --git a/RentACar/Data/Migrations/20220408165704_initial.Designer.cs b/RentACar/Data/Migrations/20220408204254_initial.Designer.cs similarity index 91% rename from RentACar/Data/Migrations/20220408165704_initial.Designer.cs rename to RentACar/Data/Migrations/20220408204254_initial.Designer.cs index 28438a9..43829da 100644 --- a/RentACar/Data/Migrations/20220408165704_initial.Designer.cs +++ b/RentACar/Data/Migrations/20220408204254_initial.Designer.cs @@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Data.Migrations { [DbContext(typeof(RentACarDbContext))] - [Migration("20220408165704_initial")] + [Migration("20220408204254_initial")] partial class initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -70,6 +70,7 @@ namespace Data.Migrations .HasColumnType("datetime2"); b.Property("UserId") + .IsRequired() .HasColumnType("nvarchar(450)"); b.HasKey("Id"); @@ -157,15 +158,15 @@ namespace Data.Migrations b.HasData( new { - Id = "6672fb82-eac5-434e-bfb3-b006250c3c70", + Id = "90eb7ea0-1453-414e-bd62-1598743235f9", AccessFailedCount = 0, - ConcurrencyStamp = "73ea1656-0fe7-4798-8c49-2bf075752f0d", + ConcurrencyStamp = "2d3a925b-5e08-49ee-ad6d-0478d5f3835d", Email = "admin@admin.admin", EmailConfirmed = false, LockoutEnabled = false, - PasswordHash = "AQAAAAEAACcQAAAAEF1qZnzmOwaxX7gg8131im6Fsf15IdhzXMNGdGdZ2/A44dccfIebf3/ogztSjIxDYw==", + PasswordHash = "AQAAAAEAACcQAAAAED+NUmnyTAFii5q3rHXmsdJw3qQB6PZGujYBjKMXKm8Vgh/9YINv1bWutfkY010xvQ==", PhoneNumberConfirmed = false, - SecurityStamp = "7c3cfc39-00b4-45e4-a0ab-4fed3c22bf61", + SecurityStamp = "36eacd85-50f6-4f93-928e-d5b7b53d4dfa", TwoFactorEnabled = false, UserName = "admin" }); @@ -200,14 +201,14 @@ namespace Data.Migrations b.HasData( new { - Id = "616b0c38-7885-4bbb-ba58-eb9ffd670331", - ConcurrencyStamp = "fc82a4fb-c5d8-4c95-963f-8332e6896085", + Id = "ea075722-31b3-4f87-9306-05a2b3955385", + ConcurrencyStamp = "75739597-d83b-4934-8676-ac31019c2a65", Name = "Admin" }, new { - Id = "2ebdf39c-05b9-41f5-a505-4dab3788136f", - ConcurrencyStamp = "5638a11d-92a1-46bd-9d05-d43cae4eee4e", + Id = "fed57231-c916-4cd0-9eed-7a2dee121d2d", + ConcurrencyStamp = "96013243-e917-4ffc-a6a7-b1e3a7eb5f7e", Name = "Employee" }); }); @@ -299,13 +300,13 @@ namespace Data.Migrations b.HasData( new { - UserId = "6672fb82-eac5-434e-bfb3-b006250c3c70", - RoleId = "616b0c38-7885-4bbb-ba58-eb9ffd670331" + UserId = "90eb7ea0-1453-414e-bd62-1598743235f9", + RoleId = "ea075722-31b3-4f87-9306-05a2b3955385" }, new { - UserId = "6672fb82-eac5-434e-bfb3-b006250c3c70", - RoleId = "2ebdf39c-05b9-41f5-a505-4dab3788136f" + UserId = "90eb7ea0-1453-414e-bd62-1598743235f9", + RoleId = "fed57231-c916-4cd0-9eed-7a2dee121d2d" }); }); @@ -338,7 +339,9 @@ namespace Data.Migrations b.HasOne("Data.Entities.User", "User") .WithMany() - .HasForeignKey("UserId"); + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.Navigation("Car"); diff --git a/RentACar/Data/Migrations/20220408165704_initial.cs b/RentACar/Data/Migrations/20220408204254_initial.cs similarity index 94% rename from RentACar/Data/Migrations/20220408165704_initial.cs rename to RentACar/Data/Migrations/20220408204254_initial.cs index 328d2ec..e6b9a7a 100644 --- a/RentACar/Data/Migrations/20220408165704_initial.cs +++ b/RentACar/Data/Migrations/20220408204254_initial.cs @@ -182,7 +182,7 @@ namespace Data.Migrations CarId = table.Column(type: "int", nullable: false), StartDate = table.Column(type: "datetime2", nullable: false), EndDate = table.Column(type: "datetime2", nullable: false), - UserId = table.Column(type: "nvarchar(450)", nullable: true) + UserId = table.Column(type: "nvarchar(450)", nullable: false) }, constraints: table => { @@ -192,7 +192,7 @@ namespace Data.Migrations column: x => x.UserId, principalTable: "AspNetUsers", principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Rents_Cars_CarId", column: x => x.CarId, @@ -204,27 +204,27 @@ namespace Data.Migrations migrationBuilder.InsertData( table: "AspNetRoles", columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, - values: new object[] { "616b0c38-7885-4bbb-ba58-eb9ffd670331", "fc82a4fb-c5d8-4c95-963f-8332e6896085", "Admin", null }); + values: new object[] { "ea075722-31b3-4f87-9306-05a2b3955385", "75739597-d83b-4934-8676-ac31019c2a65", "Admin", null }); migrationBuilder.InsertData( table: "AspNetRoles", columns: new[] { "Id", "ConcurrencyStamp", "Name", "NormalizedName" }, - values: new object[] { "2ebdf39c-05b9-41f5-a505-4dab3788136f", "5638a11d-92a1-46bd-9d05-d43cae4eee4e", "Employee", null }); + values: new object[] { "fed57231-c916-4cd0-9eed-7a2dee121d2d", "96013243-e917-4ffc-a6a7-b1e3a7eb5f7e", "Employee", null }); migrationBuilder.InsertData( table: "AspNetUsers", columns: new[] { "Id", "AccessFailedCount", "ConcurrencyStamp", "Email", "EmailConfirmed", "FirstName", "LastName", "LockoutEnabled", "LockoutEnd", "NormalizedEmail", "NormalizedUserName", "PasswordHash", "PersonalNumber", "PhoneNumber", "PhoneNumberConfirmed", "SecurityStamp", "TwoFactorEnabled", "UserName" }, - values: new object[] { "6672fb82-eac5-434e-bfb3-b006250c3c70", 0, "73ea1656-0fe7-4798-8c49-2bf075752f0d", "admin@admin.admin", false, null, null, false, null, null, null, "AQAAAAEAACcQAAAAEF1qZnzmOwaxX7gg8131im6Fsf15IdhzXMNGdGdZ2/A44dccfIebf3/ogztSjIxDYw==", null, null, false, "7c3cfc39-00b4-45e4-a0ab-4fed3c22bf61", false, "admin" }); + values: new object[] { "90eb7ea0-1453-414e-bd62-1598743235f9", 0, "2d3a925b-5e08-49ee-ad6d-0478d5f3835d", "admin@admin.admin", false, null, null, false, null, null, null, "AQAAAAEAACcQAAAAED+NUmnyTAFii5q3rHXmsdJw3qQB6PZGujYBjKMXKm8Vgh/9YINv1bWutfkY010xvQ==", null, null, false, "36eacd85-50f6-4f93-928e-d5b7b53d4dfa", false, "admin" }); migrationBuilder.InsertData( table: "AspNetUserRoles", columns: new[] { "RoleId", "UserId" }, - values: new object[] { "616b0c38-7885-4bbb-ba58-eb9ffd670331", "6672fb82-eac5-434e-bfb3-b006250c3c70" }); + values: new object[] { "ea075722-31b3-4f87-9306-05a2b3955385", "90eb7ea0-1453-414e-bd62-1598743235f9" }); migrationBuilder.InsertData( table: "AspNetUserRoles", columns: new[] { "RoleId", "UserId" }, - values: new object[] { "2ebdf39c-05b9-41f5-a505-4dab3788136f", "6672fb82-eac5-434e-bfb3-b006250c3c70" }); + values: new object[] { "fed57231-c916-4cd0-9eed-7a2dee121d2d", "90eb7ea0-1453-414e-bd62-1598743235f9" }); migrationBuilder.CreateIndex( name: "IX_AspNetRoleClaims_RoleId", diff --git a/RentACar/Data/Migrations/RentACarDbContextModelSnapshot.cs b/RentACar/Data/Migrations/RentACarDbContextModelSnapshot.cs index 2ffa95e..72e6cf2 100644 --- a/RentACar/Data/Migrations/RentACarDbContextModelSnapshot.cs +++ b/RentACar/Data/Migrations/RentACarDbContextModelSnapshot.cs @@ -68,6 +68,7 @@ namespace Data.Migrations .HasColumnType("datetime2"); b.Property("UserId") + .IsRequired() .HasColumnType("nvarchar(450)"); b.HasKey("Id"); @@ -155,15 +156,15 @@ namespace Data.Migrations b.HasData( new { - Id = "6672fb82-eac5-434e-bfb3-b006250c3c70", + Id = "90eb7ea0-1453-414e-bd62-1598743235f9", AccessFailedCount = 0, - ConcurrencyStamp = "73ea1656-0fe7-4798-8c49-2bf075752f0d", + ConcurrencyStamp = "2d3a925b-5e08-49ee-ad6d-0478d5f3835d", Email = "admin@admin.admin", EmailConfirmed = false, LockoutEnabled = false, - PasswordHash = "AQAAAAEAACcQAAAAEF1qZnzmOwaxX7gg8131im6Fsf15IdhzXMNGdGdZ2/A44dccfIebf3/ogztSjIxDYw==", + PasswordHash = "AQAAAAEAACcQAAAAED+NUmnyTAFii5q3rHXmsdJw3qQB6PZGujYBjKMXKm8Vgh/9YINv1bWutfkY010xvQ==", PhoneNumberConfirmed = false, - SecurityStamp = "7c3cfc39-00b4-45e4-a0ab-4fed3c22bf61", + SecurityStamp = "36eacd85-50f6-4f93-928e-d5b7b53d4dfa", TwoFactorEnabled = false, UserName = "admin" }); @@ -198,14 +199,14 @@ namespace Data.Migrations b.HasData( new { - Id = "616b0c38-7885-4bbb-ba58-eb9ffd670331", - ConcurrencyStamp = "fc82a4fb-c5d8-4c95-963f-8332e6896085", + Id = "ea075722-31b3-4f87-9306-05a2b3955385", + ConcurrencyStamp = "75739597-d83b-4934-8676-ac31019c2a65", Name = "Admin" }, new { - Id = "2ebdf39c-05b9-41f5-a505-4dab3788136f", - ConcurrencyStamp = "5638a11d-92a1-46bd-9d05-d43cae4eee4e", + Id = "fed57231-c916-4cd0-9eed-7a2dee121d2d", + ConcurrencyStamp = "96013243-e917-4ffc-a6a7-b1e3a7eb5f7e", Name = "Employee" }); }); @@ -297,13 +298,13 @@ namespace Data.Migrations b.HasData( new { - UserId = "6672fb82-eac5-434e-bfb3-b006250c3c70", - RoleId = "616b0c38-7885-4bbb-ba58-eb9ffd670331" + UserId = "90eb7ea0-1453-414e-bd62-1598743235f9", + RoleId = "ea075722-31b3-4f87-9306-05a2b3955385" }, new { - UserId = "6672fb82-eac5-434e-bfb3-b006250c3c70", - RoleId = "2ebdf39c-05b9-41f5-a505-4dab3788136f" + UserId = "90eb7ea0-1453-414e-bd62-1598743235f9", + RoleId = "fed57231-c916-4cd0-9eed-7a2dee121d2d" }); }); @@ -336,7 +337,9 @@ namespace Data.Migrations b.HasOne("Data.Entities.User", "User") .WithMany() - .HasForeignKey("UserId"); + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); b.Navigation("Car"); diff --git a/RentACar/Data/Models/Rents.cs b/RentACar/Data/Models/Rents.cs index ee8d3d7..f4a5356 100644 --- a/RentACar/Data/Models/Rents.cs +++ b/RentACar/Data/Models/Rents.cs @@ -22,7 +22,9 @@ namespace Data.Entities [Required] public DateTime EndDate { get; set; } + [Required] [ForeignKey("UserId")] public User User { get; set; } + } } diff --git a/RentACar/WebApp/Controllers/RentsController.cs b/RentACar/WebApp/Controllers/RentsController.cs index b73ef42..c1f9cc9 100644 --- a/RentACar/WebApp/Controllers/RentsController.cs +++ b/RentACar/WebApp/Controllers/RentsController.cs @@ -59,14 +59,12 @@ namespace WebApp.Controllers [HttpPost] [ValidateAntiForgeryToken] [Authorize] - public async Task Create([Bind("Id,Car.Id,StartDate,EndDate,User.Id")] Rents rents) + public async Task Create([Bind("CarId,StartDate,EndDate")] Rents rents) { if (ModelState.IsValid) { - var car = _context.Cars.FirstOrDefault(car => car.Id == rents.Car.Id); + var car = _context.Cars.FirstOrDefault(car => car.Id == 1); rents.Car = car; - var user = _context.Users.FirstOrDefault(user => user.Id == rents.User.Id); - rents.User = user; _context.Add(rents); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); @@ -97,7 +95,7 @@ namespace WebApp.Controllers [HttpPost] [ValidateAntiForgeryToken] [Authorize(Roles = "Admin")] - public async Task Edit(int id, [Bind("Id,CarId,StartDate,EndDate,UserId")] Rents rents) + public async Task Edit(int id, [Bind("CarId,StartDate,EndDate")] Rents rents) { if (id != rents.Id) { diff --git a/RentACar/WebApp/Controllers/UsersController.cs b/RentACar/WebApp/Controllers/UsersController.cs index ab11693..76e939f 100644 --- a/RentACar/WebApp/Controllers/UsersController.cs +++ b/RentACar/WebApp/Controllers/UsersController.cs @@ -171,7 +171,7 @@ namespace WebApp.Controllers } // GET: Users/Details/5 [Authorize(Roles = "Admin")] - public async Task Details(string? id) + public async Task Details(string id) { if (id == null) {