From 16727b0ac43c3da81309e8b02753e39abec4e650 Mon Sep 17 00:00:00 2001 From: Hayotilla Tursunboev Date: Mon, 29 Apr 2024 12:35:42 +0300 Subject: [PATCH 1/5] Done --- .../20240429053129_first.Designer.cs | 511 ++++++++++++++++++ .../Migrations/20240429053129_first.cs | 22 + .../MVC/Controllers/CartController.cs | 38 ++ src/BookStore.Presentation/MVC/MVC.csproj | 2 + .../MVC/Views/Books/Index.cshtml | 46 +- .../MVC/Views/Cart/Basket.cshtml | 9 +- .../MVC/appsettings.json | 2 +- 7 files changed, 625 insertions(+), 5 deletions(-) create mode 100644 src/BookStore.Infrastructure/Migrations/20240429053129_first.Designer.cs create mode 100644 src/BookStore.Infrastructure/Migrations/20240429053129_first.cs diff --git a/src/BookStore.Infrastructure/Migrations/20240429053129_first.Designer.cs b/src/BookStore.Infrastructure/Migrations/20240429053129_first.Designer.cs new file mode 100644 index 0000000..1533d24 --- /dev/null +++ b/src/BookStore.Infrastructure/Migrations/20240429053129_first.Designer.cs @@ -0,0 +1,511 @@ +// +using System; +using BookStore.Infrastructure; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace BookStore.Infrastructure.Migrations +{ + [DbContext(typeof(AppDBContext))] + [Migration("20240429053129_first")] + partial class first + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.3") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("BookGenre", b => + { + b.Property("BooksId") + .HasColumnType("bigint"); + + b.Property("GenresId") + .HasColumnType("integer"); + + b.HasKey("BooksId", "GenresId"); + + b.HasIndex("GenresId"); + + b.ToTable("BookGenre"); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Auth.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + 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); + + b.HasData( + new + { + Id = new Guid("c2597d72-c975-48af-8c1e-a2fb033a22dd"), + Name = "User", + NormalizedName = "USER" + }, + new + { + Id = new Guid("0849371e-339c-4e99-9db7-69d2e88ce5e4"), + Name = "Admin", + NormalizedName = "ADMIN" + }, + new + { + Id = new Guid("814a9fe9-4f17-4fb0-a10f-0cdda6d837c1"), + Name = "SuperAdmin", + NormalizedName = "SUPERADMIN" + }); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Auth.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + 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("FullName") + .IsRequired() + .HasColumnType("text"); + + 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("PhotoPath") + .HasColumnType("text"); + + 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); + + b.HasData( + new + { + Id = new Guid("ca9d3855-2c7d-427a-9364-d37dac608b55"), + AccessFailedCount = 0, + ConcurrencyStamp = "fa95c310-1ae7-454d-a589-af70ed8c0bce", + Email = "adminaka0618@gmail.com", + EmailConfirmed = false, + FullName = "Admin aka", + LockoutEnabled = false, + NormalizedEmail = "ADMINAKA0618@GMAIL.COM", + NormalizedUserName = "ADMINAKA", + PasswordHash = "AQAAAAIAAYagAAAAEL5dGfxjT0/cQfyvMMMQ+b+ancTXrKrIV/xliyQbGTpwoIO2zJNi/DYKFHKMs05POg==", + PhoneNumber = "123456789", + PhoneNumberConfirmed = false, + SecurityStamp = "EQL6PMQHTWTUEC7XXDY6ZS5M3YS6UAZJ", + TwoFactorEnabled = false, + UserName = "adminaka" + }); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Author", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("PhotoPath") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Authors"); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Book", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AuthorId") + .HasColumnType("integer"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(280) + .HasColumnType("character varying(280)"); + + b.Property("PDFFilePath") + .IsRequired() + .HasColumnType("text"); + + b.Property("PhotoPath") + .IsRequired() + .HasColumnType("text"); + + b.Property("Price") + .HasColumnType("numeric"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.ToTable("Books"); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Genre", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Genres"); + + b.HasData( + new + { + Id = 1, + Name = "Diniy" + }, + new + { + Id = 2, + Name = "Badiiy" + }); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CartItems") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedDate") + .HasColumnType("timestamp with time zone"); + + b.Property("TotalPrice") + .HasColumnType("numeric"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Orders"); + }); + + 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("uuid"); + + 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("uuid"); + + 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") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + + b.HasData( + new + { + UserId = new Guid("ca9d3855-2c7d-427a-9364-d37dac608b55"), + RoleId = new Guid("814a9fe9-4f17-4fb0-a10f-0cdda6d837c1") + }); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + 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("BookGenre", b => + { + b.HasOne("BookStore.Domain.Entities.Book", null) + .WithMany() + .HasForeignKey("BooksId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BookStore.Domain.Entities.Genre", null) + .WithMany() + .HasForeignKey("GenresId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Book", b => + { + b.HasOne("BookStore.Domain.Entities.Author", "Author") + .WithMany("Books") + .HasForeignKey("AuthorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Order", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.Role", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BookStore.Domain.Entities.Auth.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("BookStore.Domain.Entities.Auth.User", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("BookStore.Domain.Entities.Author", b => + { + b.Navigation("Books"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/BookStore.Infrastructure/Migrations/20240429053129_first.cs b/src/BookStore.Infrastructure/Migrations/20240429053129_first.cs new file mode 100644 index 0000000..9e9888c --- /dev/null +++ b/src/BookStore.Infrastructure/Migrations/20240429053129_first.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BookStore.Infrastructure.Migrations +{ + /// + public partial class first : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/BookStore.Presentation/MVC/Controllers/CartController.cs b/src/BookStore.Presentation/MVC/Controllers/CartController.cs index 34116c9..20312a0 100644 --- a/src/BookStore.Presentation/MVC/Controllers/CartController.cs +++ b/src/BookStore.Presentation/MVC/Controllers/CartController.cs @@ -86,6 +86,44 @@ public async Task ClearAsync() return RedirectToAction(nameof(Basket)); } + public async Task DeleteAsync(int bookId) + { + HttpContext.Request.Cookies.TryGetValue("cart", out string cartItemsJson); + cartItemsJson ??= "[]"; + + var cartItems = JsonSerializer.Deserialize>(cartItemsJson); + + if (cartItems == null) + { + return RedirectToAction(nameof(Basket)); + } + + var item = cartItems.FirstOrDefault(x => x.BookId == bookId); + + if (item != null) + { + item.Count--; + + if (item.Count <= 0) + { + cartItems.Remove(item); + } + + HttpContext.Response.Cookies.Append( + "cart", + JsonSerializer.Serialize( + cartItems, + new JsonSerializerOptions() + { + ReferenceHandler = ReferenceHandler.IgnoreCycles + } + ) + ); + } + + return RedirectToAction(nameof(Basket)); + } + public async Task CreateOrderAsync() { if (!HttpContext.User.Identity.IsAuthenticated) diff --git a/src/BookStore.Presentation/MVC/MVC.csproj b/src/BookStore.Presentation/MVC/MVC.csproj index d1a012c..62732f7 100644 --- a/src/BookStore.Presentation/MVC/MVC.csproj +++ b/src/BookStore.Presentation/MVC/MVC.csproj @@ -23,6 +23,8 @@ + + diff --git a/src/BookStore.Presentation/MVC/Views/Books/Index.cshtml b/src/BookStore.Presentation/MVC/Views/Books/Index.cshtml index d88c717..826674e 100644 --- a/src/BookStore.Presentation/MVC/Views/Books/Index.cshtml +++ b/src/BookStore.Presentation/MVC/Views/Books/Index.cshtml @@ -77,12 +77,52 @@ else } else { - - @book.Price - so'm + + @book.Price so'm } + + + + + } diff --git a/src/BookStore.Presentation/MVC/Views/Cart/Basket.cshtml b/src/BookStore.Presentation/MVC/Views/Cart/Basket.cshtml index f9c7250..b1047a4 100644 --- a/src/BookStore.Presentation/MVC/Views/Cart/Basket.cshtml +++ b/src/BookStore.Presentation/MVC/Views/Cart/Basket.cshtml @@ -10,6 +10,7 @@ Title Price Count + Action @@ -17,11 +18,17 @@ { - Photo path + Photo path @Model.Items[i].Book.Title @Model.Items[i].Book.Price @Model.Items[i].Count + + + + + + } diff --git a/src/BookStore.Presentation/MVC/appsettings.json b/src/BookStore.Presentation/MVC/appsettings.json index 3f3d129..0566e8e 100644 --- a/src/BookStore.Presentation/MVC/appsettings.json +++ b/src/BookStore.Presentation/MVC/appsettings.json @@ -9,7 +9,7 @@ "BotToken": "7040566448:AAGuJLoJsg8xqAAW4yWGPkZDR6PIxBlU0ns", "ConnectionStrings": { "SQLServer": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=BookStore.MVC.DB;", - "Postgres": "Host=localhost;Port=5432;Username=postgres;Password=sardor0618!;Database=BookStoree.DB" + "Postgres": "Host=localhost;Port=5432;Username=postgres;Password=coder;Database=BookStoree.DB" }, "Serilog": { "Using": [ "Serilog.Sinks.File" ], From 8c9a4617e788a35fcb8666f6081cc77e6c81fc19 Mon Sep 17 00:00:00 2001 From: Hayotilla Tursunboev Date: Mon, 29 Apr 2024 14:22:36 +0300 Subject: [PATCH 2/5] AuthorsDelete corrected and done --- .../MVC/Controllers/AuthorsController.cs | 4 ++-- src/BookStore.Presentation/MVC/MVC.csproj | 1 + src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs index 142f46f..ec9d588 100644 --- a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs +++ b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs @@ -93,7 +93,7 @@ public async Task UpdateAsync(Author author) return View("Details", updatedAuthor); } - public async Task DeleteAuthor(int id) + public async Task DeleteAsync(int id) { var query = new DeleteAuthorCommand() { @@ -103,4 +103,4 @@ public async Task DeleteAuthor(int id) return RedirectToAction(actionName: nameof(Index)); } } -} +} \ No newline at end of file diff --git a/src/BookStore.Presentation/MVC/MVC.csproj b/src/BookStore.Presentation/MVC/MVC.csproj index 62732f7..a161a76 100644 --- a/src/BookStore.Presentation/MVC/MVC.csproj +++ b/src/BookStore.Presentation/MVC/MVC.csproj @@ -25,6 +25,7 @@ + diff --git a/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml b/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml index 86beb42..01c304c 100644 --- a/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml +++ b/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml @@ -46,8 +46,8 @@ @if (User.Identity.IsAuthenticated && User.IsInRole("SuperAdmin")) { } From 103130cfe780a00116add2011199df4681a2ecbe Mon Sep 17 00:00:00 2001 From: Hayotilla Tursunboev Date: Mon, 29 Apr 2024 14:59:03 +0300 Subject: [PATCH 3/5] Update done too --- .../MVC/Controllers/AuthorsController.cs | 8 +++++++- src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs index ec9d588..8c82afd 100644 --- a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs +++ b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs @@ -90,7 +90,13 @@ public async Task UpdateAsync(Author author) var updatedAuthor = await _mediator.Send(updateAuthorCommand); - return View("Details", updatedAuthor); + var detailsModel = new AuthorDetailsViewModel + { + Author = updatedAuthor, + Host = HttpContext.Request.Host.ToString(), + }; + + return View("Details", detailsModel); } public async Task DeleteAsync(int id) diff --git a/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml b/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml index 01c304c..6c06d07 100644 --- a/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml +++ b/src/BookStore.Presentation/MVC/Views/Authors/Index.cshtml @@ -46,7 +46,8 @@ @if (User.Identity.IsAuthenticated && User.IsInRole("SuperAdmin")) { } From 349e6a9f71e72ca4f18b0cc1e651f20c66817b2f Mon Sep 17 00:00:00 2001 From: Hayotilla Tursunboev Date: Mon, 29 Apr 2024 15:00:28 +0300 Subject: [PATCH 4/5] UpdateAuthors done --- src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs index 8c82afd..6ba7308 100644 --- a/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs +++ b/src/BookStore.Presentation/MVC/Controllers/AuthorsController.cs @@ -77,7 +77,7 @@ public async Task UpdateAsync(int id) return View(author); } - + [HttpPost] public async Task UpdateAsync(Author author) { From 04a6f29ff727ca659ed0fcbf5a209a8b6647a06d Mon Sep 17 00:00:00 2001 From: Hayotilla Tursunboev Date: Mon, 29 Apr 2024 15:09:31 +0300 Subject: [PATCH 5/5] Basket deleted for SUperAdmin --- .../MVC/Views/Shared/_Layout.cshtml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/BookStore.Presentation/MVC/Views/Shared/_Layout.cshtml b/src/BookStore.Presentation/MVC/Views/Shared/_Layout.cshtml index a9c7b76..993b97a 100644 --- a/src/BookStore.Presentation/MVC/Views/Shared/_Layout.cshtml +++ b/src/BookStore.Presentation/MVC/Views/Shared/_Layout.cshtml @@ -21,7 +21,7 @@