diff --git a/Netina.Api/Controllers/BlogCategoryController.cs b/Netina.Api/Controllers/BlogCategoryController.cs index 15c3a6d..643cea2 100644 --- a/Netina.Api/Controllers/BlogCategoryController.cs +++ b/Netina.Api/Controllers/BlogCategoryController.cs @@ -11,23 +11,26 @@ public class BlogCategoryController : ICarterModule .MapGroup($"api/blog/category"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllCategories") + .WithDisplayName("Get BlogCategories") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetBlogCategory") + .WithDisplayName("Get BlogCategory") .HasApiVersion(1.0); group.MapPost("", Post) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission,ApplicationPermission.ManageBlogs)) + .WithDisplayName("Create BlogCategory") .HasApiVersion(1.0); group.MapPut("", Put) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .WithDisplayName("Update BlogCategory") .HasApiVersion(1.0); group.MapDelete("{id}", Delete) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .WithDisplayName("Delete BlogCategory") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/BlogController.cs b/Netina.Api/Controllers/BlogController.cs index 810ee12..48a69f7 100644 --- a/Netina.Api/Controllers/BlogController.cs +++ b/Netina.Api/Controllers/BlogController.cs @@ -13,33 +13,36 @@ public class BlogController : ICarterModule .MapGroup($"api/blog"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllBlogs") + .WithDisplayName("Get Blogs") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetBlog") + .WithDisplayName("Get Blog") .HasApiVersion(1.0); group.MapPost("", Post) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .WithDisplayName("Create Blog") .HasApiVersion(1.0); group.MapPut("", Put) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .WithDisplayName("Update Blog") .HasApiVersion(1.0); group.MapDelete("{id}", Delete) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .WithDisplayName("Delete Blog") .HasApiVersion(1.0); group.MapGet("/newlink", GetBlogNewLinkAsync) - .WithDisplayName("GetBlogNewLink") + .WithDisplayName("Get Blog NewLink") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/BrandController.cs b/Netina.Api/Controllers/BrandController.cs index 072511a..4823524 100644 --- a/Netina.Api/Controllers/BrandController.cs +++ b/Netina.Api/Controllers/BrandController.cs @@ -11,23 +11,26 @@ public class BrandController : ICarterModule .MapGroup($"api/brand"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllBrands") + .WithDisplayName("Get Brands") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetBlogBrand") + .WithDisplayName("Get Brand") .HasApiVersion(1.0); group.MapPost("", Post) .HasApiVersion(1.0) + .WithDisplayName("Create Brand") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBrands)); group.MapPut("", Put) .HasApiVersion(1.0) + .WithDisplayName("Update Brand") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBrands)); group.MapDelete("{id}", Delete) .HasApiVersion(1.0) + .WithDisplayName("Delete Brand") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBrands)); } diff --git a/Netina.Api/Controllers/DiscountController.cs b/Netina.Api/Controllers/DiscountController.cs index 9fd53c6..de73977 100644 --- a/Netina.Api/Controllers/DiscountController.cs +++ b/Netina.Api/Controllers/DiscountController.cs @@ -9,25 +9,28 @@ public class DiscountController : ICarterModule .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllDiscounts") + .WithDisplayName("Get Discounts") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDiscounts, ApplicationPermission.ViewDiscounts)) .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetDiscount") + .WithDisplayName("Get Discount") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDiscounts, ApplicationPermission.ViewDiscounts)) .HasApiVersion(1.0); group.MapPost("", Post) .HasApiVersion(1.0) + .WithDisplayName("Create Discount") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDiscounts)); group.MapPut("", Put) .HasApiVersion(1.0) + .WithDisplayName("Update Discount") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDiscounts)); group.MapDelete("{id}", Delete) .HasApiVersion(1.0) + .WithDisplayName("Delete Discount") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDiscounts)); } diff --git a/Netina.Api/Controllers/DistrictController.cs b/Netina.Api/Controllers/DistrictController.cs index 1e732e3..85cfaf4 100644 --- a/Netina.Api/Controllers/DistrictController.cs +++ b/Netina.Api/Controllers/DistrictController.cs @@ -11,7 +11,7 @@ public class DistrictController : ICarterModule .WithDisplayName("Get Cities") .HasApiVersion(1.0); group.MapGet("province", GetProvincesAsync) - .WithDisplayName("Get Cities") + .WithDisplayName("Get Provinces") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/FaqController.cs b/Netina.Api/Controllers/FaqController.cs index 9b141fe..777a24b 100644 --- a/Netina.Api/Controllers/FaqController.cs +++ b/Netina.Api/Controllers/FaqController.cs @@ -8,13 +8,13 @@ public class FaqController : ICarterModule .MapGroup("api/faq"); group.MapGet("/slug", GetFaqBySlugAsync) - .WithDisplayName("GetFaqBySlug") + .WithDisplayName("Get Faq By Slug") .WithDescription("Get faq by slug , you have to send page slug") .HasApiVersion(1.0); group.MapGet("", GetFaqsAsync) - .WithDisplayName("GetFaqs") - .WithDescription("Get All Faqs ") + .WithDisplayName("Get Faqs") + .WithDescription("Get All Faqs") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer") .RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageFaq)) .HasApiVersion(1.0); @@ -27,14 +27,14 @@ public class FaqController : ICarterModule .HasApiVersion(1.0); group.MapPut("", UpdateFaqAsync) - .WithDisplayName("Update FaqAsync") + .WithDisplayName("Update Faq") .WithDescription("Update Faq , you can create new faq or create update your faq ") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer") .RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageFaq)) .HasApiVersion(1.0); group.MapDelete("{id}", DeleteFaqAsync) - .WithDisplayName("DeleteFaq") + .WithDisplayName("Delete Faq") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageFaq)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/FileController.cs b/Netina.Api/Controllers/FileController.cs index 2f27c83..f318508 100644 --- a/Netina.Api/Controllers/FileController.cs +++ b/Netina.Api/Controllers/FileController.cs @@ -11,12 +11,12 @@ public class FileController : ICarterModule .MapGroup("api/file"); group.MapGet("", GetFilesAsync) - .WithDisplayName("GetFilesAsync") + .WithDisplayName("Get Files") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageFiles, ApplicationPermission.ViewFiles)) .HasApiVersion(1.0); group.MapPost("", UploadFileAsync) - .WithDisplayName("UploadFileAsync") + .WithDisplayName("Upload File") .HasApiVersion(1.0); group.MapPost("/ckeditor", UploadCkEditorFileAsync) diff --git a/Netina.Api/Controllers/HealthController.cs b/Netina.Api/Controllers/HealthController.cs index 4bbe158..60407c0 100644 --- a/Netina.Api/Controllers/HealthController.cs +++ b/Netina.Api/Controllers/HealthController.cs @@ -9,10 +9,7 @@ public class HealthController : ICarterModule var group = app.NewVersionedApi("Health") .MapGroup("health"); group.MapGet("", GetHealth) - .WithDisplayName("GetHealth") - .HasApiVersion(1.0); - group.MapGet("/error/test", () => { throw new Exception("Error test message");}) - .WithDisplayName("GetHealth") + .WithDisplayName("Get Health") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/MarketerController.cs b/Netina.Api/Controllers/MarketerController.cs index 68b24a4..6e6cc47 100644 --- a/Netina.Api/Controllers/MarketerController.cs +++ b/Netina.Api/Controllers/MarketerController.cs @@ -11,20 +11,20 @@ public class MarketerController : ICarterModule .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()); group.MapGet("", GetMarketersAsync) - .WithDisplayName("GetAllMarketers") + .WithDisplayName("Get Marketers") .RequireAuthorization(builder=>builder.RequireClaim(CustomClaimType.Permission,ApplicationPermission.ManageUsers , ApplicationPermission.ViewUsers)) .HasApiVersion(1.0); group.MapGet("profile", GetMarketerProfileAsync) - .WithDisplayName("GetAllMarketers") + .WithDisplayName("Get Marketer Profile") .HasApiVersion(1.0); group.MapPost("signup", SignUpMarketerAsync) - .WithDisplayName("SignUpMarketer") + .WithDisplayName("SignUp Marketer") .HasApiVersion(1.0); group.MapGet("signup/contract", GetSignUpMarketerContractAsync) - .WithDisplayName("SignUpMarketerContract") + .WithDisplayName("Get Marketer Contract") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/NewsletterMemberController.cs b/Netina.Api/Controllers/NewsletterMemberController.cs index 3c422df..5c223c7 100644 --- a/Netina.Api/Controllers/NewsletterMemberController.cs +++ b/Netina.Api/Controllers/NewsletterMemberController.cs @@ -7,7 +7,7 @@ public class NewsletterMemberController : ICarterModule var group = app.NewVersionedApi("Newsletter Members").MapGroup("api/newsletter/member"); group.MapGet("", GetAllMembersAsync) - .WithDisplayName("Get All Members") + .WithDisplayName("Get Members") .HasApiVersion(1.0) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewNewsletterMembers)); diff --git a/Netina.Api/Controllers/OrderBagController.cs b/Netina.Api/Controllers/OrderBagController.cs index aa6d169..b0750a5 100644 --- a/Netina.Api/Controllers/OrderBagController.cs +++ b/Netina.Api/Controllers/OrderBagController.cs @@ -11,38 +11,38 @@ public class OrderBagController : ICarterModule .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.CreateOrder)); group.MapGet("", GetUserCurrentOrderBagAsync) - .WithDisplayName("GetUserCurrentOrderBag") + .WithDisplayName("Get User Current OrderBag") .HasApiVersion(1.0); group.MapPost("check", CheckOrderBagAsync) - .WithDisplayName("CheckOrderBag") + .WithDisplayName("Check OrderBag") .AllowAnonymous() .HasApiVersion(1.0); group.MapPost("add", AddProductToBagAsync) - .WithDisplayName("AddProductToBag") + .WithDisplayName("Add Product To OrderBag") .HasApiVersion(1.0); group.MapDelete("remove", RemoveFromOrderBagAsync) - .WithDisplayName("RemoveFromOrderBag") + .WithDisplayName("Remove From OrderBag") .HasApiVersion(1.0); group.MapPost("submit", SubmitOrderBagAsync) - .WithDisplayName("SubmitOrderBag") + .WithDisplayName("Submit OrderBag") .HasApiVersion(1.0); group.MapPost("discount/{orderId}", DiscountActionOrderBagAsync) - .WithDisplayName("DiscountActionOrderBag") + .WithDisplayName("Add Discount To OrderBag") .HasApiVersion(1.0); group.MapPost("shipping/{orderId}", AddShippingToOrderBagAsync) - .WithDisplayName("AddShippingToOrderBag") + .WithDisplayName("Add Shipping To OrderBag") .HasApiVersion(1.0); group.MapPost("payment/{orderId}", SubmitOrderPaymentAsync) - .WithDisplayName("SubmitOrderPayment") + .WithDisplayName("Submit Order Payment") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/OrderController.cs b/Netina.Api/Controllers/OrderController.cs index 9044a42..0816fd5 100644 --- a/Netina.Api/Controllers/OrderController.cs +++ b/Netina.Api/Controllers/OrderController.cs @@ -10,32 +10,32 @@ public class OrderController : ICarterModule .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllOrders") + .WithDisplayName("Get Orders") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewAllOrders , ApplicationPermission.ManageOrders)) .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetOneOrder") + .WithDisplayName("Get Order") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewAllOrders, ApplicationPermission.ManageOrders)) .HasApiVersion(1.0); group.MapPost("{id}/confirm", ConfirmOrderStepAsync) - .WithDisplayName("ConfirmOrderStep") + .WithDisplayName("Confirm OrderStep") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageOrders)) .HasApiVersion(1.0); group.MapPost("{id}/cancel", CancelOrderStepAsync) - .WithDisplayName("ConfirmOrderStep") + .WithDisplayName("Cancel Order") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageOrders)) .HasApiVersion(1.0); group.MapDelete("{id}", DeleteAsync) - .WithDisplayName("DeleteOneOrder") + .WithDisplayName("Delete Order") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageOrders)) .HasApiVersion(1.0); group.MapGet("{id}/invoice", GetOrderInvoiceAsync) - .WithDisplayName("GetOrderInvoice") + .WithDisplayName("Get Order Invoice") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageOrders)) .AllowAnonymous() .HasApiVersion(1.0); diff --git a/Netina.Api/Controllers/PageController.cs b/Netina.Api/Controllers/PageController.cs index 42befbe..2eef4cf 100644 --- a/Netina.Api/Controllers/PageController.cs +++ b/Netina.Api/Controllers/PageController.cs @@ -12,6 +12,13 @@ public class PageController : ICarterModule .HasApiVersion(1.0) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewPages, ApplicationPermission.ManagePages)); + group.MapGet("redirect/check", CheckRedirectedOldLinkAsync) + .WithDisplayName("Check Redirect OldLink") + .HasApiVersion(1.0); + + group.MapGet("deleted/check", CheckDeletedLinkAsync) + .WithDisplayName("Check Deleted Link") + .HasApiVersion(1.0); group.MapGet("{id}", GetPageByIdAsync) .WithDisplayName("Get Page") @@ -31,7 +38,6 @@ public class PageController : ICarterModule .HasApiVersion(1.0) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManagePages)); - group.MapDelete("{id}", DeletePageByIdAsync) .WithDisplayName("Delete Page") .HasApiVersion(1.0) @@ -39,6 +45,12 @@ public class PageController : ICarterModule } + private async Task CheckDeletedLinkAsync([FromQuery] string link, [FromServices] IPageService pageService, CancellationToken cancellationToken) + => TypedResults.Ok(await pageService.CheckDeletedAsync(link, cancellationToken)); + + private async Task CheckRedirectedOldLinkAsync([FromQuery] string oldUrl, [FromServices] IPageService pageService, CancellationToken cancellationToken) + => TypedResults.Content(await pageService.CheckRedirectAsync(oldUrl, cancellationToken)); + private async Task DeletePageByIdAsync([FromRoute]Guid id,[FromServices]IPageService pageService,CancellationToken cancellationToken) => TypedResults.Ok(await pageService.DeletePageAsync(id, cancellationToken)); diff --git a/Netina.Api/Controllers/PaymentController.cs b/Netina.Api/Controllers/PaymentController.cs index 9275402..13bd2d9 100644 --- a/Netina.Api/Controllers/PaymentController.cs +++ b/Netina.Api/Controllers/PaymentController.cs @@ -12,7 +12,7 @@ public class PaymentController : ICarterModule .MapGroup($"api/accounting/pay"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetPayments") + .WithDisplayName("Get Payments") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewPayments)) .HasApiVersion(1.0); @@ -22,6 +22,7 @@ public class PaymentController : ICarterModule // .HasApiVersion(1.0); group.MapGet("verify", VerifyPaymentAsync) + .WithDisplayName("Verify Payment") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/ProductCategoryController.cs b/Netina.Api/Controllers/ProductCategoryController.cs index 21e22eb..aacd63f 100644 --- a/Netina.Api/Controllers/ProductCategoryController.cs +++ b/Netina.Api/Controllers/ProductCategoryController.cs @@ -9,22 +9,25 @@ public class ProductCategoryController : ICarterModule .MapGroup($"api/product/category"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllCategories") + .WithDisplayName("Get ProductCategories") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetCategory") + .WithDisplayName("Get ProductCategory") .HasApiVersion(1.0); group.MapPost("", Post) + .WithDisplayName("Create ProductCategory") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission,ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapPut("", Put) + .WithDisplayName("Update ProductCategory") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) + .WithDisplayName("Delete ProductCategory") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/ProductController.cs b/Netina.Api/Controllers/ProductController.cs index 45b2319..4b85f29 100644 --- a/Netina.Api/Controllers/ProductController.cs +++ b/Netina.Api/Controllers/ProductController.cs @@ -11,30 +11,35 @@ public class ProductController : ICarterModule .MapGroup($"api/product"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllProducts") + .WithDisplayName("Get Products") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetProducts") + .WithDisplayName("Get Product") .HasApiVersion(1.0); group.MapPost("", Post) + .WithDisplayName("Create Product") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapPut("", Put) + .WithDisplayName("Update Product") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapPut("{productId}/displayed", ChangeDisplayedAsync) + .WithDisplayName("Change Product Display") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapPut("{productId}/cost", ChangeCostAsync) + .WithDisplayName("Change Product Cost") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) + .WithDisplayName("Delete Product") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageProducts)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/ProductReviewController.cs b/Netina.Api/Controllers/ProductReviewController.cs index 9c2b7ee..7972d29 100644 --- a/Netina.Api/Controllers/ProductReviewController.cs +++ b/Netina.Api/Controllers/ProductReviewController.cs @@ -8,27 +8,27 @@ public class ProductReviewController : ICarterModule .MapGroup("product/review"); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetOneAsync") + .WithDisplayName("Get ProductReview") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewAllReviews,ApplicationPermission.ManageReview)) .HasApiVersion(1.0); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllAsync") + .WithDisplayName("Get ProductReview") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewAllReviews, ApplicationPermission.ManageReview)) .HasApiVersion(1.0); group.MapPost("", PostAsync) - .WithDisplayName("PostReview") + .WithDisplayName("Create ProductReview") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageReview, ApplicationPermission.AddReview)) .HasApiVersion(1.0); group.MapPut("confirm/{id}", ConfirmAsync) - .WithDisplayName("ConfirmAsync") + .WithDisplayName("Confirm ProductReview") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ConfirmReview, ApplicationPermission.ManageReview)) .HasApiVersion(1.0); group.MapDelete("{id}", DeleteAsync) - .WithDisplayName("DeleteAsync") + .WithDisplayName("Delete ProductReview") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageReview)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/RoleController.cs b/Netina.Api/Controllers/RoleController.cs index 8c99bed..64d6298 100644 --- a/Netina.Api/Controllers/RoleController.cs +++ b/Netina.Api/Controllers/RoleController.cs @@ -11,29 +11,32 @@ public class RoleController : ICarterModule .MapGroup($"api/user/role"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllRoles") + .WithDisplayName("Get Roles") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewRoles, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); group.MapGet("permission", GetAllPermissions) - .WithDisplayName("GetAllPermissions") + .WithDisplayName("Get Permissions") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewRoles, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetRole") + .WithDisplayName("Get Role") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewRoles, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); group.MapPost("", Post) + .WithDisplayName("Create Role") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); group.MapPut("", Put) + .WithDisplayName("Update Role") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) + .WithDisplayName("Delete Role") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageRoles)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/ScraperController.cs b/Netina.Api/Controllers/ScraperController.cs index e0a1c44..50b1212 100644 --- a/Netina.Api/Controllers/ScraperController.cs +++ b/Netina.Api/Controllers/ScraperController.cs @@ -9,11 +9,11 @@ public class ScraperController : ICarterModule .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission,ApplicationPermission.ManageScraper)); group.MapGet("digi", GetDigiProductsAsync) - .WithDisplayName("GetDigiProducts") + .WithDisplayName("Get DigiProducts") .HasApiVersion(1.0); group.MapPost("digi/{productId}", AddProductToShopAsync) - .WithDisplayName("AddProductToShop") + .WithDisplayName("Add DigiProduct To Shop") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/SearchController.cs b/Netina.Api/Controllers/SearchController.cs index adf1244..99b2926 100644 --- a/Netina.Api/Controllers/SearchController.cs +++ b/Netina.Api/Controllers/SearchController.cs @@ -10,19 +10,19 @@ public class SearchController : ICarterModule group.MapGet("/thumb", SearchThumbAsync) - .WithDisplayName("Thumb Search Async") + .WithDisplayName("Thumb Search") .HasApiVersion(1.0); group.MapGet("zarehbin", ZarehbinAsync) - .WithDisplayName("Search Async") + .WithDisplayName("Get Zarehbin Product") .HasApiVersion(1.0); group.MapGet("torob", TorobAsync) - .WithDisplayName("Get Torob Product Async") + .WithDisplayName("Get Torob Product") .HasApiVersion(1.0); group.MapGet("emalls", EmallsAsync) - .WithDisplayName("Get Emalls Product Async") + .WithDisplayName("Get Emalls Product") .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/SettingController.cs b/Netina.Api/Controllers/SettingController.cs index 553d684..f3789e4 100644 --- a/Netina.Api/Controllers/SettingController.cs +++ b/Netina.Api/Controllers/SettingController.cs @@ -10,12 +10,12 @@ public class SettingController : ICarterModule .MapGroup("api/setting"); group.MapGet("{settingName}", GetSettingAsync) - .WithDisplayName("GetSetting") + .WithDisplayName("Get Setting") .RequireAuthorization(builder=>builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewSettings,ApplicationPermission.ManageSettings)) .HasApiVersion(1.0); group.MapPost("{settingName}", PostSettingAsync) - .WithDisplayName("PostSettingAsync") + .WithDisplayName("Create Setting") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageSettings)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/ShippingController.cs b/Netina.Api/Controllers/ShippingController.cs index fba8566..3f490f5 100644 --- a/Netina.Api/Controllers/ShippingController.cs +++ b/Netina.Api/Controllers/ShippingController.cs @@ -9,23 +9,26 @@ public class ShippingController : ICarterModule .MapGroup($"api/warehouse/shipping"); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllShipping") + .WithDisplayName("Get Shipping") .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetShipping") + .WithDisplayName("Get Shipping") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewShipping, ApplicationPermission.ManageShipping)) .HasApiVersion(1.0); group.MapPost("", Post) + .WithDisplayName("Create Shipping") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageShipping)) .HasApiVersion(1.0); group.MapPut("", Put) + .WithDisplayName("Update Shipping") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageShipping)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) + .WithDisplayName("Delete Shipping") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageShipping)) .HasApiVersion(1.0); } diff --git a/Netina.Api/Controllers/UserAddressController.cs b/Netina.Api/Controllers/UserAddressController.cs index 1a57666..b22f728 100644 --- a/Netina.Api/Controllers/UserAddressController.cs +++ b/Netina.Api/Controllers/UserAddressController.cs @@ -13,7 +13,7 @@ public class UserAddressController : ICarterModule .HasApiVersion(1.0); group.MapPost("", PostAddressesAsync) - .WithDisplayName("Post Addresses") + .WithDisplayName("Create Addresses") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()) .HasApiVersion(1.0); diff --git a/Netina.Api/Controllers/UserController.cs b/Netina.Api/Controllers/UserController.cs index 5c1d95b..7227fe8 100644 --- a/Netina.Api/Controllers/UserController.cs +++ b/Netina.Api/Controllers/UserController.cs @@ -12,44 +12,47 @@ public class UserController : ICarterModule .MapGroup($"api/user"); group.MapGet("info", GetUserInfoAsync) - .WithDisplayName("GetUserInfo") + .WithDisplayName("Get UserInfo") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()) .HasApiVersion(1.0); group.MapGet("", GetAllAsync) - .WithDisplayName("GetAllUsers") + .WithDisplayName("Get Users") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewUsers, ApplicationPermission.ManageUsers)) .HasApiVersion(1.0); group.MapGet("{id}", GetAsync) - .WithDisplayName("GetUser") + .WithDisplayName("Get User") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewUsers, ApplicationPermission.ManageUsers)) .HasApiVersion(1.0); group.MapGet("/order", GetUserOrdersAsync) - .WithDisplayName("GetUserOrders") + .WithDisplayName("Get UserOrders By JWT") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewMineOrders)) .HasApiVersion(1.0); group.MapGet("{id}/order", GetUserOrdersByIdAsync) - .WithDisplayName("GetUserOrders") + .WithDisplayName("Get UserOrders") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewAllOrders)) .HasApiVersion(1.0); group.MapGet("/changelog", GetChangeLogAsync) - .WithDisplayName("GetChangeLog") + .WithDisplayName("Get ChangeLog") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageDashboard)) .HasApiVersion(1.0); group.MapPost("", Post) + .WithDisplayName("Create User") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageUsers)) .HasApiVersion(1.0); group.MapPut("", Put) + .WithDisplayName("Update User") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageUsers)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) + .WithDisplayName("Delete User") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageUsers)) .HasApiVersion(1.0); } diff --git a/Netina.Common/Extensions/StringExtensions.cs b/Netina.Common/Extensions/StringExtensions.cs index a8f7577..7f53870 100644 --- a/Netina.Common/Extensions/StringExtensions.cs +++ b/Netina.Common/Extensions/StringExtensions.cs @@ -1,4 +1,5 @@ -using System.Web; +using System.Net; +using System.Web; namespace Netina.Common.Extensions { @@ -9,7 +10,12 @@ namespace Netina.Common.Extensions public static string GetSlug(string title) { - return HttpUtility.UrlEncode(title.Replace(' ', '-')); + var splits = title.Split("/"); + string outPut = string.Empty; + foreach (var split in splits) + outPut = outPut.IsNullOrEmpty() ? split : string.Concat(outPut, "/", WebUtility.UrlEncode( split.Replace(' ', '-'))); + + return outPut; } public static string ToPriceWhitPriceType(this long price, string priceType) { diff --git a/Netina.Core/BaseServices/Abstracts/IPageService.cs b/Netina.Core/BaseServices/Abstracts/IPageService.cs index d960ace..0937123 100644 --- a/Netina.Core/BaseServices/Abstracts/IPageService.cs +++ b/Netina.Core/BaseServices/Abstracts/IPageService.cs @@ -6,4 +6,7 @@ public interface IPageService : IScopedDependency Task> GetPagesAsync(CancellationToken cancellationToken = default); Task CreatePageAsync(PageActionRequestDto entity, CancellationToken cancellationToken = default); Task DeletePageAsync(Guid id, CancellationToken cancellationToken = default); + + Task CheckRedirectAsync(string oldUrl, CancellationToken cancellationToken); + Task CheckDeletedAsync(string url, CancellationToken cancellationToken); } \ No newline at end of file diff --git a/Netina.Core/BaseServices/PageService.cs b/Netina.Core/BaseServices/PageService.cs index 7f2625d..85b9c88 100644 --- a/Netina.Core/BaseServices/PageService.cs +++ b/Netina.Core/BaseServices/PageService.cs @@ -1,10 +1,12 @@ -using Netina.Domain.MartenEntities.Pages; +using Netina.Core.BaseServices.Abstracts; +using Netina.Domain.MartenEntities.Pages; namespace Netina.Core.BaseServices; public class PageService( IMartenRepositoryWrapper martenRepositoryWrapperWrapper, - ICurrentUserService currentUserService) + ICurrentUserService currentUserService, + ISettingService settingService) : IPageService { public async Task GetPageAsync(Guid? id = null, string? pageName = null, string? pageSlug = null, string? type = null, CancellationToken cancellationToken = default) @@ -93,4 +95,30 @@ public class PageService( await martenRepositoryWrapperWrapper.SetRepository().RemoveEntityAsync(page, cancellationToken); return true; } + + public async Task CheckRedirectAsync(string oldUrl, CancellationToken cancellationToken) + { + var setting = await settingService.GetSettingAsync(nameof(PageSetting), cancellationToken); + var oldEncode = StringExtensions.GetSlug(oldUrl); + if (setting is PageSetting pageSetting) + { + var newLink = pageSetting.RedirectItems.FirstOrDefault(f => f.OldUrl.ToLower().Trim() == oldEncode.ToLower().Trim()); + if (newLink != null) + return newLink.NewUrl; + else + throw new BaseApiException(ApiResultStatusCode.NotFound, "Url not found"); + } + throw new BaseApiException(ApiResultStatusCode.NotFound, "PageSetting not found"); + } + + public async Task CheckDeletedAsync(string url, CancellationToken cancellationToken) + { + var setting = await settingService.GetSettingAsync(nameof(PageSetting), cancellationToken); + if (setting is PageSetting pageSetting) + { + var newLink = pageSetting.DeletedPages.FirstOrDefault(f => f.Url.ToLower().Trim() == url.ToLower().Trim()); + return newLink != null; + } + throw new BaseApiException(ApiResultStatusCode.NotFound, "PageSetting not found"); + } } \ No newline at end of file diff --git a/Netina.Core/QuartzServices/SiteMapScheduledJob.cs b/Netina.Core/QuartzServices/SiteMapScheduledJob.cs index 924c5a0..3f343ca 100644 --- a/Netina.Core/QuartzServices/SiteMapScheduledJob.cs +++ b/Netina.Core/QuartzServices/SiteMapScheduledJob.cs @@ -3,8 +3,7 @@ using Quartz; namespace Netina.Core.QuartzServices; -public class SiteMapScheduledJob(ILogger logger, ISiteMapService siteMapService) - : IJob +public class SiteMapScheduledJob(ILogger logger, ISiteMapService siteMapService) : IJob { public async Task Execute(IJobExecutionContext context) { diff --git a/Netina.Domain/MartenEntities/Settings/PageSetting.cs b/Netina.Domain/MartenEntities/Settings/PageSetting.cs new file mode 100644 index 0000000..5761f40 --- /dev/null +++ b/Netina.Domain/MartenEntities/Settings/PageSetting.cs @@ -0,0 +1,17 @@ +namespace Netina.Domain.MartenEntities.Settings; + +public class PageSetting +{ + public List RedirectItems { get; set; } = new(); + public List DeletedPages { get; set; } = new(); +} +public class DeletedPageItem +{ + public string Url { get; set; } = string.Empty; +} + +public class RedirectItem +{ + public string OldUrl { get; set; } = string.Empty; + public string NewUrl { get; set; } = string.Empty; +} \ No newline at end of file