From ec78744d19013d8426eeb38f2f4b558487999714 Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Sat, 21 Jun 2025 20:53:49 +0300 Subject: [PATCH 1/5] Cleanup folder structure again --- .../Categories}/CreateCategoryHandler.cs | 7 +++---- .../Categories}/DeleteCategoryHandler.cs | 2 +- .../Categories}/GetCategoriesHandler.cs | 7 +++---- .../Categories}/UpdateCategoryHandler.cs | 5 ++--- .../CreateProductVariantHandler.cs | 6 +++--- .../DeleteProductVariantHandler.cs | 2 +- .../GetProductVariantsHandler.cs | 6 +++--- .../UpdateProductVariantHandler.cs | 4 ++-- .../Products}/CreateProductHandler.cs | 7 ++++--- .../Products}/DeleteProductHandler.cs | 2 +- .../Products}/GetProductsHandler.cs | 5 ++--- .../Products}/UpdateProductCommand.cs | 5 ++--- .../Users}/DeleteUserRoleHandler.cs | 4 ++-- .../Users}/GetAllRolesHandler.cs | 4 ++-- .../Users}/GetUserRolesHandler.cs | 4 ++-- .../Users}/SetUserFullNameHandler.cs | 6 +++--- .../Users}/SetUserPhoneHandler.cs | 6 +++--- .../Users}/SetUserRoleHandler.cs | 6 +++--- .../Users}/SyncUserHandler.cs | 4 ++-- .../{Categories => }/Dtos/CategoryDto.cs | 2 +- .../{Products => }/Dtos/PagedResultDto.cs | 2 +- .../{Products => }/Dtos/ProductDto.cs | 4 +--- .../Dtos/ProductVariantDto.cs | 4 +--- .../{Users => }/Dtos/RoleDto.cs | 2 +- .../{Users => }/Dtos/UserDto.cs | 5 ++--- .../{Users => }/Dtos/UserRoleDto.cs | 2 +- src/Imprink.Application/IUnitOfWork.cs | 3 --- .../Mappings/ProductMappingProfile.cs | 12 +++++------- .../{Users => }/Mappings/UserMappingProfile.cs | 6 +++--- .../{Users => }/Services/ICurrentUserService.cs | 2 +- .../CreateCategoryCommandValidator.cs | 4 ++-- .../DeleteCategoryCommandValidator.cs | 4 ++-- .../UpdateCategoryCommandValidator.cs | 4 ++-- .../Orders}/OrderFilterParametersValidator.cs | 2 +- .../CreateProducVariantCommandValidator.cs | 4 ++-- .../DeleteProductVariantCommandValidator.cs | 4 ++-- .../GetProductVariantsQueryValidator.cs | 4 ++-- .../UpdateProductVariantCommandValidator.cs | 4 ++-- .../Products}/CreateProductCommandValidator.cs | 4 ++-- .../Products}/DeleteProductCommandValidator.cs | 4 ++-- .../Products}/GetProductsQueryValidator.cs | 4 ++-- .../ProductFilterParametersValidator.cs | 2 +- .../Products}/UpdateProductCommandValidator.cs | 4 ++-- .../Users}/Auth0UserValidator.cs | 2 +- .../Users}/SetUserFullNameCommandValidator.cs | 4 ++-- .../Users}/SetUserPhoneCommandValidator.cs | 4 ++-- .../Entities/{Users => }/Address.cs | 2 +- .../Entities/{Products => }/Category.cs | 2 +- .../Entities/{Orders => }/Order.cs | 4 +--- .../Entities/{Orders => }/OrderAddress.cs | 2 +- .../Entities/{Orders => }/OrderItem.cs | 4 +--- .../Entities/{Orders => }/OrderStatus.cs | 2 +- .../Entities/{Products => }/Product.cs | 4 +--- .../Entities/{Products => }/ProductVariant.cs | 4 +--- src/Imprink.Domain/Entities/{Users => }/Role.cs | 2 +- .../Entities/{Orders => }/ShippingStatus.cs | 2 +- src/Imprink.Domain/Entities/{Users => }/User.cs | 4 +--- .../Entities/{Users => }/UserRole.cs | 2 +- .../Models/BaseFilterParameters.cs | 6 ++++++ .../{Products => }/ICategoryRepository.cs | 4 ++-- .../{Orders => }/IOrderItemRepository.cs | 4 ++-- .../{Orders => }/IOrderRepository.cs | 4 ++-- .../{Products => }/IProductRepository.cs | 4 ++-- .../{Products => }/IProductVariantRepository.cs | 4 ++-- .../Repositories/{Users => }/IRoleRepository.cs | 4 ++-- .../Repositories/{Users => }/IUserRepository.cs | 4 ++-- .../{Users => }/IUserRoleRepository.cs | 4 ++-- .../Configuration/AddressConfiguration.cs | 4 ++-- .../Configuration/CategoryConfiguration.cs | 4 ++-- .../Configuration/OrderAddressConfiguration.cs | 4 ++-- .../Configuration/OrderConfiguration.cs | 4 ++-- .../Configuration/OrderItemConfiguration.cs | 4 ++-- .../Configuration/OrderStatusConfiguration.cs | 4 ++-- .../Configuration/ProductConfiguration.cs | 4 ++-- .../Configuration/ProductVariantConfiguration.cs | 4 ++-- .../Configuration/RoleConfiguration.cs | 4 ++-- .../Configuration/ShippingStatusConfiguration.cs | 4 ++-- .../Configuration/UserConfiguration.cs | 4 ++-- .../Configuration/UserRoleConfiguration.cs | 4 ++-- .../Database/ApplicationDbContext.cs | 10 ++-------- .../Imprink.Infrastructure.csproj | 1 - .../Repositories/CategoryRepository.cs | 6 +++--- .../Repositories/OrderItemRepository.cs | 6 +++--- .../{Orders => }/Repositories/OrderRepository.cs | 6 +++--- .../Repositories/ProductRepository.cs | 6 +++--- .../Repositories/ProductVariantRepository.cs | 6 +++--- .../{Users => }/Repositories/RoleRepository.cs | 6 +++--- .../{Users => }/Repositories/UserRepository.cs | 6 +++--- .../Repositories/UserRoleRepository.cs | 6 +++--- .../Services/CurrentUserService.cs | 2 +- src/Imprink.Infrastructure/UnitOfWork.cs | 3 --- .../{Products => }/CategoriesController.cs | 5 ++--- .../{Products => }/ProductVariantsController.cs | 5 ++--- .../{Products => }/ProductsController.cs | 9 ++++----- .../{Products => }/SeedingController.cs | 0 .../Controllers/{Users => }/UsersController.cs | 6 +++--- src/Imprink.WebApi/Imprink.WebApi.csproj | 4 ++++ src/Imprink.WebApi/Program.cs | 2 -- src/Imprink.WebApi/Seeder.cs | 2 +- src/Imprink.WebApi/Startup.cs | 16 ++++------------ 100 files changed, 195 insertions(+), 232 deletions(-) rename src/Imprink.Application/{Categories/Commands => Commands/Categories}/CreateCategoryHandler.cs (91%) rename src/Imprink.Application/{Categories/Commands => Commands/Categories}/DeleteCategoryHandler.cs (95%) rename src/Imprink.Application/{Categories/Commands => Commands/Categories}/GetCategoriesHandler.cs (88%) rename src/Imprink.Application/{Categories/Commands => Commands/Categories}/UpdateCategoryHandler.cs (94%) rename src/Imprink.Application/{ProductVariants/Commands => Commands/ProductVariants}/CreateProductVariantHandler.cs (90%) rename src/Imprink.Application/{ProductVariants/Commands => Commands/ProductVariants}/DeleteProductVariantHandler.cs (95%) rename src/Imprink.Application/{ProductVariants/Commands => Commands/ProductVariants}/GetProductVariantsHandler.cs (91%) rename src/Imprink.Application/{ProductVariants/Commands => Commands/ProductVariants}/UpdateProductVariantHandler.cs (94%) rename src/Imprink.Application/{Products/Commands => Commands/Products}/CreateProductHandler.cs (89%) rename src/Imprink.Application/{Products/Commands => Commands/Products}/DeleteProductHandler.cs (95%) rename src/Imprink.Application/{Products/Commands => Commands/Products}/GetProductsHandler.cs (93%) rename src/Imprink.Application/{Products/Commands => Commands/Products}/UpdateProductCommand.cs (95%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/DeleteUserRoleHandler.cs (94%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/GetAllRolesHandler.cs (85%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/GetUserRolesHandler.cs (90%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/SetUserFullNameHandler.cs (91%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/SetUserPhoneHandler.cs (90%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/SetUserRoleHandler.cs (90%) rename src/Imprink.Application/{Users/Commands => Commands/Users}/SyncUserHandler.cs (92%) rename src/Imprink.Application/{Categories => }/Dtos/CategoryDto.cs (89%) rename src/Imprink.Application/{Products => }/Dtos/PagedResultDto.cs (89%) rename src/Imprink.Application/{Products => }/Dtos/ProductDto.cs (84%) rename src/Imprink.Application/{ProductVariants => }/Dtos/ProductVariantDto.cs (85%) rename src/Imprink.Application/{Users => }/Dtos/RoleDto.cs (74%) rename src/Imprink.Application/{Users => }/Dtos/UserDto.cs (88%) rename src/Imprink.Application/{Users => }/Dtos/UserRoleDto.cs (74%) rename src/Imprink.Application/{Products => }/Mappings/ProductMappingProfile.cs (84%) rename src/Imprink.Application/{Users => }/Mappings/UserMappingProfile.cs (93%) rename src/Imprink.Application/{Users => }/Services/ICurrentUserService.cs (61%) rename src/Imprink.Application/{Categories/Validation => Validation/Categories}/CreateCategoryCommandValidator.cs (91%) rename src/Imprink.Application/{Categories/Validation => Validation/Categories}/DeleteCategoryCommandValidator.cs (76%) rename src/Imprink.Application/{Categories/Validation => Validation/Categories}/UpdateCategoryCommandValidator.cs (93%) rename src/Imprink.Application/{Orders/Validation => Validation/Orders}/OrderFilterParametersValidator.cs (98%) rename src/Imprink.Application/{ProductVariants/Validation => Validation/ProductVariants}/CreateProducVariantCommandValidator.cs (92%) rename src/Imprink.Application/{ProductVariants/Validation => Validation/ProductVariants}/DeleteProductVariantCommandValidator.cs (75%) rename src/Imprink.Application/{ProductVariants/Validation => Validation/ProductVariants}/GetProductVariantsQueryValidator.cs (76%) rename src/Imprink.Application/{ProductVariants/Validation => Validation/ProductVariants}/UpdateProductVariantCommandValidator.cs (93%) rename src/Imprink.Application/{Products/Validation => Validation/Products}/CreateProductCommandValidator.cs (92%) rename src/Imprink.Application/{Products/Validation => Validation/Products}/DeleteProductCommandValidator.cs (77%) rename src/Imprink.Application/{Products/Validation => Validation/Products}/GetProductsQueryValidator.cs (75%) rename src/Imprink.Application/{Products/Validation => Validation/Products}/ProductFilterParametersValidator.cs (97%) rename src/Imprink.Application/{Products/Validation => Validation/Products}/UpdateProductCommandValidator.cs (92%) rename src/Imprink.Application/{Users/Validation => Validation/Users}/Auth0UserValidator.cs (90%) rename src/Imprink.Application/{Users/Validation => Validation/Users}/SetUserFullNameCommandValidator.cs (85%) rename src/Imprink.Application/{Users/Validation => Validation/Users}/SetUserPhoneCommandValidator.cs (80%) rename src/Imprink.Domain/Entities/{Users => }/Address.cs (92%) rename src/Imprink.Domain/Entities/{Products => }/Category.cs (92%) rename src/Imprink.Domain/Entities/{Orders => }/Order.cs (89%) rename src/Imprink.Domain/Entities/{Orders => }/OrderAddress.cs (90%) rename src/Imprink.Domain/Entities/{Orders => }/OrderItem.cs (87%) rename src/Imprink.Domain/Entities/{Orders => }/OrderStatus.cs (82%) rename src/Imprink.Domain/Entities/{Products => }/Product.cs (88%) rename src/Imprink.Domain/Entities/{Products => }/ProductVariant.cs (86%) rename src/Imprink.Domain/Entities/{Users => }/Role.cs (83%) rename src/Imprink.Domain/Entities/{Orders => }/ShippingStatus.cs (82%) rename src/Imprink.Domain/Entities/{Users => }/User.cs (91%) rename src/Imprink.Domain/Entities/{Users => }/UserRole.cs (84%) create mode 100644 src/Imprink.Domain/Models/BaseFilterParameters.cs rename src/Imprink.Domain/Repositories/{Products => }/ICategoryRepository.cs (93%) rename src/Imprink.Domain/Repositories/{Orders => }/IOrderItemRepository.cs (96%) rename src/Imprink.Domain/Repositories/{Orders => }/IOrderRepository.cs (96%) rename src/Imprink.Domain/Repositories/{Products => }/IProductRepository.cs (92%) rename src/Imprink.Domain/Repositories/{Products => }/IProductVariantRepository.cs (93%) rename src/Imprink.Domain/Repositories/{Users => }/IRoleRepository.cs (83%) rename src/Imprink.Domain/Repositories/{Users => }/IUserRepository.cs (93%) rename src/Imprink.Domain/Repositories/{Users => }/IUserRoleRepository.cs (87%) rename src/Imprink.Infrastructure/{Users => }/Configuration/AddressConfiguration.cs (94%) rename src/Imprink.Infrastructure/{Categories => }/Configuration/CategoryConfiguration.cs (97%) rename src/Imprink.Infrastructure/{Orders => }/Configuration/OrderAddressConfiguration.cs (91%) rename src/Imprink.Infrastructure/{Orders => }/Configuration/OrderConfiguration.cs (96%) rename src/Imprink.Infrastructure/{Orders => }/Configuration/OrderItemConfiguration.cs (96%) rename src/Imprink.Infrastructure/{Orders => }/Configuration/OrderStatusConfiguration.cs (90%) rename src/Imprink.Infrastructure/{Products => }/Configuration/ProductConfiguration.cs (95%) rename src/Imprink.Infrastructure/{ProductVariants => }/Configuration/ProductVariantConfiguration.cs (95%) rename src/Imprink.Infrastructure/{Users => }/Configuration/RoleConfiguration.cs (90%) rename src/Imprink.Infrastructure/{Orders => }/Configuration/ShippingStatusConfiguration.cs (90%) rename src/Imprink.Infrastructure/{Users => }/Configuration/UserConfiguration.cs (94%) rename src/Imprink.Infrastructure/{Users => }/Configuration/UserRoleConfiguration.cs (91%) rename src/Imprink.Infrastructure/{Categories => }/Repositories/CategoryRepository.cs (96%) rename src/Imprink.Infrastructure/{Orders => }/Repositories/OrderItemRepository.cs (98%) rename src/Imprink.Infrastructure/{Orders => }/Repositories/OrderRepository.cs (98%) rename src/Imprink.Infrastructure/{Products => }/Repositories/ProductRepository.cs (97%) rename src/Imprink.Infrastructure/{ProductVariants => }/Repositories/ProductVariantRepository.cs (96%) rename src/Imprink.Infrastructure/{Users => }/Repositories/RoleRepository.cs (89%) rename src/Imprink.Infrastructure/{Users => }/Repositories/UserRepository.cs (96%) rename src/Imprink.Infrastructure/{Users => }/Repositories/UserRoleRepository.cs (92%) rename src/Imprink.WebApi/Controllers/{Products => }/CategoriesController.cs (91%) rename src/Imprink.WebApi/Controllers/{Products => }/ProductVariantsController.cs (91%) rename src/Imprink.WebApi/Controllers/{Products => }/ProductsController.cs (85%) rename src/Imprink.WebApi/Controllers/{Products => }/SeedingController.cs (100%) rename src/Imprink.WebApi/Controllers/{Users => }/UsersController.cs (94%) diff --git a/src/Imprink.Application/Categories/Commands/CreateCategoryHandler.cs b/src/Imprink.Application/Commands/Categories/CreateCategoryHandler.cs similarity index 91% rename from src/Imprink.Application/Categories/Commands/CreateCategoryHandler.cs rename to src/Imprink.Application/Commands/Categories/CreateCategoryHandler.cs index dfc5a1b..0d088ca 100644 --- a/src/Imprink.Application/Categories/Commands/CreateCategoryHandler.cs +++ b/src/Imprink.Application/Commands/Categories/CreateCategoryHandler.cs @@ -1,9 +1,8 @@ -using Imprink.Application.Categories.Dtos; -using Imprink.Application.Products.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using MediatR; -namespace Imprink.Application.Categories.Commands; +namespace Imprink.Application.Commands.Categories; public class CreateCategoryCommand : IRequest { diff --git a/src/Imprink.Application/Categories/Commands/DeleteCategoryHandler.cs b/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs similarity index 95% rename from src/Imprink.Application/Categories/Commands/DeleteCategoryHandler.cs rename to src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs index 7220027..7101db7 100644 --- a/src/Imprink.Application/Categories/Commands/DeleteCategoryHandler.cs +++ b/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Imprink.Application.Categories.Commands; +namespace Imprink.Application.Commands.Categories; public class DeleteCategoryCommand : IRequest { diff --git a/src/Imprink.Application/Categories/Commands/GetCategoriesHandler.cs b/src/Imprink.Application/Commands/Categories/GetCategoriesHandler.cs similarity index 88% rename from src/Imprink.Application/Categories/Commands/GetCategoriesHandler.cs rename to src/Imprink.Application/Commands/Categories/GetCategoriesHandler.cs index 5c4b3e3..b606dbe 100644 --- a/src/Imprink.Application/Categories/Commands/GetCategoriesHandler.cs +++ b/src/Imprink.Application/Commands/Categories/GetCategoriesHandler.cs @@ -1,9 +1,8 @@ -using Imprink.Application.Categories.Dtos; -using Imprink.Application.Products.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using MediatR; -namespace Imprink.Application.Categories.Commands; +namespace Imprink.Application.Commands.Categories; public class GetCategoriesQuery : IRequest> { diff --git a/src/Imprink.Application/Categories/Commands/UpdateCategoryHandler.cs b/src/Imprink.Application/Commands/Categories/UpdateCategoryHandler.cs similarity index 94% rename from src/Imprink.Application/Categories/Commands/UpdateCategoryHandler.cs rename to src/Imprink.Application/Commands/Categories/UpdateCategoryHandler.cs index c236880..f9f5f23 100644 --- a/src/Imprink.Application/Categories/Commands/UpdateCategoryHandler.cs +++ b/src/Imprink.Application/Commands/Categories/UpdateCategoryHandler.cs @@ -1,9 +1,8 @@ -using Imprink.Application.Categories.Dtos; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Products.Dtos; using MediatR; -namespace Imprink.Application.Categories.Commands; +namespace Imprink.Application.Commands.Categories; public class UpdateCategoryCommand : IRequest { diff --git a/src/Imprink.Application/ProductVariants/Commands/CreateProductVariantHandler.cs b/src/Imprink.Application/Commands/ProductVariants/CreateProductVariantHandler.cs similarity index 90% rename from src/Imprink.Application/ProductVariants/Commands/CreateProductVariantHandler.cs rename to src/Imprink.Application/Commands/ProductVariants/CreateProductVariantHandler.cs index fbb3f1a..0ab7aa7 100644 --- a/src/Imprink.Application/ProductVariants/Commands/CreateProductVariantHandler.cs +++ b/src/Imprink.Application/Commands/ProductVariants/CreateProductVariantHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; -using Imprink.Application.ProductVariants.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using MediatR; -namespace Imprink.Application.ProductVariants.Commands; +namespace Imprink.Application.Commands.ProductVariants; public class CreateProductVariantCommand : IRequest { diff --git a/src/Imprink.Application/ProductVariants/Commands/DeleteProductVariantHandler.cs b/src/Imprink.Application/Commands/ProductVariants/DeleteProductVariantHandler.cs similarity index 95% rename from src/Imprink.Application/ProductVariants/Commands/DeleteProductVariantHandler.cs rename to src/Imprink.Application/Commands/ProductVariants/DeleteProductVariantHandler.cs index 3c6609f..8e6a2ea 100644 --- a/src/Imprink.Application/ProductVariants/Commands/DeleteProductVariantHandler.cs +++ b/src/Imprink.Application/Commands/ProductVariants/DeleteProductVariantHandler.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Imprink.Application.ProductVariants.Commands; +namespace Imprink.Application.Commands.ProductVariants; public class DeleteProductVariantCommand : IRequest { diff --git a/src/Imprink.Application/ProductVariants/Commands/GetProductVariantsHandler.cs b/src/Imprink.Application/Commands/ProductVariants/GetProductVariantsHandler.cs similarity index 91% rename from src/Imprink.Application/ProductVariants/Commands/GetProductVariantsHandler.cs rename to src/Imprink.Application/Commands/ProductVariants/GetProductVariantsHandler.cs index 92deb03..5e76ae2 100644 --- a/src/Imprink.Application/ProductVariants/Commands/GetProductVariantsHandler.cs +++ b/src/Imprink.Application/Commands/ProductVariants/GetProductVariantsHandler.cs @@ -1,10 +1,10 @@ using AutoMapper; -using Imprink.Application.ProductVariants.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using MediatR; using Microsoft.Extensions.Logging; -namespace Imprink.Application.ProductVariants.Commands; +namespace Imprink.Application.Commands.ProductVariants; public class GetProductVariantsQuery : IRequest> { diff --git a/src/Imprink.Application/ProductVariants/Commands/UpdateProductVariantHandler.cs b/src/Imprink.Application/Commands/ProductVariants/UpdateProductVariantHandler.cs similarity index 94% rename from src/Imprink.Application/ProductVariants/Commands/UpdateProductVariantHandler.cs rename to src/Imprink.Application/Commands/ProductVariants/UpdateProductVariantHandler.cs index 53eefc2..0c88be3 100644 --- a/src/Imprink.Application/ProductVariants/Commands/UpdateProductVariantHandler.cs +++ b/src/Imprink.Application/Commands/ProductVariants/UpdateProductVariantHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.ProductVariants.Dtos; using MediatR; -namespace Imprink.Application.ProductVariants.Commands; +namespace Imprink.Application.Commands.ProductVariants; public class UpdateProductVariantCommand : IRequest { diff --git a/src/Imprink.Application/Products/Commands/CreateProductHandler.cs b/src/Imprink.Application/Commands/Products/CreateProductHandler.cs similarity index 89% rename from src/Imprink.Application/Products/Commands/CreateProductHandler.cs rename to src/Imprink.Application/Commands/Products/CreateProductHandler.cs index a36e606..af436bb 100644 --- a/src/Imprink.Application/Products/Commands/CreateProductHandler.cs +++ b/src/Imprink.Application/Commands/Products/CreateProductHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; -using Imprink.Application.Products.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using MediatR; -namespace Imprink.Application.Products.Commands; +namespace Imprink.Application.Commands.Products; public class CreateProductCommand : IRequest { @@ -33,6 +33,7 @@ public class CreateProductHandler(IUnitOfWork unitOfWork, IMapper mapper) : IReq createdProduct.Category = (await unitOfWork.CategoryRepository.GetByIdAsync(createdProduct.CategoryId.Value, cancellationToken))!; } + await unitOfWork.SaveAsync(cancellationToken); await unitOfWork.CommitTransactionAsync(cancellationToken); return mapper.Map(createdProduct); diff --git a/src/Imprink.Application/Products/Commands/DeleteProductHandler.cs b/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs similarity index 95% rename from src/Imprink.Application/Products/Commands/DeleteProductHandler.cs rename to src/Imprink.Application/Commands/Products/DeleteProductHandler.cs index 2983496..c4b65ce 100644 --- a/src/Imprink.Application/Products/Commands/DeleteProductHandler.cs +++ b/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Imprink.Application.Products.Commands; +namespace Imprink.Application.Commands.Products; public class DeleteProductCommand : IRequest { diff --git a/src/Imprink.Application/Products/Commands/GetProductsHandler.cs b/src/Imprink.Application/Commands/Products/GetProductsHandler.cs similarity index 93% rename from src/Imprink.Application/Products/Commands/GetProductsHandler.cs rename to src/Imprink.Application/Commands/Products/GetProductsHandler.cs index ea83640..4e65018 100644 --- a/src/Imprink.Application/Products/Commands/GetProductsHandler.cs +++ b/src/Imprink.Application/Commands/Products/GetProductsHandler.cs @@ -1,9 +1,8 @@ -using Imprink.Application.Categories.Dtos; -using Imprink.Application.Products.Dtos; +using Imprink.Application.Dtos; using Imprink.Domain.Models; using MediatR; -namespace Imprink.Application.Products.Commands; +namespace Imprink.Application.Commands.Products; public class GetProductsQuery : IRequest> { diff --git a/src/Imprink.Application/Products/Commands/UpdateProductCommand.cs b/src/Imprink.Application/Commands/Products/UpdateProductCommand.cs similarity index 95% rename from src/Imprink.Application/Products/Commands/UpdateProductCommand.cs rename to src/Imprink.Application/Commands/Products/UpdateProductCommand.cs index f6c3e8c..06f1313 100644 --- a/src/Imprink.Application/Products/Commands/UpdateProductCommand.cs +++ b/src/Imprink.Application/Commands/Products/UpdateProductCommand.cs @@ -1,9 +1,8 @@ -using Imprink.Application.Categories.Dtos; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Products.Dtos; using MediatR; -namespace Imprink.Application.Products.Commands; +namespace Imprink.Application.Commands.Products; public class UpdateProductCommand : IRequest { diff --git a/src/Imprink.Application/Users/Commands/DeleteUserRoleHandler.cs b/src/Imprink.Application/Commands/Users/DeleteUserRoleHandler.cs similarity index 94% rename from src/Imprink.Application/Users/Commands/DeleteUserRoleHandler.cs rename to src/Imprink.Application/Commands/Users/DeleteUserRoleHandler.cs index 6d1888a..2ad6291 100644 --- a/src/Imprink.Application/Users/Commands/DeleteUserRoleHandler.cs +++ b/src/Imprink.Application/Commands/Users/DeleteUserRoleHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Users.Dtos; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record DeleteUserRoleCommand(string Sub, Guid RoleId) : IRequest; diff --git a/src/Imprink.Application/Users/Commands/GetAllRolesHandler.cs b/src/Imprink.Application/Commands/Users/GetAllRolesHandler.cs similarity index 85% rename from src/Imprink.Application/Users/Commands/GetAllRolesHandler.cs rename to src/Imprink.Application/Commands/Users/GetAllRolesHandler.cs index 4d9ab5e..ec1661b 100644 --- a/src/Imprink.Application/Users/Commands/GetAllRolesHandler.cs +++ b/src/Imprink.Application/Commands/Users/GetAllRolesHandler.cs @@ -1,8 +1,8 @@ using AutoMapper; -using Imprink.Application.Users.Dtos; +using Imprink.Application.Dtos; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record GetAllRolesCommand : IRequest>; diff --git a/src/Imprink.Application/Users/Commands/GetUserRolesHandler.cs b/src/Imprink.Application/Commands/Users/GetUserRolesHandler.cs similarity index 90% rename from src/Imprink.Application/Users/Commands/GetUserRolesHandler.cs rename to src/Imprink.Application/Commands/Users/GetUserRolesHandler.cs index 9c39568..ea3f8d8 100644 --- a/src/Imprink.Application/Users/Commands/GetUserRolesHandler.cs +++ b/src/Imprink.Application/Commands/Users/GetUserRolesHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Users.Dtos; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record GetUserRolesCommand(string Sub) : IRequest>; diff --git a/src/Imprink.Application/Users/Commands/SetUserFullNameHandler.cs b/src/Imprink.Application/Commands/Users/SetUserFullNameHandler.cs similarity index 91% rename from src/Imprink.Application/Users/Commands/SetUserFullNameHandler.cs rename to src/Imprink.Application/Commands/Users/SetUserFullNameHandler.cs index d7865d8..11c9597 100644 --- a/src/Imprink.Application/Users/Commands/SetUserFullNameHandler.cs +++ b/src/Imprink.Application/Commands/Users/SetUserFullNameHandler.cs @@ -1,10 +1,10 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Users.Dtos; -using Imprink.Application.Users.Services; +using Imprink.Application.Services; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record SetUserFullNameCommand(string FirstName, string LastName) : IRequest; diff --git a/src/Imprink.Application/Users/Commands/SetUserPhoneHandler.cs b/src/Imprink.Application/Commands/Users/SetUserPhoneHandler.cs similarity index 90% rename from src/Imprink.Application/Users/Commands/SetUserPhoneHandler.cs rename to src/Imprink.Application/Commands/Users/SetUserPhoneHandler.cs index d1e3ca7..ac7bc68 100644 --- a/src/Imprink.Application/Users/Commands/SetUserPhoneHandler.cs +++ b/src/Imprink.Application/Commands/Users/SetUserPhoneHandler.cs @@ -1,10 +1,10 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Users.Dtos; -using Imprink.Application.Users.Services; +using Imprink.Application.Services; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record SetUserPhoneCommand(string PhoneNumber) : IRequest; diff --git a/src/Imprink.Application/Users/Commands/SetUserRoleHandler.cs b/src/Imprink.Application/Commands/Users/SetUserRoleHandler.cs similarity index 90% rename from src/Imprink.Application/Users/Commands/SetUserRoleHandler.cs rename to src/Imprink.Application/Commands/Users/SetUserRoleHandler.cs index bb9d892..7c265f0 100644 --- a/src/Imprink.Application/Users/Commands/SetUserRoleHandler.cs +++ b/src/Imprink.Application/Commands/Users/SetUserRoleHandler.cs @@ -1,10 +1,10 @@ using AutoMapper; +using Imprink.Application.Dtos; using Imprink.Application.Exceptions; -using Imprink.Application.Users.Dtos; -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record SetUserRoleCommand(string Sub, Guid RoleId) : IRequest; diff --git a/src/Imprink.Application/Users/Commands/SyncUserHandler.cs b/src/Imprink.Application/Commands/Users/SyncUserHandler.cs similarity index 92% rename from src/Imprink.Application/Users/Commands/SyncUserHandler.cs rename to src/Imprink.Application/Commands/Users/SyncUserHandler.cs index 99bdc9f..a304b27 100644 --- a/src/Imprink.Application/Users/Commands/SyncUserHandler.cs +++ b/src/Imprink.Application/Commands/Users/SyncUserHandler.cs @@ -1,9 +1,9 @@ using AutoMapper; -using Imprink.Application.Users.Dtos; +using Imprink.Application.Dtos; using Imprink.Domain.Models; using MediatR; -namespace Imprink.Application.Users.Commands; +namespace Imprink.Application.Commands.Users; public record SyncUserCommand(Auth0User User) : IRequest; diff --git a/src/Imprink.Application/Categories/Dtos/CategoryDto.cs b/src/Imprink.Application/Dtos/CategoryDto.cs similarity index 89% rename from src/Imprink.Application/Categories/Dtos/CategoryDto.cs rename to src/Imprink.Application/Dtos/CategoryDto.cs index 64b9e19..6c848b2 100644 --- a/src/Imprink.Application/Categories/Dtos/CategoryDto.cs +++ b/src/Imprink.Application/Dtos/CategoryDto.cs @@ -1,4 +1,4 @@ -namespace Imprink.Application.Categories.Dtos; +namespace Imprink.Application.Dtos; public class CategoryDto { diff --git a/src/Imprink.Application/Products/Dtos/PagedResultDto.cs b/src/Imprink.Application/Dtos/PagedResultDto.cs similarity index 89% rename from src/Imprink.Application/Products/Dtos/PagedResultDto.cs rename to src/Imprink.Application/Dtos/PagedResultDto.cs index f654054..8d36ba7 100644 --- a/src/Imprink.Application/Products/Dtos/PagedResultDto.cs +++ b/src/Imprink.Application/Dtos/PagedResultDto.cs @@ -1,4 +1,4 @@ -namespace Imprink.Application.Products.Dtos; +namespace Imprink.Application.Dtos; public class PagedResultDto { diff --git a/src/Imprink.Application/Products/Dtos/ProductDto.cs b/src/Imprink.Application/Dtos/ProductDto.cs similarity index 84% rename from src/Imprink.Application/Products/Dtos/ProductDto.cs rename to src/Imprink.Application/Dtos/ProductDto.cs index cc71be2..d24391c 100644 --- a/src/Imprink.Application/Products/Dtos/ProductDto.cs +++ b/src/Imprink.Application/Dtos/ProductDto.cs @@ -1,6 +1,4 @@ -using Imprink.Application.Categories.Dtos; - -namespace Imprink.Application.Products.Dtos; +namespace Imprink.Application.Dtos; public class ProductDto { diff --git a/src/Imprink.Application/ProductVariants/Dtos/ProductVariantDto.cs b/src/Imprink.Application/Dtos/ProductVariantDto.cs similarity index 85% rename from src/Imprink.Application/ProductVariants/Dtos/ProductVariantDto.cs rename to src/Imprink.Application/Dtos/ProductVariantDto.cs index 0afec2c..98424dc 100644 --- a/src/Imprink.Application/ProductVariants/Dtos/ProductVariantDto.cs +++ b/src/Imprink.Application/Dtos/ProductVariantDto.cs @@ -1,6 +1,4 @@ -using Imprink.Application.Products.Dtos; - -namespace Imprink.Application.ProductVariants.Dtos; +namespace Imprink.Application.Dtos; public class ProductVariantDto { diff --git a/src/Imprink.Application/Users/Dtos/RoleDto.cs b/src/Imprink.Application/Dtos/RoleDto.cs similarity index 74% rename from src/Imprink.Application/Users/Dtos/RoleDto.cs rename to src/Imprink.Application/Dtos/RoleDto.cs index ac90f6f..c821611 100644 --- a/src/Imprink.Application/Users/Dtos/RoleDto.cs +++ b/src/Imprink.Application/Dtos/RoleDto.cs @@ -1,4 +1,4 @@ -namespace Imprink.Application.Users.Dtos; +namespace Imprink.Application.Dtos; public class RoleDto { diff --git a/src/Imprink.Application/Users/Dtos/UserDto.cs b/src/Imprink.Application/Dtos/UserDto.cs similarity index 88% rename from src/Imprink.Application/Users/Dtos/UserDto.cs rename to src/Imprink.Application/Dtos/UserDto.cs index 9eb46f6..221da57 100644 --- a/src/Imprink.Application/Users/Dtos/UserDto.cs +++ b/src/Imprink.Application/Dtos/UserDto.cs @@ -1,7 +1,6 @@ -using Imprink.Domain.Entities.Orders; -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; -namespace Imprink.Application.Users.Dtos; +namespace Imprink.Application.Dtos; public class UserDto { diff --git a/src/Imprink.Application/Users/Dtos/UserRoleDto.cs b/src/Imprink.Application/Dtos/UserRoleDto.cs similarity index 74% rename from src/Imprink.Application/Users/Dtos/UserRoleDto.cs rename to src/Imprink.Application/Dtos/UserRoleDto.cs index cb53e64..3c53cf9 100644 --- a/src/Imprink.Application/Users/Dtos/UserRoleDto.cs +++ b/src/Imprink.Application/Dtos/UserRoleDto.cs @@ -1,4 +1,4 @@ -namespace Imprink.Application.Users.Dtos; +namespace Imprink.Application.Dtos; public class UserRoleDto { diff --git a/src/Imprink.Application/IUnitOfWork.cs b/src/Imprink.Application/IUnitOfWork.cs index 82d3fad..4e63857 100644 --- a/src/Imprink.Application/IUnitOfWork.cs +++ b/src/Imprink.Application/IUnitOfWork.cs @@ -1,7 +1,4 @@ using Imprink.Domain.Repositories; -using Imprink.Domain.Repositories.Orders; -using Imprink.Domain.Repositories.Products; -using Imprink.Domain.Repositories.Users; namespace Imprink.Application; diff --git a/src/Imprink.Application/Products/Mappings/ProductMappingProfile.cs b/src/Imprink.Application/Mappings/ProductMappingProfile.cs similarity index 84% rename from src/Imprink.Application/Products/Mappings/ProductMappingProfile.cs rename to src/Imprink.Application/Mappings/ProductMappingProfile.cs index 97d1fd7..389651f 100644 --- a/src/Imprink.Application/Products/Mappings/ProductMappingProfile.cs +++ b/src/Imprink.Application/Mappings/ProductMappingProfile.cs @@ -1,12 +1,10 @@ using AutoMapper; -using Imprink.Application.Categories.Dtos; -using Imprink.Application.Products.Commands; -using Imprink.Application.Products.Dtos; -using Imprink.Application.ProductVariants.Commands; -using Imprink.Application.ProductVariants.Dtos; -using Imprink.Domain.Entities.Products; +using Imprink.Application.Commands.Products; +using Imprink.Application.Commands.ProductVariants; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; -namespace Imprink.Application.Products.Mappings; +namespace Imprink.Application.Mappings; public class ProductMappingProfile: Profile { diff --git a/src/Imprink.Application/Users/Mappings/UserMappingProfile.cs b/src/Imprink.Application/Mappings/UserMappingProfile.cs similarity index 93% rename from src/Imprink.Application/Users/Mappings/UserMappingProfile.cs rename to src/Imprink.Application/Mappings/UserMappingProfile.cs index 16a8a43..b9483c1 100644 --- a/src/Imprink.Application/Users/Mappings/UserMappingProfile.cs +++ b/src/Imprink.Application/Mappings/UserMappingProfile.cs @@ -1,10 +1,10 @@ using System.Security.Claims; using AutoMapper; -using Imprink.Application.Users.Dtos; -using Imprink.Domain.Entities.Users; +using Imprink.Application.Dtos; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -namespace Imprink.Application.Users.Mappings; +namespace Imprink.Application.Mappings; public class UserMappingProfile: Profile { diff --git a/src/Imprink.Application/Users/Services/ICurrentUserService.cs b/src/Imprink.Application/Services/ICurrentUserService.cs similarity index 61% rename from src/Imprink.Application/Users/Services/ICurrentUserService.cs rename to src/Imprink.Application/Services/ICurrentUserService.cs index 86b15a4..83bbe41 100644 --- a/src/Imprink.Application/Users/Services/ICurrentUserService.cs +++ b/src/Imprink.Application/Services/ICurrentUserService.cs @@ -1,4 +1,4 @@ -namespace Imprink.Application.Users.Services; +namespace Imprink.Application.Services; public interface ICurrentUserService { diff --git a/src/Imprink.Application/Categories/Validation/CreateCategoryCommandValidator.cs b/src/Imprink.Application/Validation/Categories/CreateCategoryCommandValidator.cs similarity index 91% rename from src/Imprink.Application/Categories/Validation/CreateCategoryCommandValidator.cs rename to src/Imprink.Application/Validation/Categories/CreateCategoryCommandValidator.cs index 88e9f22..5dac6bf 100644 --- a/src/Imprink.Application/Categories/Validation/CreateCategoryCommandValidator.cs +++ b/src/Imprink.Application/Validation/Categories/CreateCategoryCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Categories.Commands; +using Imprink.Application.Commands.Categories; -namespace Imprink.Application.Categories.Validation; +namespace Imprink.Application.Validation.Categories; public class CreateCategoryCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Categories/Validation/DeleteCategoryCommandValidator.cs b/src/Imprink.Application/Validation/Categories/DeleteCategoryCommandValidator.cs similarity index 76% rename from src/Imprink.Application/Categories/Validation/DeleteCategoryCommandValidator.cs rename to src/Imprink.Application/Validation/Categories/DeleteCategoryCommandValidator.cs index 89c8c7e..169b09a 100644 --- a/src/Imprink.Application/Categories/Validation/DeleteCategoryCommandValidator.cs +++ b/src/Imprink.Application/Validation/Categories/DeleteCategoryCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Categories.Commands; +using Imprink.Application.Commands.Categories; -namespace Imprink.Application.Categories.Validation; +namespace Imprink.Application.Validation.Categories; public class DeleteCategoryCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Categories/Validation/UpdateCategoryCommandValidator.cs b/src/Imprink.Application/Validation/Categories/UpdateCategoryCommandValidator.cs similarity index 93% rename from src/Imprink.Application/Categories/Validation/UpdateCategoryCommandValidator.cs rename to src/Imprink.Application/Validation/Categories/UpdateCategoryCommandValidator.cs index dfb0af8..92990e5 100644 --- a/src/Imprink.Application/Categories/Validation/UpdateCategoryCommandValidator.cs +++ b/src/Imprink.Application/Validation/Categories/UpdateCategoryCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Categories.Commands; +using Imprink.Application.Commands.Categories; -namespace Imprink.Application.Categories.Validation; +namespace Imprink.Application.Validation.Categories; public class UpdateCategoryCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Orders/Validation/OrderFilterParametersValidator.cs b/src/Imprink.Application/Validation/Orders/OrderFilterParametersValidator.cs similarity index 98% rename from src/Imprink.Application/Orders/Validation/OrderFilterParametersValidator.cs rename to src/Imprink.Application/Validation/Orders/OrderFilterParametersValidator.cs index 243f5e8..6055f1b 100644 --- a/src/Imprink.Application/Orders/Validation/OrderFilterParametersValidator.cs +++ b/src/Imprink.Application/Validation/Orders/OrderFilterParametersValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; using Imprink.Domain.Models; -namespace Imprink.Application.Orders.Validation; +namespace Imprink.Application.Validation.Orders; public class OrderFilterParametersValidator : AbstractValidator { diff --git a/src/Imprink.Application/ProductVariants/Validation/CreateProducVariantCommandValidator.cs b/src/Imprink.Application/Validation/ProductVariants/CreateProducVariantCommandValidator.cs similarity index 92% rename from src/Imprink.Application/ProductVariants/Validation/CreateProducVariantCommandValidator.cs rename to src/Imprink.Application/Validation/ProductVariants/CreateProducVariantCommandValidator.cs index 8897c47..aff1134 100644 --- a/src/Imprink.Application/ProductVariants/Validation/CreateProducVariantCommandValidator.cs +++ b/src/Imprink.Application/Validation/ProductVariants/CreateProducVariantCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.ProductVariants.Commands; +using Imprink.Application.Commands.ProductVariants; -namespace Imprink.Application.ProductVariants.Validation; +namespace Imprink.Application.Validation.ProductVariants; public class CreateProductVariantCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/ProductVariants/Validation/DeleteProductVariantCommandValidator.cs b/src/Imprink.Application/Validation/ProductVariants/DeleteProductVariantCommandValidator.cs similarity index 75% rename from src/Imprink.Application/ProductVariants/Validation/DeleteProductVariantCommandValidator.cs rename to src/Imprink.Application/Validation/ProductVariants/DeleteProductVariantCommandValidator.cs index 419aa93..e9b550e 100644 --- a/src/Imprink.Application/ProductVariants/Validation/DeleteProductVariantCommandValidator.cs +++ b/src/Imprink.Application/Validation/ProductVariants/DeleteProductVariantCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.ProductVariants.Commands; +using Imprink.Application.Commands.ProductVariants; -namespace Imprink.Application.ProductVariants.Validation; +namespace Imprink.Application.Validation.ProductVariants; public class DeleteProductVariantCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/ProductVariants/Validation/GetProductVariantsQueryValidator.cs b/src/Imprink.Application/Validation/ProductVariants/GetProductVariantsQueryValidator.cs similarity index 76% rename from src/Imprink.Application/ProductVariants/Validation/GetProductVariantsQueryValidator.cs rename to src/Imprink.Application/Validation/ProductVariants/GetProductVariantsQueryValidator.cs index 9aa11b1..ddb3341 100644 --- a/src/Imprink.Application/ProductVariants/Validation/GetProductVariantsQueryValidator.cs +++ b/src/Imprink.Application/Validation/ProductVariants/GetProductVariantsQueryValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.ProductVariants.Commands; +using Imprink.Application.Commands.ProductVariants; -namespace Imprink.Application.ProductVariants.Validation; +namespace Imprink.Application.Validation.ProductVariants; public class GetProductVariantsQueryValidator : AbstractValidator { diff --git a/src/Imprink.Application/ProductVariants/Validation/UpdateProductVariantCommandValidator.cs b/src/Imprink.Application/Validation/ProductVariants/UpdateProductVariantCommandValidator.cs similarity index 93% rename from src/Imprink.Application/ProductVariants/Validation/UpdateProductVariantCommandValidator.cs rename to src/Imprink.Application/Validation/ProductVariants/UpdateProductVariantCommandValidator.cs index d01b1b2..1565abb 100644 --- a/src/Imprink.Application/ProductVariants/Validation/UpdateProductVariantCommandValidator.cs +++ b/src/Imprink.Application/Validation/ProductVariants/UpdateProductVariantCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.ProductVariants.Commands; +using Imprink.Application.Commands.ProductVariants; -namespace Imprink.Application.ProductVariants.Validation; +namespace Imprink.Application.Validation.ProductVariants; public class UpdateProductVariantCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Products/Validation/CreateProductCommandValidator.cs b/src/Imprink.Application/Validation/Products/CreateProductCommandValidator.cs similarity index 92% rename from src/Imprink.Application/Products/Validation/CreateProductCommandValidator.cs rename to src/Imprink.Application/Validation/Products/CreateProductCommandValidator.cs index d79875a..7258db0 100644 --- a/src/Imprink.Application/Products/Validation/CreateProductCommandValidator.cs +++ b/src/Imprink.Application/Validation/Products/CreateProductCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Products.Commands; +using Imprink.Application.Commands.Products; -namespace Imprink.Application.Products.Validation; +namespace Imprink.Application.Validation.Products; public class CreateProductCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Products/Validation/DeleteProductCommandValidator.cs b/src/Imprink.Application/Validation/Products/DeleteProductCommandValidator.cs similarity index 77% rename from src/Imprink.Application/Products/Validation/DeleteProductCommandValidator.cs rename to src/Imprink.Application/Validation/Products/DeleteProductCommandValidator.cs index 53903ab..205cfec 100644 --- a/src/Imprink.Application/Products/Validation/DeleteProductCommandValidator.cs +++ b/src/Imprink.Application/Validation/Products/DeleteProductCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Products.Commands; +using Imprink.Application.Commands.Products; -namespace Imprink.Application.Products.Validation; +namespace Imprink.Application.Validation.Products; public class DeleteProductCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Products/Validation/GetProductsQueryValidator.cs b/src/Imprink.Application/Validation/Products/GetProductsQueryValidator.cs similarity index 75% rename from src/Imprink.Application/Products/Validation/GetProductsQueryValidator.cs rename to src/Imprink.Application/Validation/Products/GetProductsQueryValidator.cs index 1194b72..fb2a120 100644 --- a/src/Imprink.Application/Products/Validation/GetProductsQueryValidator.cs +++ b/src/Imprink.Application/Validation/Products/GetProductsQueryValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Products.Commands; +using Imprink.Application.Commands.Products; -namespace Imprink.Application.Products.Validation; +namespace Imprink.Application.Validation.Products; public class GetProductsQueryValidator : AbstractValidator { diff --git a/src/Imprink.Application/Products/Validation/ProductFilterParametersValidator.cs b/src/Imprink.Application/Validation/Products/ProductFilterParametersValidator.cs similarity index 97% rename from src/Imprink.Application/Products/Validation/ProductFilterParametersValidator.cs rename to src/Imprink.Application/Validation/Products/ProductFilterParametersValidator.cs index 55cd4d0..177615d 100644 --- a/src/Imprink.Application/Products/Validation/ProductFilterParametersValidator.cs +++ b/src/Imprink.Application/Validation/Products/ProductFilterParametersValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; using Imprink.Domain.Models; -namespace Imprink.Application.Products.Validation; +namespace Imprink.Application.Validation.Products; public class ProductFilterParametersValidator : AbstractValidator { diff --git a/src/Imprink.Application/Products/Validation/UpdateProductCommandValidator.cs b/src/Imprink.Application/Validation/Products/UpdateProductCommandValidator.cs similarity index 92% rename from src/Imprink.Application/Products/Validation/UpdateProductCommandValidator.cs rename to src/Imprink.Application/Validation/Products/UpdateProductCommandValidator.cs index 3c49ebe..3607612 100644 --- a/src/Imprink.Application/Products/Validation/UpdateProductCommandValidator.cs +++ b/src/Imprink.Application/Validation/Products/UpdateProductCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Products.Commands; +using Imprink.Application.Commands.Products; -namespace Imprink.Application.Products.Validation; +namespace Imprink.Application.Validation.Products; public class UpdateProductCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Users/Validation/Auth0UserValidator.cs b/src/Imprink.Application/Validation/Users/Auth0UserValidator.cs similarity index 90% rename from src/Imprink.Application/Users/Validation/Auth0UserValidator.cs rename to src/Imprink.Application/Validation/Users/Auth0UserValidator.cs index 309558b..61e096b 100644 --- a/src/Imprink.Application/Users/Validation/Auth0UserValidator.cs +++ b/src/Imprink.Application/Validation/Users/Auth0UserValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; using Imprink.Domain.Models; -namespace Imprink.Application.Users.Validation; +namespace Imprink.Application.Validation.Users; public class Auth0UserValidator : AbstractValidator { diff --git a/src/Imprink.Application/Users/Validation/SetUserFullNameCommandValidator.cs b/src/Imprink.Application/Validation/Users/SetUserFullNameCommandValidator.cs similarity index 85% rename from src/Imprink.Application/Users/Validation/SetUserFullNameCommandValidator.cs rename to src/Imprink.Application/Validation/Users/SetUserFullNameCommandValidator.cs index cadda16..f18228d 100644 --- a/src/Imprink.Application/Users/Validation/SetUserFullNameCommandValidator.cs +++ b/src/Imprink.Application/Validation/Users/SetUserFullNameCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Users.Commands; +using Imprink.Application.Commands.Users; -namespace Imprink.Application.Users.Validation; +namespace Imprink.Application.Validation.Users; public class SetUserFullNameCommandValidator : AbstractValidator { diff --git a/src/Imprink.Application/Users/Validation/SetUserPhoneCommandValidator.cs b/src/Imprink.Application/Validation/Users/SetUserPhoneCommandValidator.cs similarity index 80% rename from src/Imprink.Application/Users/Validation/SetUserPhoneCommandValidator.cs rename to src/Imprink.Application/Validation/Users/SetUserPhoneCommandValidator.cs index b0c0508..d392ac4 100644 --- a/src/Imprink.Application/Users/Validation/SetUserPhoneCommandValidator.cs +++ b/src/Imprink.Application/Validation/Users/SetUserPhoneCommandValidator.cs @@ -1,7 +1,7 @@ using FluentValidation; -using Imprink.Application.Users.Commands; +using Imprink.Application.Commands.Users; -namespace Imprink.Application.Users.Validation; +namespace Imprink.Application.Validation.Users; public class SetUserPhoneCommandValidator : AbstractValidator { diff --git a/src/Imprink.Domain/Entities/Users/Address.cs b/src/Imprink.Domain/Entities/Address.cs similarity index 92% rename from src/Imprink.Domain/Entities/Users/Address.cs rename to src/Imprink.Domain/Entities/Address.cs index 144b8c0..857f331 100644 --- a/src/Imprink.Domain/Entities/Users/Address.cs +++ b/src/Imprink.Domain/Entities/Address.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Users; +namespace Imprink.Domain.Entities; public class Address : EntityBase { diff --git a/src/Imprink.Domain/Entities/Products/Category.cs b/src/Imprink.Domain/Entities/Category.cs similarity index 92% rename from src/Imprink.Domain/Entities/Products/Category.cs rename to src/Imprink.Domain/Entities/Category.cs index 19d4299..bf58e05 100644 --- a/src/Imprink.Domain/Entities/Products/Category.cs +++ b/src/Imprink.Domain/Entities/Category.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Products; +namespace Imprink.Domain.Entities; public class Category : EntityBase { diff --git a/src/Imprink.Domain/Entities/Orders/Order.cs b/src/Imprink.Domain/Entities/Order.cs similarity index 89% rename from src/Imprink.Domain/Entities/Orders/Order.cs rename to src/Imprink.Domain/Entities/Order.cs index 629b623..66d5e68 100644 --- a/src/Imprink.Domain/Entities/Orders/Order.cs +++ b/src/Imprink.Domain/Entities/Order.cs @@ -1,6 +1,4 @@ -using Imprink.Domain.Entities.Users; - -namespace Imprink.Domain.Entities.Orders; +namespace Imprink.Domain.Entities; public class Order : EntityBase { diff --git a/src/Imprink.Domain/Entities/Orders/OrderAddress.cs b/src/Imprink.Domain/Entities/OrderAddress.cs similarity index 90% rename from src/Imprink.Domain/Entities/Orders/OrderAddress.cs rename to src/Imprink.Domain/Entities/OrderAddress.cs index 1eb44aa..1505f65 100644 --- a/src/Imprink.Domain/Entities/Orders/OrderAddress.cs +++ b/src/Imprink.Domain/Entities/OrderAddress.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Orders; +namespace Imprink.Domain.Entities; public class OrderAddress : EntityBase { diff --git a/src/Imprink.Domain/Entities/Orders/OrderItem.cs b/src/Imprink.Domain/Entities/OrderItem.cs similarity index 87% rename from src/Imprink.Domain/Entities/Orders/OrderItem.cs rename to src/Imprink.Domain/Entities/OrderItem.cs index 7f63ce2..6d8b769 100644 --- a/src/Imprink.Domain/Entities/Orders/OrderItem.cs +++ b/src/Imprink.Domain/Entities/OrderItem.cs @@ -1,6 +1,4 @@ -using Imprink.Domain.Entities.Products; - -namespace Imprink.Domain.Entities.Orders; +namespace Imprink.Domain.Entities; public class OrderItem : EntityBase { diff --git a/src/Imprink.Domain/Entities/Orders/OrderStatus.cs b/src/Imprink.Domain/Entities/OrderStatus.cs similarity index 82% rename from src/Imprink.Domain/Entities/Orders/OrderStatus.cs rename to src/Imprink.Domain/Entities/OrderStatus.cs index 597a0a9..0408618 100644 --- a/src/Imprink.Domain/Entities/Orders/OrderStatus.cs +++ b/src/Imprink.Domain/Entities/OrderStatus.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Orders; +namespace Imprink.Domain.Entities; public class OrderStatus { diff --git a/src/Imprink.Domain/Entities/Products/Product.cs b/src/Imprink.Domain/Entities/Product.cs similarity index 88% rename from src/Imprink.Domain/Entities/Products/Product.cs rename to src/Imprink.Domain/Entities/Product.cs index e551681..d640552 100644 --- a/src/Imprink.Domain/Entities/Products/Product.cs +++ b/src/Imprink.Domain/Entities/Product.cs @@ -1,6 +1,4 @@ -using Imprink.Domain.Entities.Orders; - -namespace Imprink.Domain.Entities.Products; +namespace Imprink.Domain.Entities; public class Product : EntityBase { diff --git a/src/Imprink.Domain/Entities/Products/ProductVariant.cs b/src/Imprink.Domain/Entities/ProductVariant.cs similarity index 86% rename from src/Imprink.Domain/Entities/Products/ProductVariant.cs rename to src/Imprink.Domain/Entities/ProductVariant.cs index a802569..e9fee5b 100644 --- a/src/Imprink.Domain/Entities/Products/ProductVariant.cs +++ b/src/Imprink.Domain/Entities/ProductVariant.cs @@ -1,6 +1,4 @@ -using Imprink.Domain.Entities.Orders; - -namespace Imprink.Domain.Entities.Products; +namespace Imprink.Domain.Entities; public class ProductVariant : EntityBase { diff --git a/src/Imprink.Domain/Entities/Users/Role.cs b/src/Imprink.Domain/Entities/Role.cs similarity index 83% rename from src/Imprink.Domain/Entities/Users/Role.cs rename to src/Imprink.Domain/Entities/Role.cs index 7732966..bf117fa 100644 --- a/src/Imprink.Domain/Entities/Users/Role.cs +++ b/src/Imprink.Domain/Entities/Role.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Users; +namespace Imprink.Domain.Entities; public class Role { diff --git a/src/Imprink.Domain/Entities/Orders/ShippingStatus.cs b/src/Imprink.Domain/Entities/ShippingStatus.cs similarity index 82% rename from src/Imprink.Domain/Entities/Orders/ShippingStatus.cs rename to src/Imprink.Domain/Entities/ShippingStatus.cs index eb07c63..d2384bf 100644 --- a/src/Imprink.Domain/Entities/Orders/ShippingStatus.cs +++ b/src/Imprink.Domain/Entities/ShippingStatus.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Orders; +namespace Imprink.Domain.Entities; public class ShippingStatus { diff --git a/src/Imprink.Domain/Entities/Users/User.cs b/src/Imprink.Domain/Entities/User.cs similarity index 91% rename from src/Imprink.Domain/Entities/Users/User.cs rename to src/Imprink.Domain/Entities/User.cs index f6d7713..59edbfa 100644 --- a/src/Imprink.Domain/Entities/Users/User.cs +++ b/src/Imprink.Domain/Entities/User.cs @@ -1,6 +1,4 @@ -using Imprink.Domain.Entities.Orders; - -namespace Imprink.Domain.Entities.Users; +namespace Imprink.Domain.Entities; public class User { diff --git a/src/Imprink.Domain/Entities/Users/UserRole.cs b/src/Imprink.Domain/Entities/UserRole.cs similarity index 84% rename from src/Imprink.Domain/Entities/Users/UserRole.cs rename to src/Imprink.Domain/Entities/UserRole.cs index de4c4b1..28a6ec2 100644 --- a/src/Imprink.Domain/Entities/Users/UserRole.cs +++ b/src/Imprink.Domain/Entities/UserRole.cs @@ -1,4 +1,4 @@ -namespace Imprink.Domain.Entities.Users; +namespace Imprink.Domain.Entities; public class UserRole { diff --git a/src/Imprink.Domain/Models/BaseFilterParameters.cs b/src/Imprink.Domain/Models/BaseFilterParameters.cs new file mode 100644 index 0000000..5dfc8cb --- /dev/null +++ b/src/Imprink.Domain/Models/BaseFilterParameters.cs @@ -0,0 +1,6 @@ +namespace Imprink.Domain.Models; + +public class BaseFilterParameters +{ + // ToDo +} \ No newline at end of file diff --git a/src/Imprink.Domain/Repositories/Products/ICategoryRepository.cs b/src/Imprink.Domain/Repositories/ICategoryRepository.cs similarity index 93% rename from src/Imprink.Domain/Repositories/Products/ICategoryRepository.cs rename to src/Imprink.Domain/Repositories/ICategoryRepository.cs index ba41959..6ff6b41 100644 --- a/src/Imprink.Domain/Repositories/Products/ICategoryRepository.cs +++ b/src/Imprink.Domain/Repositories/ICategoryRepository.cs @@ -1,6 +1,6 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; -namespace Imprink.Domain.Repositories.Products; +namespace Imprink.Domain.Repositories; public interface ICategoryRepository { diff --git a/src/Imprink.Domain/Repositories/Orders/IOrderItemRepository.cs b/src/Imprink.Domain/Repositories/IOrderItemRepository.cs similarity index 96% rename from src/Imprink.Domain/Repositories/Orders/IOrderItemRepository.cs rename to src/Imprink.Domain/Repositories/IOrderItemRepository.cs index d3699d9..7f8d123 100644 --- a/src/Imprink.Domain/Repositories/Orders/IOrderItemRepository.cs +++ b/src/Imprink.Domain/Repositories/IOrderItemRepository.cs @@ -1,6 +1,6 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; -namespace Imprink.Domain.Repositories.Orders; +namespace Imprink.Domain.Repositories; public interface IOrderItemRepository { diff --git a/src/Imprink.Domain/Repositories/Orders/IOrderRepository.cs b/src/Imprink.Domain/Repositories/IOrderRepository.cs similarity index 96% rename from src/Imprink.Domain/Repositories/Orders/IOrderRepository.cs rename to src/Imprink.Domain/Repositories/IOrderRepository.cs index c45ae48..0f53fba 100644 --- a/src/Imprink.Domain/Repositories/Orders/IOrderRepository.cs +++ b/src/Imprink.Domain/Repositories/IOrderRepository.cs @@ -1,7 +1,7 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -namespace Imprink.Domain.Repositories.Orders; +namespace Imprink.Domain.Repositories; public interface IOrderRepository { diff --git a/src/Imprink.Domain/Repositories/Products/IProductRepository.cs b/src/Imprink.Domain/Repositories/IProductRepository.cs similarity index 92% rename from src/Imprink.Domain/Repositories/Products/IProductRepository.cs rename to src/Imprink.Domain/Repositories/IProductRepository.cs index a4dd90a..42ef79b 100644 --- a/src/Imprink.Domain/Repositories/Products/IProductRepository.cs +++ b/src/Imprink.Domain/Repositories/IProductRepository.cs @@ -1,7 +1,7 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -namespace Imprink.Domain.Repositories.Products; +namespace Imprink.Domain.Repositories; public interface IProductRepository { diff --git a/src/Imprink.Domain/Repositories/Products/IProductVariantRepository.cs b/src/Imprink.Domain/Repositories/IProductVariantRepository.cs similarity index 93% rename from src/Imprink.Domain/Repositories/Products/IProductVariantRepository.cs rename to src/Imprink.Domain/Repositories/IProductVariantRepository.cs index 8f01e7e..966c2fb 100644 --- a/src/Imprink.Domain/Repositories/Products/IProductVariantRepository.cs +++ b/src/Imprink.Domain/Repositories/IProductVariantRepository.cs @@ -1,6 +1,6 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; -namespace Imprink.Domain.Repositories.Products; +namespace Imprink.Domain.Repositories; public interface IProductVariantRepository { diff --git a/src/Imprink.Domain/Repositories/Users/IRoleRepository.cs b/src/Imprink.Domain/Repositories/IRoleRepository.cs similarity index 83% rename from src/Imprink.Domain/Repositories/Users/IRoleRepository.cs rename to src/Imprink.Domain/Repositories/IRoleRepository.cs index f2dfee2..cc9831a 100644 --- a/src/Imprink.Domain/Repositories/Users/IRoleRepository.cs +++ b/src/Imprink.Domain/Repositories/IRoleRepository.cs @@ -1,6 +1,6 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; -namespace Imprink.Domain.Repositories.Users; +namespace Imprink.Domain.Repositories; public interface IRoleRepository { diff --git a/src/Imprink.Domain/Repositories/Users/IUserRepository.cs b/src/Imprink.Domain/Repositories/IUserRepository.cs similarity index 93% rename from src/Imprink.Domain/Repositories/Users/IUserRepository.cs rename to src/Imprink.Domain/Repositories/IUserRepository.cs index ad16875..b08ac09 100644 --- a/src/Imprink.Domain/Repositories/Users/IUserRepository.cs +++ b/src/Imprink.Domain/Repositories/IUserRepository.cs @@ -1,7 +1,7 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -namespace Imprink.Domain.Repositories.Users; +namespace Imprink.Domain.Repositories; public interface IUserRepository { diff --git a/src/Imprink.Domain/Repositories/Users/IUserRoleRepository.cs b/src/Imprink.Domain/Repositories/IUserRoleRepository.cs similarity index 87% rename from src/Imprink.Domain/Repositories/Users/IUserRoleRepository.cs rename to src/Imprink.Domain/Repositories/IUserRoleRepository.cs index 6c36eda..3d04102 100644 --- a/src/Imprink.Domain/Repositories/Users/IUserRoleRepository.cs +++ b/src/Imprink.Domain/Repositories/IUserRoleRepository.cs @@ -1,6 +1,6 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; -namespace Imprink.Domain.Repositories.Users; +namespace Imprink.Domain.Repositories; public interface IUserRoleRepository { diff --git a/src/Imprink.Infrastructure/Users/Configuration/AddressConfiguration.cs b/src/Imprink.Infrastructure/Configuration/AddressConfiguration.cs similarity index 94% rename from src/Imprink.Infrastructure/Users/Configuration/AddressConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/AddressConfiguration.cs index b14348d..d1e4bbd 100644 --- a/src/Imprink.Infrastructure/Users/Configuration/AddressConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/AddressConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Users.Configuration; +namespace Imprink.Infrastructure.Configuration; public class AddressConfiguration : EntityBaseConfiguration
{ diff --git a/src/Imprink.Infrastructure/Categories/Configuration/CategoryConfiguration.cs b/src/Imprink.Infrastructure/Configuration/CategoryConfiguration.cs similarity index 97% rename from src/Imprink.Infrastructure/Categories/Configuration/CategoryConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/CategoryConfiguration.cs index c463d27..1902f35 100644 --- a/src/Imprink.Infrastructure/Categories/Configuration/CategoryConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/CategoryConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Categories.Configuration; +namespace Imprink.Infrastructure.Configuration; public class CategoryConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/Orders/Configuration/OrderAddressConfiguration.cs b/src/Imprink.Infrastructure/Configuration/OrderAddressConfiguration.cs similarity index 91% rename from src/Imprink.Infrastructure/Orders/Configuration/OrderAddressConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/OrderAddressConfiguration.cs index f792ab1..0fe6e64 100644 --- a/src/Imprink.Infrastructure/Orders/Configuration/OrderAddressConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/OrderAddressConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Orders.Configuration; +namespace Imprink.Infrastructure.Configuration; public class OrderAddressConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/Orders/Configuration/OrderConfiguration.cs b/src/Imprink.Infrastructure/Configuration/OrderConfiguration.cs similarity index 96% rename from src/Imprink.Infrastructure/Orders/Configuration/OrderConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/OrderConfiguration.cs index 3b60287..e4a827b 100644 --- a/src/Imprink.Infrastructure/Orders/Configuration/OrderConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/OrderConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Orders.Configuration; +namespace Imprink.Infrastructure.Configuration; public class OrderConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/Orders/Configuration/OrderItemConfiguration.cs b/src/Imprink.Infrastructure/Configuration/OrderItemConfiguration.cs similarity index 96% rename from src/Imprink.Infrastructure/Orders/Configuration/OrderItemConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/OrderItemConfiguration.cs index 2c3d577..e95654e 100644 --- a/src/Imprink.Infrastructure/Orders/Configuration/OrderItemConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/OrderItemConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Orders.Configuration; +namespace Imprink.Infrastructure.Configuration; public class OrderItemConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/Orders/Configuration/OrderStatusConfiguration.cs b/src/Imprink.Infrastructure/Configuration/OrderStatusConfiguration.cs similarity index 90% rename from src/Imprink.Infrastructure/Orders/Configuration/OrderStatusConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/OrderStatusConfiguration.cs index 445b68b..917d343 100644 --- a/src/Imprink.Infrastructure/Orders/Configuration/OrderStatusConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/OrderStatusConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Orders.Configuration; +namespace Imprink.Infrastructure.Configuration; public class OrderStatusConfiguration : IEntityTypeConfiguration { diff --git a/src/Imprink.Infrastructure/Products/Configuration/ProductConfiguration.cs b/src/Imprink.Infrastructure/Configuration/ProductConfiguration.cs similarity index 95% rename from src/Imprink.Infrastructure/Products/Configuration/ProductConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/ProductConfiguration.cs index 3bb0dbc..c0ef17f 100644 --- a/src/Imprink.Infrastructure/Products/Configuration/ProductConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/ProductConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Products.Configuration; +namespace Imprink.Infrastructure.Configuration; public class ProductConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/ProductVariants/Configuration/ProductVariantConfiguration.cs b/src/Imprink.Infrastructure/Configuration/ProductVariantConfiguration.cs similarity index 95% rename from src/Imprink.Infrastructure/ProductVariants/Configuration/ProductVariantConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/ProductVariantConfiguration.cs index eb42c93..2d323a1 100644 --- a/src/Imprink.Infrastructure/ProductVariants/Configuration/ProductVariantConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/ProductVariantConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.ProductVariants.Configuration; +namespace Imprink.Infrastructure.Configuration; public class ProductVariantConfiguration : EntityBaseConfiguration { diff --git a/src/Imprink.Infrastructure/Users/Configuration/RoleConfiguration.cs b/src/Imprink.Infrastructure/Configuration/RoleConfiguration.cs similarity index 90% rename from src/Imprink.Infrastructure/Users/Configuration/RoleConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/RoleConfiguration.cs index aa2b95d..a6db4a8 100644 --- a/src/Imprink.Infrastructure/Users/Configuration/RoleConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/RoleConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Users.Configuration; +namespace Imprink.Infrastructure.Configuration; public class RoleConfiguration : IEntityTypeConfiguration { diff --git a/src/Imprink.Infrastructure/Orders/Configuration/ShippingStatusConfiguration.cs b/src/Imprink.Infrastructure/Configuration/ShippingStatusConfiguration.cs similarity index 90% rename from src/Imprink.Infrastructure/Orders/Configuration/ShippingStatusConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/ShippingStatusConfiguration.cs index 829eb07..1dcf9b5 100644 --- a/src/Imprink.Infrastructure/Orders/Configuration/ShippingStatusConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/ShippingStatusConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Orders.Configuration; +namespace Imprink.Infrastructure.Configuration; public class ShippingStatusConfiguration : IEntityTypeConfiguration { diff --git a/src/Imprink.Infrastructure/Users/Configuration/UserConfiguration.cs b/src/Imprink.Infrastructure/Configuration/UserConfiguration.cs similarity index 94% rename from src/Imprink.Infrastructure/Users/Configuration/UserConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/UserConfiguration.cs index 418cccf..15b71bc 100644 --- a/src/Imprink.Infrastructure/Users/Configuration/UserConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/UserConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Users.Configuration; +namespace Imprink.Infrastructure.Configuration; public class UserConfiguration : IEntityTypeConfiguration { diff --git a/src/Imprink.Infrastructure/Users/Configuration/UserRoleConfiguration.cs b/src/Imprink.Infrastructure/Configuration/UserRoleConfiguration.cs similarity index 91% rename from src/Imprink.Infrastructure/Users/Configuration/UserRoleConfiguration.cs rename to src/Imprink.Infrastructure/Configuration/UserRoleConfiguration.cs index 309698f..d5b00fd 100644 --- a/src/Imprink.Infrastructure/Users/Configuration/UserRoleConfiguration.cs +++ b/src/Imprink.Infrastructure/Configuration/UserRoleConfiguration.cs @@ -1,8 +1,8 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; -namespace Imprink.Infrastructure.Users.Configuration; +namespace Imprink.Infrastructure.Configuration; public class UserRoleConfiguration : IEntityTypeConfiguration { diff --git a/src/Imprink.Infrastructure/Database/ApplicationDbContext.cs b/src/Imprink.Infrastructure/Database/ApplicationDbContext.cs index f8171cc..844fe62 100644 --- a/src/Imprink.Infrastructure/Database/ApplicationDbContext.cs +++ b/src/Imprink.Infrastructure/Database/ApplicationDbContext.cs @@ -1,11 +1,5 @@ -using Imprink.Domain.Entities.Orders; -using Imprink.Domain.Entities.Products; -using Imprink.Domain.Entities.Users; -using Imprink.Infrastructure.Categories.Configuration; -using Imprink.Infrastructure.Orders.Configuration; -using Imprink.Infrastructure.Products.Configuration; -using Imprink.Infrastructure.ProductVariants.Configuration; -using Imprink.Infrastructure.Users.Configuration; +using Imprink.Domain.Entities; +using Imprink.Infrastructure.Configuration; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; diff --git a/src/Imprink.Infrastructure/Imprink.Infrastructure.csproj b/src/Imprink.Infrastructure/Imprink.Infrastructure.csproj index b1a1413..8650de1 100644 --- a/src/Imprink.Infrastructure/Imprink.Infrastructure.csproj +++ b/src/Imprink.Infrastructure/Imprink.Infrastructure.csproj @@ -25,7 +25,6 @@ - diff --git a/src/Imprink.Infrastructure/Categories/Repositories/CategoryRepository.cs b/src/Imprink.Infrastructure/Repositories/CategoryRepository.cs similarity index 96% rename from src/Imprink.Infrastructure/Categories/Repositories/CategoryRepository.cs rename to src/Imprink.Infrastructure/Repositories/CategoryRepository.cs index 91e151a..42f6f34 100644 --- a/src/Imprink.Infrastructure/Categories/Repositories/CategoryRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/CategoryRepository.cs @@ -1,9 +1,9 @@ -using Imprink.Domain.Entities.Products; -using Imprink.Domain.Repositories.Products; +using Imprink.Domain.Entities; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Categories.Repositories; +namespace Imprink.Infrastructure.Repositories; public class CategoryRepository(ApplicationDbContext context) : ICategoryRepository { diff --git a/src/Imprink.Infrastructure/Orders/Repositories/OrderItemRepository.cs b/src/Imprink.Infrastructure/Repositories/OrderItemRepository.cs similarity index 98% rename from src/Imprink.Infrastructure/Orders/Repositories/OrderItemRepository.cs rename to src/Imprink.Infrastructure/Repositories/OrderItemRepository.cs index 8e555f4..916e457 100644 --- a/src/Imprink.Infrastructure/Orders/Repositories/OrderItemRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/OrderItemRepository.cs @@ -1,9 +1,9 @@ -using Imprink.Domain.Entities.Orders; -using Imprink.Domain.Repositories.Orders; +using Imprink.Domain.Entities; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Orders.Repositories; +namespace Imprink.Infrastructure.Repositories; public class OrderItemRepository(ApplicationDbContext context) : IOrderItemRepository { diff --git a/src/Imprink.Infrastructure/Orders/Repositories/OrderRepository.cs b/src/Imprink.Infrastructure/Repositories/OrderRepository.cs similarity index 98% rename from src/Imprink.Infrastructure/Orders/Repositories/OrderRepository.cs rename to src/Imprink.Infrastructure/Repositories/OrderRepository.cs index 491ddeb..39a7655 100644 --- a/src/Imprink.Infrastructure/Orders/Repositories/OrderRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/OrderRepository.cs @@ -1,10 +1,10 @@ -using Imprink.Domain.Entities.Orders; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -using Imprink.Domain.Repositories.Orders; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Orders.Repositories; +namespace Imprink.Infrastructure.Repositories; public class OrderRepository(ApplicationDbContext context) : IOrderRepository { diff --git a/src/Imprink.Infrastructure/Products/Repositories/ProductRepository.cs b/src/Imprink.Infrastructure/Repositories/ProductRepository.cs similarity index 97% rename from src/Imprink.Infrastructure/Products/Repositories/ProductRepository.cs rename to src/Imprink.Infrastructure/Repositories/ProductRepository.cs index 6632a13..b5f1423 100644 --- a/src/Imprink.Infrastructure/Products/Repositories/ProductRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/ProductRepository.cs @@ -1,10 +1,10 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -using Imprink.Domain.Repositories.Products; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Products.Repositories; +namespace Imprink.Infrastructure.Repositories; public class ProductRepository(ApplicationDbContext context) : IProductRepository { diff --git a/src/Imprink.Infrastructure/ProductVariants/Repositories/ProductVariantRepository.cs b/src/Imprink.Infrastructure/Repositories/ProductVariantRepository.cs similarity index 96% rename from src/Imprink.Infrastructure/ProductVariants/Repositories/ProductVariantRepository.cs rename to src/Imprink.Infrastructure/Repositories/ProductVariantRepository.cs index d3ff0f0..01e8efa 100644 --- a/src/Imprink.Infrastructure/ProductVariants/Repositories/ProductVariantRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/ProductVariantRepository.cs @@ -1,9 +1,9 @@ -using Imprink.Domain.Entities.Products; -using Imprink.Domain.Repositories.Products; +using Imprink.Domain.Entities; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.ProductVariants.Repositories; +namespace Imprink.Infrastructure.Repositories; public class ProductVariantRepository(ApplicationDbContext context) : IProductVariantRepository { diff --git a/src/Imprink.Infrastructure/Users/Repositories/RoleRepository.cs b/src/Imprink.Infrastructure/Repositories/RoleRepository.cs similarity index 89% rename from src/Imprink.Infrastructure/Users/Repositories/RoleRepository.cs rename to src/Imprink.Infrastructure/Repositories/RoleRepository.cs index eecfb08..138b74a 100644 --- a/src/Imprink.Infrastructure/Users/Repositories/RoleRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/RoleRepository.cs @@ -1,9 +1,9 @@ -using Imprink.Domain.Entities.Users; -using Imprink.Domain.Repositories.Users; +using Imprink.Domain.Entities; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Users.Repositories; +namespace Imprink.Infrastructure.Repositories; public class RoleRepository(ApplicationDbContext context) : IRoleRepository { diff --git a/src/Imprink.Infrastructure/Users/Repositories/UserRepository.cs b/src/Imprink.Infrastructure/Repositories/UserRepository.cs similarity index 96% rename from src/Imprink.Infrastructure/Users/Repositories/UserRepository.cs rename to src/Imprink.Infrastructure/Repositories/UserRepository.cs index ca9a656..4e300aa 100644 --- a/src/Imprink.Infrastructure/Users/Repositories/UserRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/UserRepository.cs @@ -1,10 +1,10 @@ -using Imprink.Domain.Entities.Users; +using Imprink.Domain.Entities; using Imprink.Domain.Models; -using Imprink.Domain.Repositories.Users; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Users.Repositories; +namespace Imprink.Infrastructure.Repositories; public class UserRepository(ApplicationDbContext context) : IUserRepository { diff --git a/src/Imprink.Infrastructure/Users/Repositories/UserRoleRepository.cs b/src/Imprink.Infrastructure/Repositories/UserRoleRepository.cs similarity index 92% rename from src/Imprink.Infrastructure/Users/Repositories/UserRoleRepository.cs rename to src/Imprink.Infrastructure/Repositories/UserRoleRepository.cs index 474b78d..49d6e47 100644 --- a/src/Imprink.Infrastructure/Users/Repositories/UserRoleRepository.cs +++ b/src/Imprink.Infrastructure/Repositories/UserRoleRepository.cs @@ -1,9 +1,9 @@ -using Imprink.Domain.Entities.Users; -using Imprink.Domain.Repositories.Users; +using Imprink.Domain.Entities; +using Imprink.Domain.Repositories; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; -namespace Imprink.Infrastructure.Users.Repositories; +namespace Imprink.Infrastructure.Repositories; public class UserRoleRepository(ApplicationDbContext context) : IUserRoleRepository { diff --git a/src/Imprink.Infrastructure/Services/CurrentUserService.cs b/src/Imprink.Infrastructure/Services/CurrentUserService.cs index 52102cc..89ffbe9 100644 --- a/src/Imprink.Infrastructure/Services/CurrentUserService.cs +++ b/src/Imprink.Infrastructure/Services/CurrentUserService.cs @@ -1,5 +1,5 @@ using System.Security.Claims; -using Imprink.Application.Users.Services; +using Imprink.Application.Services; using Microsoft.AspNetCore.Http; namespace Imprink.Infrastructure.Services; diff --git a/src/Imprink.Infrastructure/UnitOfWork.cs b/src/Imprink.Infrastructure/UnitOfWork.cs index 8f214f4..1ed1ec9 100644 --- a/src/Imprink.Infrastructure/UnitOfWork.cs +++ b/src/Imprink.Infrastructure/UnitOfWork.cs @@ -1,8 +1,5 @@ using Imprink.Application; using Imprink.Domain.Repositories; -using Imprink.Domain.Repositories.Orders; -using Imprink.Domain.Repositories.Products; -using Imprink.Domain.Repositories.Users; using Imprink.Infrastructure.Database; namespace Imprink.Infrastructure; diff --git a/src/Imprink.WebApi/Controllers/Products/CategoriesController.cs b/src/Imprink.WebApi/Controllers/CategoriesController.cs similarity index 91% rename from src/Imprink.WebApi/Controllers/Products/CategoriesController.cs rename to src/Imprink.WebApi/Controllers/CategoriesController.cs index 04d9b32..73a3710 100644 --- a/src/Imprink.WebApi/Controllers/Products/CategoriesController.cs +++ b/src/Imprink.WebApi/Controllers/CategoriesController.cs @@ -1,6 +1,5 @@ -using Imprink.Application.Categories.Commands; -using Imprink.Application.Categories.Dtos; -using Imprink.Application.Products.Dtos; +using Imprink.Application.Commands.Categories; +using Imprink.Application.Dtos; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/src/Imprink.WebApi/Controllers/Products/ProductVariantsController.cs b/src/Imprink.WebApi/Controllers/ProductVariantsController.cs similarity index 91% rename from src/Imprink.WebApi/Controllers/Products/ProductVariantsController.cs rename to src/Imprink.WebApi/Controllers/ProductVariantsController.cs index 7b065a2..a1c8636 100644 --- a/src/Imprink.WebApi/Controllers/Products/ProductVariantsController.cs +++ b/src/Imprink.WebApi/Controllers/ProductVariantsController.cs @@ -1,6 +1,5 @@ -using Imprink.Application.Products.Dtos; -using Imprink.Application.ProductVariants.Commands; -using Imprink.Application.ProductVariants.Dtos; +using Imprink.Application.Commands.ProductVariants; +using Imprink.Application.Dtos; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/src/Imprink.WebApi/Controllers/Products/ProductsController.cs b/src/Imprink.WebApi/Controllers/ProductsController.cs similarity index 85% rename from src/Imprink.WebApi/Controllers/Products/ProductsController.cs rename to src/Imprink.WebApi/Controllers/ProductsController.cs index be28cd5..9c08e74 100644 --- a/src/Imprink.WebApi/Controllers/Products/ProductsController.cs +++ b/src/Imprink.WebApi/Controllers/ProductsController.cs @@ -1,6 +1,5 @@ -using Imprink.Application.Products; -using Imprink.Application.Products.Commands; -using Imprink.Application.Products.Dtos; +using Imprink.Application.Commands.Products; +using Imprink.Application.Dtos; using Imprink.Domain.Models; using MediatR; using Microsoft.AspNetCore.Authorization; @@ -16,9 +15,9 @@ public class ProductsController(IMediator mediator) : ControllerBase [HttpGet] [AllowAnonymous] public async Task>> GetProducts( - [FromQuery] ProductFilterParameters filterParameters) + [FromQuery] ProductFilterParameters filterParameters, CancellationToken cancellationToken) { - var result = await mediator.Send(new GetProductsQuery { FilterParameters = filterParameters}); + var result = await mediator.Send(new GetProductsQuery { FilterParameters = filterParameters}, cancellationToken); return Ok(result); } diff --git a/src/Imprink.WebApi/Controllers/Products/SeedingController.cs b/src/Imprink.WebApi/Controllers/SeedingController.cs similarity index 100% rename from src/Imprink.WebApi/Controllers/Products/SeedingController.cs rename to src/Imprink.WebApi/Controllers/SeedingController.cs diff --git a/src/Imprink.WebApi/Controllers/Users/UsersController.cs b/src/Imprink.WebApi/Controllers/UsersController.cs similarity index 94% rename from src/Imprink.WebApi/Controllers/Users/UsersController.cs rename to src/Imprink.WebApi/Controllers/UsersController.cs index 42b43de..981a8a9 100644 --- a/src/Imprink.WebApi/Controllers/Users/UsersController.cs +++ b/src/Imprink.WebApi/Controllers/UsersController.cs @@ -1,13 +1,13 @@ using System.Security.Claims; using AutoMapper; -using Imprink.Application.Users.Commands; -using Imprink.Application.Users.Dtos; +using Imprink.Application.Commands.Users; +using Imprink.Application.Dtos; using Imprink.Domain.Models; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -namespace Imprink.WebApi.Controllers.Users; +namespace Imprink.WebApi.Controllers; [ApiController] [Route("/api/users")] diff --git a/src/Imprink.WebApi/Imprink.WebApi.csproj b/src/Imprink.WebApi/Imprink.WebApi.csproj index f880fdd..eb637c0 100644 --- a/src/Imprink.WebApi/Imprink.WebApi.csproj +++ b/src/Imprink.WebApi/Imprink.WebApi.csproj @@ -32,4 +32,8 @@ + + + + diff --git a/src/Imprink.WebApi/Program.cs b/src/Imprink.WebApi/Program.cs index 3992d18..120a9d8 100644 --- a/src/Imprink.WebApi/Program.cs +++ b/src/Imprink.WebApi/Program.cs @@ -13,5 +13,3 @@ var app = builder.Build(); Startup.Configure(app, app.Environment); app.Run(); - -public partial class Program { } \ No newline at end of file diff --git a/src/Imprink.WebApi/Seeder.cs b/src/Imprink.WebApi/Seeder.cs index fa66f6f..45f84f0 100644 --- a/src/Imprink.WebApi/Seeder.cs +++ b/src/Imprink.WebApi/Seeder.cs @@ -1,4 +1,4 @@ -using Imprink.Domain.Entities.Products; +using Imprink.Domain.Entities; using Imprink.Infrastructure.Database; using Microsoft.EntityFrameworkCore; diff --git a/src/Imprink.WebApi/Startup.cs b/src/Imprink.WebApi/Startup.cs index 49ec802..6620633 100644 --- a/src/Imprink.WebApi/Startup.cs +++ b/src/Imprink.WebApi/Startup.cs @@ -1,22 +1,14 @@ using System.Security.Claims; using FluentValidation; using Imprink.Application; -using Imprink.Application.Products; -using Imprink.Application.Products.Commands; -using Imprink.Application.Users.Services; -using Imprink.Application.Users.Validation; +using Imprink.Application.Commands.Products; +using Imprink.Application.Services; +using Imprink.Application.Validation.Users; using Imprink.Domain.Repositories; -using Imprink.Domain.Repositories.Orders; -using Imprink.Domain.Repositories.Products; -using Imprink.Domain.Repositories.Users; using Imprink.Infrastructure; -using Imprink.Infrastructure.Categories.Repositories; using Imprink.Infrastructure.Database; -using Imprink.Infrastructure.Orders.Repositories; -using Imprink.Infrastructure.Products.Repositories; -using Imprink.Infrastructure.ProductVariants.Repositories; +using Imprink.Infrastructure.Repositories; using Imprink.Infrastructure.Services; -using Imprink.Infrastructure.Users.Repositories; using Imprink.WebApi.Filters; using Imprink.WebApi.Middleware; using Microsoft.AspNetCore.Authentication.JwtBearer; From d9dfafe07aab3e33a22cfab89ced3e96a9f94942 Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Sat, 21 Jun 2025 21:15:10 +0300 Subject: [PATCH 2/5] Cool UnitOfWork convenience method (: --- .../Commands/Products/CreateProductHandler.cs | 22 ++++--------- .../Commands/Products/DeleteProductHandler.cs | 30 +++++++---------- src/Imprink.Application/IUnitOfWork.cs | 2 ++ src/Imprink.Infrastructure/UnitOfWork.cs | 33 +++++++++++++++++++ 4 files changed, 52 insertions(+), 35 deletions(-) diff --git a/src/Imprink.Application/Commands/Products/CreateProductHandler.cs b/src/Imprink.Application/Commands/Products/CreateProductHandler.cs index af436bb..ac12e05 100644 --- a/src/Imprink.Application/Commands/Products/CreateProductHandler.cs +++ b/src/Imprink.Application/Commands/Products/CreateProductHandler.cs @@ -16,32 +16,22 @@ public class CreateProductCommand : IRequest public Guid? CategoryId { get; set; } } -public class CreateProductHandler(IUnitOfWork unitOfWork, IMapper mapper) : IRequestHandler +public class CreateProductHandler(IUnitOfWork uw, IMapper mapper) : IRequestHandler { public async Task Handle(CreateProductCommand request, CancellationToken cancellationToken) { - await unitOfWork.BeginTransactionAsync(cancellationToken); - - try + return await uw.TransactAsync(async () => { var product = mapper.Map(request); + var createdProduct = await uw.ProductRepository.AddAsync(product, cancellationToken); - var createdProduct = await unitOfWork.ProductRepository.AddAsync(product, cancellationToken); - if (createdProduct.CategoryId.HasValue) { - createdProduct.Category = (await unitOfWork.CategoryRepository.GetByIdAsync(createdProduct.CategoryId.Value, cancellationToken))!; + createdProduct.Category = + (await uw.CategoryRepository.GetByIdAsync(createdProduct.CategoryId.Value, cancellationToken))!; } - - await unitOfWork.SaveAsync(cancellationToken); - await unitOfWork.CommitTransactionAsync(cancellationToken); return mapper.Map(createdProduct); - } - catch - { - await unitOfWork.RollbackTransactionAsync(cancellationToken); - throw; - } + }, cancellationToken); } } \ No newline at end of file diff --git a/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs b/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs index c4b65ce..2e6c326 100644 --- a/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs +++ b/src/Imprink.Application/Commands/Products/DeleteProductHandler.cs @@ -1,35 +1,27 @@ +using Imprink.Application.Exceptions; using MediatR; namespace Imprink.Application.Commands.Products; -public class DeleteProductCommand : IRequest +public class DeleteProductCommand : IRequest { public Guid Id { get; set; } } -public class DeleteProductHandler(IUnitOfWork unitOfWork) : IRequestHandler +public class DeleteProductHandler(IUnitOfWork uw) : IRequestHandler { - public async Task Handle(DeleteProductCommand request, CancellationToken cancellationToken) + public async Task Handle(DeleteProductCommand request, CancellationToken cancellationToken) { - await unitOfWork.BeginTransactionAsync(cancellationToken); - - try + await uw.TransactAsync(async () => { - var exists = await unitOfWork.ProductRepository.ExistsAsync(request.Id, cancellationToken); + var exists = await uw.ProductRepository.ExistsAsync(request.Id, cancellationToken); + if (!exists) { - await unitOfWork.RollbackTransactionAsync(cancellationToken); - return false; + throw new NotFoundException($"Product with id {request.Id} not found"); } - - await unitOfWork.ProductRepository.DeleteAsync(request.Id, cancellationToken); - await unitOfWork.CommitTransactionAsync(cancellationToken); - return true; - } - catch - { - await unitOfWork.RollbackTransactionAsync(cancellationToken); - throw; - } + + await uw.ProductRepository.DeleteAsync(request.Id, cancellationToken); + }, cancellationToken); } } \ No newline at end of file diff --git a/src/Imprink.Application/IUnitOfWork.cs b/src/Imprink.Application/IUnitOfWork.cs index 4e63857..a3346a2 100644 --- a/src/Imprink.Application/IUnitOfWork.cs +++ b/src/Imprink.Application/IUnitOfWork.cs @@ -17,4 +17,6 @@ public interface IUnitOfWork Task BeginTransactionAsync(CancellationToken cancellationToken = default); Task CommitTransactionAsync(CancellationToken cancellationToken = default); Task RollbackTransactionAsync(CancellationToken cancellationToken = default); + Task TransactAsync(Func> operation, CancellationToken cancellationToken = default); + Task TransactAsync(Func operation, CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/Imprink.Infrastructure/UnitOfWork.cs b/src/Imprink.Infrastructure/UnitOfWork.cs index 1ed1ec9..22011f2 100644 --- a/src/Imprink.Infrastructure/UnitOfWork.cs +++ b/src/Imprink.Infrastructure/UnitOfWork.cs @@ -43,4 +43,37 @@ public class UnitOfWork( { await context.Database.RollbackTransactionAsync(cancellationToken); } + + public async Task TransactAsync(Func> operation, CancellationToken cancellationToken = default) + { + await BeginTransactionAsync(cancellationToken); + try + { + var result = await operation(); + await SaveAsync(cancellationToken); + await CommitTransactionAsync(cancellationToken); + return result; + } + catch + { + await RollbackTransactionAsync(cancellationToken); + throw; + } + } + + public async Task TransactAsync(Func operation, CancellationToken cancellationToken = default) + { + await BeginTransactionAsync(cancellationToken); + try + { + await operation(); + await SaveAsync(cancellationToken); + await CommitTransactionAsync(cancellationToken); + } + catch + { + await RollbackTransactionAsync(cancellationToken); + throw; + } + } } \ No newline at end of file From cae87ee1b723893635c445f89609f722796d24e8 Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Sat, 21 Jun 2025 23:19:16 +0300 Subject: [PATCH 3/5] MEGA POG STRIPE WORKS --- .../Controllers/StripeController.cs | 83 +++++ .../StartupApplicationExtensions.cs | 36 +++ .../StartupEnvironmentExtensions.cs | 21 ++ .../Extensions/StartupMigrationExtensions.cs | 24 ++ .../Extensions/StartupSecurityExtensions.cs | 46 +++ .../Extensions/StartupSwaggerExtensions.cs | 43 +++ src/Imprink.WebApi/Imprink.WebApi.csproj | 5 +- src/Imprink.WebApi/Program.cs | 3 + src/Imprink.WebApi/Startup.cs | 134 +------- webui/package-lock.json | 25 ++ webui/package.json | 2 + webui/src/app/components/PaymentForm.js | 103 ++++++ webui/src/app/globals.css | 246 +++++++++++++++ webui/src/app/layout.js | 36 +-- webui/src/app/page.js | 297 ++++++++---------- 15 files changed, 779 insertions(+), 325 deletions(-) create mode 100644 src/Imprink.WebApi/Controllers/StripeController.cs create mode 100644 src/Imprink.WebApi/Extensions/StartupApplicationExtensions.cs create mode 100644 src/Imprink.WebApi/Extensions/StartupEnvironmentExtensions.cs create mode 100644 src/Imprink.WebApi/Extensions/StartupMigrationExtensions.cs create mode 100644 src/Imprink.WebApi/Extensions/StartupSecurityExtensions.cs create mode 100644 src/Imprink.WebApi/Extensions/StartupSwaggerExtensions.cs create mode 100644 webui/src/app/components/PaymentForm.js create mode 100644 webui/src/app/globals.css diff --git a/src/Imprink.WebApi/Controllers/StripeController.cs b/src/Imprink.WebApi/Controllers/StripeController.cs new file mode 100644 index 0000000..aedb2f0 --- /dev/null +++ b/src/Imprink.WebApi/Controllers/StripeController.cs @@ -0,0 +1,83 @@ +using Microsoft.AspNetCore.Mvc; +using Stripe; + +namespace Imprink.WebApi.Controllers; + +public record CreatePaymentIntentRequest(int Amount, string OrderId); + +[ApiController] +[Route("api/stripe")] +public class StripeController : ControllerBase +{ + [HttpPost("create-payment-intent")] + public async Task CreatePaymentIntent([FromBody] CreatePaymentIntentRequest request) + { + try + { + var options = new PaymentIntentCreateOptions + { + Amount = request.Amount, + Currency = "usd", + PaymentMethodTypes = ["card"], + Metadata = new Dictionary + { + { "order_id", request.OrderId } + } + }; + + var service = new PaymentIntentService(); + var paymentIntent = await service.CreateAsync(options); + + return Ok(new { clientSecret = paymentIntent.ClientSecret }); + } + catch (StripeException ex) + { + return BadRequest(new { error = ex.Message }); + } + } + + [HttpPost("webhook")] + public async Task HandleWebhook() + { + var json = await new StreamReader(Request.Body).ReadToEndAsync(); + + try + { + var stripeEvent = EventUtility.ConstructEvent( + json, + Request.Headers["Stripe-Signature"], + "whsec_9HyZxZ2HseAkiuRvr4MEP4ntcns9n7FA" + ); + + Console.WriteLine($"Received Stripe event: {stripeEvent.Type}"); + + if (stripeEvent.Type == "payment_intent.succeeded") + { + var paymentIntent = stripeEvent.Data.Object as PaymentIntent; + var orderId = paymentIntent?.Metadata?.GetValueOrDefault("order_id") ?? "Unknown"; + + Console.WriteLine($"✅ Order {orderId} confirmed"); + } + else if (stripeEvent.Type == "payment_intent.payment_failed") + { + var paymentIntent = stripeEvent.Data.Object as PaymentIntent; + var orderId = paymentIntent?.Metadata?.GetValueOrDefault("order_id") ?? "Unknown"; + + Console.WriteLine($"❌ Order {orderId} payment failed"); + } + + return Ok(); + } + catch (StripeException ex) + { + Console.WriteLine($"Webhook error: {ex.Message}"); + return BadRequest(); + } + } + + [HttpGet("health")] + public IActionResult HealthCheck() + { + return Ok(new { status = "OK" }); + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Extensions/StartupApplicationExtensions.cs b/src/Imprink.WebApi/Extensions/StartupApplicationExtensions.cs new file mode 100644 index 0000000..86ee554 --- /dev/null +++ b/src/Imprink.WebApi/Extensions/StartupApplicationExtensions.cs @@ -0,0 +1,36 @@ +using Imprink.Application; +using Imprink.Application.Services; +using Imprink.Domain.Repositories; +using Imprink.Infrastructure; +using Imprink.Infrastructure.Database; +using Imprink.Infrastructure.Repositories; +using Imprink.Infrastructure.Services; +using Microsoft.EntityFrameworkCore; + +namespace Imprink.WebApi.Extensions; + +public static class StartupApplicationExtensions +{ + public static void AddBusinessLogic(this IServiceCollection services) + { + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + } + + public static void AddDatabaseContexts(this IServiceCollection services, IConfiguration configuration) + { + services.AddDbContext(options => + options.UseSqlServer( + configuration.GetConnectionString("DefaultConnection"), + sqlOptions => sqlOptions.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName))); + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Extensions/StartupEnvironmentExtensions.cs b/src/Imprink.WebApi/Extensions/StartupEnvironmentExtensions.cs new file mode 100644 index 0000000..65953bd --- /dev/null +++ b/src/Imprink.WebApi/Extensions/StartupEnvironmentExtensions.cs @@ -0,0 +1,21 @@ +namespace Imprink.WebApi.Extensions; + +public static class StartupEnvironmentExtensions +{ + public static void ConfigureEnvironment(this IApplicationBuilder app, IWebHostEnvironment env) + { + if (app is not WebApplication) return; + + if (env.IsDevelopment()) + { + app.UseSwagger(); + app.UseSwaggerUI(); + } + else + { + app.UseExceptionHandler("/Error"); + app.UseHsts(); + app.UseHttpsRedirection(); + } + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Extensions/StartupMigrationExtensions.cs b/src/Imprink.WebApi/Extensions/StartupMigrationExtensions.cs new file mode 100644 index 0000000..d938262 --- /dev/null +++ b/src/Imprink.WebApi/Extensions/StartupMigrationExtensions.cs @@ -0,0 +1,24 @@ +using Imprink.Infrastructure.Database; +using Microsoft.EntityFrameworkCore; + +namespace Imprink.WebApi.Extensions; + +public static class StartupMigrationExtensions +{ + public static void ApplyMigrations(this IApplicationBuilder app) + { + if (app is not WebApplication application) return; + + using var scope = application.Services.CreateScope(); + var dbContext = scope.ServiceProvider.GetRequiredService(); + try + { + dbContext.Database.Migrate(); + Console.WriteLine("Database migrations applied successfully"); + } + catch (Exception ex) + { + Console.WriteLine($"An error occurred while applying migrations: {ex.Message}"); + } + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Extensions/StartupSecurityExtensions.cs b/src/Imprink.WebApi/Extensions/StartupSecurityExtensions.cs new file mode 100644 index 0000000..4e4e6f3 --- /dev/null +++ b/src/Imprink.WebApi/Extensions/StartupSecurityExtensions.cs @@ -0,0 +1,46 @@ +using System.Security.Claims; +using Imprink.Infrastructure.Database; +using Microsoft.AspNetCore.Authentication.JwtBearer; + +namespace Imprink.WebApi.Extensions; + +public static class StartupSecurityExtensions +{ + public static void AddJwtAuthentication(this IServiceCollection services, IConfiguration configuration) + { + services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }) + .AddJwtBearer(options => + { + options.Authority = configuration["Auth0:Authority"]; + options.Audience = configuration["Auth0:Audience"]; + + options.Events = new JwtBearerEvents + { + OnTokenValidated = context => + { + var dbContext = context.HttpContext.RequestServices.GetService(); + var userId = context.Principal?.FindFirst(ClaimTypes.NameIdentifier)?.Value + ?? context.Principal?.FindFirst("sub")?.Value; + + if (string.IsNullOrEmpty(userId)) return Task.CompletedTask; + var identity = context.Principal!.Identity as ClaimsIdentity; + + var roles = ( + from ur in dbContext?.UserRole + join r in dbContext?.Roles on ur.RoleId equals r.Id + where ur.UserId == userId + select r.RoleName).ToList(); + + foreach (var role in roles) identity!.AddClaim(new Claim(ClaimTypes.Role, role)); + identity!.AddClaim(new Claim(ClaimTypes.Role, "User")); + + return Task.CompletedTask; + } + }; + }); + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Extensions/StartupSwaggerExtensions.cs b/src/Imprink.WebApi/Extensions/StartupSwaggerExtensions.cs new file mode 100644 index 0000000..1f3e6b9 --- /dev/null +++ b/src/Imprink.WebApi/Extensions/StartupSwaggerExtensions.cs @@ -0,0 +1,43 @@ +using Microsoft.OpenApi.Models; + +namespace Imprink.WebApi.Extensions; + +public static class StartupSwaggerExtensions +{ + public static void AddSwaggerWithJwtSecurity(this IServiceCollection services) + { + services.AddSwaggerGen(options => + { + options.SwaggerDoc("v1", new OpenApiInfo + { + Title = "Imprink API", + Version = "v1", + }); + + options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = "JWT Authorization header using the Bearer scheme.", + Name = "Authorization", + In = ParameterLocation.Header, + Type = SecuritySchemeType.Http, + Scheme = "Bearer", + BearerFormat = "JWT" + }); + + options.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + } + }, + [] + } + }); + }); + } +} \ No newline at end of file diff --git a/src/Imprink.WebApi/Imprink.WebApi.csproj b/src/Imprink.WebApi/Imprink.WebApi.csproj index eb637c0..db1976d 100644 --- a/src/Imprink.WebApi/Imprink.WebApi.csproj +++ b/src/Imprink.WebApi/Imprink.WebApi.csproj @@ -18,6 +18,7 @@ + @@ -32,8 +33,4 @@ - - - - diff --git a/src/Imprink.WebApi/Program.cs b/src/Imprink.WebApi/Program.cs index 120a9d8..3695f9a 100644 --- a/src/Imprink.WebApi/Program.cs +++ b/src/Imprink.WebApi/Program.cs @@ -1,5 +1,6 @@ using Imprink.WebApi; using Serilog; +using Stripe; var builder = WebApplication.CreateBuilder(args); @@ -10,6 +11,8 @@ Startup.ConfigureServices(builder); var app = builder.Build(); +StripeConfiguration.ApiKey = "sk_test_51RaxJBRrcXIyofFGsAGYs1umsvqQVmc6stk3R5lumc1qO2Aq6G0EXgCgDeaJ6aHHJ0pyOz4YDglnceKK7eeNUCOx00VBoIIn2z"; + Startup.Configure(app, app.Environment); app.Run(); diff --git a/src/Imprink.WebApi/Startup.cs b/src/Imprink.WebApi/Startup.cs index 6620633..564050c 100644 --- a/src/Imprink.WebApi/Startup.cs +++ b/src/Imprink.WebApi/Startup.cs @@ -1,19 +1,12 @@ -using System.Security.Claims; using FluentValidation; using Imprink.Application; using Imprink.Application.Commands.Products; -using Imprink.Application.Services; using Imprink.Application.Validation.Users; -using Imprink.Domain.Repositories; -using Imprink.Infrastructure; using Imprink.Infrastructure.Database; -using Imprink.Infrastructure.Repositories; -using Imprink.Infrastructure.Services; +using Imprink.WebApi.Extensions; using Imprink.WebApi.Filters; using Imprink.WebApi.Middleware; -using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.EntityFrameworkCore; -using Microsoft.OpenApi.Models; namespace Imprink.WebApi; @@ -23,142 +16,35 @@ public static class Startup { var services = builder.Services; - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); + services.AddBusinessLogic(); services.AddAutoMapper(typeof(MappingProfile).Assembly); services.AddHttpContextAccessor(); - services.AddDbContext(options => - options.UseSqlServer( - builder.Configuration.GetConnectionString("DefaultConnection"), - b => b.MigrationsAssembly(typeof(ApplicationDbContext).Assembly.FullName))); + services.AddDatabaseContexts(builder.Configuration); - services.AddMediatR(cfg => - { - cfg.RegisterServicesFromAssembly(typeof(CreateProductHandler).Assembly); - }); + services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(CreateProductHandler).Assembly)); services.AddValidatorsFromAssembly(typeof(Auth0UserValidator).Assembly); - services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - options.Authority = builder.Configuration["Auth0:Authority"]; - options.Audience = builder.Configuration["Auth0:Audience"]; - - options.Events = new JwtBearerEvents - { - OnTokenValidated = context => - { - var dbContext = context.HttpContext.RequestServices.GetService(); - var userId = context.Principal?.FindFirst(ClaimTypes.NameIdentifier)?.Value - ?? context.Principal?.FindFirst("sub")?.Value; - - if (string.IsNullOrEmpty(userId)) return Task.CompletedTask; - var identity = context.Principal!.Identity as ClaimsIdentity; - - var roles = ( - from ur in dbContext?.UserRole - join r in dbContext?.Roles on ur.RoleId equals r.Id - where ur.UserId == userId - select r.RoleName).ToList(); - - foreach (var role in roles) identity!.AddClaim(new Claim(ClaimTypes.Role, role)); - identity!.AddClaim(new Claim(ClaimTypes.Role, "User")); - - return Task.CompletedTask; - } - }; - }); + services.AddJwtAuthentication(builder.Configuration); services.AddAuthorization(); - services.AddControllers(options => - { - options.Filters.Add(); - }); - - services.AddSwaggerGen(options => - { - options.SwaggerDoc("v1", new OpenApiInfo - { - Title = "Imprink API", - Version = "v1", - }); - - options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme - { - Description = "JWT Authorization header using the Bearer scheme.", - Name = "Authorization", - In = ParameterLocation.Header, - Type = SecuritySchemeType.Http, - Scheme = "Bearer", - BearerFormat = "JWT" - }); - - options.AddSecurityRequirement(new OpenApiSecurityRequirement - { - { - new OpenApiSecurityScheme - { - Reference = new OpenApiReference - { - Type = ReferenceType.SecurityScheme, - Id = "Bearer" - } - }, - [] - } - }); - }); + services.AddControllers(options => options.Filters.Add()); + + services.AddSwaggerWithJwtSecurity(); } public static void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - if (app is WebApplication application) - { - using var scope = application.Services.CreateScope(); - var dbContext = scope.ServiceProvider.GetRequiredService(); - try - { - dbContext.Database.Migrate(); - Console.WriteLine("Database migrations applied successfully"); - } - catch (Exception ex) - { - Console.WriteLine($"An error occurred while applying migrations: {ex.Message}"); - } - } + app.ApplyMigrations(); app.UseGlobalExceptionHandling(); app.UseRequestTiming(); - if (env.IsDevelopment()) - { - app.UseSwagger(); - app.UseSwaggerUI(); - } - else - { - app.UseExceptionHandler("/Error"); - app.UseHsts(); - app.UseHttpsRedirection(); - } + app.ConfigureEnvironment(env); app.UseRouting(); app.UseAuthentication(); diff --git a/webui/package-lock.json b/webui/package-lock.json index 5742bc1..dfadc04 100644 --- a/webui/package-lock.json +++ b/webui/package-lock.json @@ -15,6 +15,8 @@ "@mui/material": "^7.1.1", "@mui/x-data-grid": "^8.5.2", "@mui/x-date-pickers": "^8.5.2", + "@stripe/react-stripe-js": "^3.7.0", + "@stripe/stripe-js": "^7.3.1", "axios": "^1.9.0", "lucide-react": "^0.516.0", "next": "15.3.3", @@ -1334,6 +1336,29 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@stripe/react-stripe-js": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-3.7.0.tgz", + "integrity": "sha512-PYls/2S9l0FF+2n0wHaEJsEU8x7CmBagiH7zYOsxbBlLIHEsqUIQ4MlIAbV9Zg6xwT8jlYdlRIyBTHmO3yM7kQ==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@stripe/stripe-js": ">=1.44.1 <8.0.0", + "react": ">=16.8.0 <20.0.0", + "react-dom": ">=16.8.0 <20.0.0" + } + }, + "node_modules/@stripe/stripe-js": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-7.3.1.tgz", + "integrity": "sha512-pTzb864TQWDRQBPLgSPFRoyjSDUqpCkbEgTzpsjiTjGz1Z5SxZNXJek28w1s6Dyry4CyW4/Izj5jHE/J9hCJYQ==", + "license": "MIT", + "engines": { + "node": ">=12.16" + } + }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", diff --git a/webui/package.json b/webui/package.json index e5cffc8..98006bd 100644 --- a/webui/package.json +++ b/webui/package.json @@ -16,6 +16,8 @@ "@mui/material": "^7.1.1", "@mui/x-data-grid": "^8.5.2", "@mui/x-date-pickers": "^8.5.2", + "@stripe/react-stripe-js": "^3.7.0", + "@stripe/stripe-js": "^7.3.1", "axios": "^1.9.0", "lucide-react": "^0.516.0", "next": "15.3.3", diff --git a/webui/src/app/components/PaymentForm.js b/webui/src/app/components/PaymentForm.js new file mode 100644 index 0000000..3aed71c --- /dev/null +++ b/webui/src/app/components/PaymentForm.js @@ -0,0 +1,103 @@ +'use client'; + +import { useState } from 'react'; +import { + useStripe, + useElements, + PaymentElement, + AddressElement, +} from '@stripe/react-stripe-js'; + +export default function PaymentForm({ onSuccess, orderId }) { + const stripe = useStripe(); + const elements = useElements(); + const [isLoading, setIsLoading] = useState(false); + const [message, setMessage] = useState(''); + const [isSuccess, setIsSuccess] = useState(false); + + const handleSubmit = async (e) => { + e.preventDefault(); + + if (!stripe || !elements) { + return; + } + + setIsLoading(true); + setMessage(''); + + const { error } = await stripe.confirmPayment({ + elements, + confirmParams: { + return_url: `${window.location.origin}/payment-success`, + }, + redirect: 'if_required', + }); + + if (error) { + if (error.type === 'card_error' || error.type === 'validation_error') { + setMessage(error.message || 'An error occurred'); + } else { + setMessage('An unexpected error occurred.'); + } + } else { + setMessage('Payment successful! 🎉'); + setIsSuccess(true); + setTimeout(() => { + onSuccess(); + }, 2000); + } + + setIsLoading(false); + }; + + const paymentElementOptions = { + layout: 'tabs', + }; + + if (isSuccess) { + return ( +
+
+

✅ Payment Successful!

+

Thank you for your purchase!

+

Order ID: {orderId}

+

You will receive a confirmation email shortly.

+
+
+ ); + } + + return ( +
+
+

Billing Information

+ +
+ +
+

Payment Information

+ +
+ + + + {message && ( +
+ {message} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/webui/src/app/globals.css b/webui/src/app/globals.css new file mode 100644 index 0000000..1638ee2 --- /dev/null +++ b/webui/src/app/globals.css @@ -0,0 +1,246 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', + 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', + 'Helvetica Neue', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: #f8f9fa; + color: #333; + line-height: 1.6; + min-height: 100vh; + padding: 20px 0; +} + +.container { + max-width: 800px; + margin: 0 auto; + padding: 20px; +} + +header { + text-align: center; + margin-bottom: 40px; +} + +header h1 { + color: #333; + margin-bottom: 10px; +} + +header p { + color: #666; + font-size: 16px; +} + +.products h2 { + margin-bottom: 20px; + color: #333; +} + +.product-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-bottom: 40px; +} + +.product-card { + border: 1px solid #ddd; + border-radius: 8px; + padding: 20px; + text-align: center; + transition: transform 0.2s, box-shadow 0.2s; + background: white; +} + +.product-card:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.1); +} + +.product-card h3 { + margin: 0 0 10px 0; + color: #333; +} + +.description { + color: #666; + margin-bottom: 15px; + font-size: 14px; +} + +.price { + font-size: 24px; + font-weight: bold; + color: #0570de; + margin-bottom: 15px; +} + +.select-btn { + background: #0570de; + color: white; + border: none; + padding: 12px 24px; + border-radius: 4px; + cursor: pointer; + font-size: 16px; + transition: background 0.2s; +} + +.select-btn:hover:not(:disabled) { + background: #0458b3; +} + +.select-btn:disabled { + background: #ccc; + cursor: not-allowed; +} + +.checkout { + max-width: 500px; + margin: 0 auto; +} + +.order-summary { + background: white; + padding: 20px; + border-radius: 8px; + margin-bottom: 30px; + border: 1px solid #ddd; +} + +.order-summary h2 { + margin: 0 0 15px 0; + color: #333; +} + +.order-details p { + margin: 8px 0; + color: #555; +} + +.back-btn { + background: #6c757d; + color: white; + border: none; + padding: 10px 20px; + border-radius: 4px; + cursor: pointer; + margin-top: 20px; + font-size: 14px; +} + +.back-btn:hover { + background: #5a6268; +} + +/* Payment Form Styles */ +.payment-form { + max-width: 500px; + margin: 0 auto; +} + +.payment-section { + margin-bottom: 30px; + background: white; + padding: 20px; + border-radius: 8px; + border: 1px solid #ddd; +} + +.payment-section h3 { + margin: 0 0 15px 0; + color: #333; + font-size: 18px; +} + +.pay-button { + width: 100%; + background: #0570de; + color: white; + border: none; + padding: 16px; + border-radius: 4px; + font-size: 16px; + font-weight: 600; + cursor: pointer; + transition: background 0.2s; + margin-top: 20px; +} + +.pay-button:hover:not(:disabled) { + background: #0458b3; +} + +.pay-button:disabled { + background: #ccc; + cursor: not-allowed; +} + +.spinner { + display: flex; + align-items: center; + justify-content: center; + gap: 10px; +} + +.spinner-border { + width: 20px; + height: 20px; + border: 2px solid transparent; + border-top: 2px solid white; + border-radius: 50%; + animation: spin 1s linear infinite; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.message { + margin-top: 15px; + padding: 12px; + border-radius: 4px; + text-align: center; +} + +.message.success { + background: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; +} + +.message.error { + background: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; +} + +.success-container { + text-align: center; + padding: 40px 20px; +} + +.success-message { + background: #d4edda; + color: #155724; + padding: 30px; + border: 1px solid #c3e6cb; + border-radius: 8px; +} + +.success-message h2 { + margin: 0 0 15px 0; + color: #155724; +} + +.success-message p { + margin: 10px 0; +} \ No newline at end of file diff --git a/webui/src/app/layout.js b/webui/src/app/layout.js index c649f58..799eaf5 100644 --- a/webui/src/app/layout.js +++ b/webui/src/app/layout.js @@ -1,26 +1,14 @@ -'use client' - -import { CssBaseline } from '@mui/material'; -import { ThemeProvider, createTheme } from '@mui/material/styles'; - -const theme = createTheme({ - palette: { - mode: 'light', - primary: { - main: '#1976d2', - }, - }, -}); +export const metadata = { + title: 'Stripe Payment Demo', + description: 'Stripe payment integration demo with Next.js App Router', +} export default function RootLayout({ children }) { - return ( - - - - - {children} - - - - ); -} + return ( + + + {children} + + + ) +} \ No newline at end of file diff --git a/webui/src/app/page.js b/webui/src/app/page.js index 141ace0..a204683 100644 --- a/webui/src/app/page.js +++ b/webui/src/app/page.js @@ -1,192 +1,143 @@ 'use client'; -import { useUser } from "@auth0/nextjs-auth0"; -import {useEffect, useState} from "react"; +import { useState } from 'react'; +import { loadStripe } from '@stripe/stripe-js'; +import { Elements } from '@stripe/react-stripe-js'; +import PaymentForm from './components/PaymentForm'; +import './globals.css'; + +const stripePromise = loadStripe('pk_test_51RaxJBRrcXIyofFGYIfUxzWTLPBfr1A0f2VBjo0lOjHfTBtyVpJKBjVUJ972p5AytGl4LBrgQccwHkp6EYu4liln00vEAf2D4e'); + +const products = [ + { id: '1', name: 'Premium Widget', price: 2999, description: 'High-quality widget for professionals' }, + { id: '2', name: 'Standard Widget', price: 1999, description: 'Reliable widget for everyday use' }, + { id: '3', name: 'Basic Widget', price: 999, description: 'Entry-level widget for beginners' } +]; export default function Home() { - const { user, error, isLoading } = useUser(); + const [selectedProduct, setSelectedProduct] = useState(null); + const [clientSecret, setClientSecret] = useState(''); + const [orderId, setOrderId] = useState(''); + const [loading, setLoading] = useState(false); - useEffect(() => { - const fetchAccessToken = async () => { - if (user) { - try { - await fetch('/token'); - } catch (error) { - console.error("Error fetching token"); - } + const handleProductSelect = async (product) => { + setLoading(true); + setSelectedProduct(product); + + const newOrderId = Math.floor(Math.random() * 10000).toString(); + setOrderId(newOrderId); + + try { + const response = await fetch('https://impr.ink/api/stripe/create-payment-intent', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + amount: product.price, + orderId: newOrderId + }), + }); + + const data = await response.json(); + + if (data.clientSecret) { + setClientSecret(data.clientSecret); } else { - try { - await fetch('/untoken'); - } catch (e) { - console.error('Error in /api/untoken:', e); - } + console.error('Error creating payment intent:', data.error); } - }; + } catch (error) { + console.error('Error:', error); + } finally { + setLoading(false); + } + }; - fetchAccessToken().then(r => console.log(r)); - }, [user]); + const handlePaymentSuccess = () => { + setSelectedProduct(null); + setClientSecret(''); + setOrderId(''); + }; - if (isLoading) { - return ( -
-
-
-
-
-
-
-
- ); - } + const handleBackToProducts = () => { + setSelectedProduct(null); + setClientSecret(''); + setOrderId(''); + }; - if (error) { - return ( - - ); - } + const appearance = { + theme: 'stripe', + variables: { + colorPrimary: '#0570de', + colorBackground: '#ffffff', + colorText: '#30313d', + colorDanger: '#df1b41', + fontFamily: 'Ideal Sans, system-ui, sans-serif', + spacingUnit: '2px', + borderRadius: '4px', + }, + }; + + const options = { + clientSecret, + appearance, + }; return ( -
-
- {user ? ( -
-
-
- {user.picture ? ( - Profile - ) : ( -
- {user.name?.charAt(0) || user.email?.charAt(0) || '👤'} -
- )} -
-

- Just testing :P -

-
+
+
+

🛍️ Stripe Payment Demo

+

Select a product to purchase

+
-
-
-

- Auth Details -

+ {!selectedProduct ? ( +
+

Products

+
+ {products.map((product) => ( +
+

{product.name}

+

{product.description}

+

${(product.price / 100).toFixed(2)}

+
-
-
-
-
- -
- {user.name || 'Not provided'} -
-
-
- -
- {user.email || 'Not provided'} -
-
-
- -
- {user.sub || 'Not available'} -
-
- {user.nickname && ( -
- -
- {user.nickname} -
-
- )} -
- -
- -
-
-                                                {JSON.stringify(user, null, 2)}
-                                            
-
-
-
-
-
- - +
+ ) : ( +
+
+

Order Summary

+
+

Product: {selectedProduct.name}

+

Order ID: {orderId}

+

Amount: ${(selectedProduct.price / 100).toFixed(2)}

- ) : ( -
- )} -
+ + {clientSecret && ( + + + + )} + + +
+ )}
); } \ No newline at end of file From 28fc4327053c5a2cc861157c62163203cab23ace Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Sat, 21 Jun 2025 23:35:52 +0300 Subject: [PATCH 4/5] Teeny weeny cleanup --- .../Commands/Categories/DeleteCategoryHandler.cs | 2 +- src/Imprink.Application/MappingProfile.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs b/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs index 7101db7..2f82a93 100644 --- a/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs +++ b/src/Imprink.Application/Commands/Categories/DeleteCategoryHandler.cs @@ -4,7 +4,7 @@ namespace Imprink.Application.Commands.Categories; public class DeleteCategoryCommand : IRequest { - public Guid Id { get; set; } + public Guid Id { get; init; } } public class DeleteCategoryHandler(IUnitOfWork unitOfWork) : IRequestHandler diff --git a/src/Imprink.Application/MappingProfile.cs b/src/Imprink.Application/MappingProfile.cs index 9391d58..c1d1235 100644 --- a/src/Imprink.Application/MappingProfile.cs +++ b/src/Imprink.Application/MappingProfile.cs @@ -2,4 +2,4 @@ using AutoMapper; namespace Imprink.Application; -public abstract class MappingProfile : Profile { } \ No newline at end of file +public abstract class MappingProfile : Profile; \ No newline at end of file From 42131a2d1bbefbda875165305311a17efd920a97 Mon Sep 17 00:00:00 2001 From: lumijiez <59575049+lumijiez@users.noreply.github.com> Date: Sat, 21 Jun 2025 23:37:23 +0300 Subject: [PATCH 5/5] remove secret --- webui/src/app/page.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/src/app/page.js b/webui/src/app/page.js index a204683..e14237a 100644 --- a/webui/src/app/page.js +++ b/webui/src/app/page.js @@ -6,7 +6,7 @@ import { Elements } from '@stripe/react-stripe-js'; import PaymentForm from './components/PaymentForm'; import './globals.css'; -const stripePromise = loadStripe('pk_test_51RaxJBRrcXIyofFGYIfUxzWTLPBfr1A0f2VBjo0lOjHfTBtyVpJKBjVUJ972p5AytGl4LBrgQccwHkp6EYu4liln00vEAf2D4e'); +const stripePromise = loadStripe(''); const products = [ { id: '1', name: 'Premium Widget', price: 2999, description: 'High-quality widget for professionals' },