├── .gitattributes ├── .gitignore ├── 01. Users Microservice ├── 01. Creating Users Microservice │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DependencyInjection.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 02. Exception Handling Middleware │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DependencyInjection.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 03. Users Models │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 04. Users Repository │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 05. Users Service │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 06. Users Controller │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 07. Postman │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 08. AutoMapper - Part 1 │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ └── ApplicationUserMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 09. AutoMapper - Part 2 │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ └── ApplicationUserMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 10. AutoMapper Assignment Solution │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 10. AutoMapper Assignment │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 11. Postgres │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 12. Intro to Dapper │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 13. Dapper ExecuteAsync │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 14. Dapper QueryAsync │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 15. FluentValidation │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ └── LoginRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 16. FluentValidation Assignment Solution │ ├── .dockerignore │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 17. GitHub Repository │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 18. Swagger │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln └── 19. Angular Client App │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── app.routes.ts │ │ ├── components │ │ │ ├── login │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ └── register │ │ │ │ ├── register.component.css │ │ │ │ ├── register.component.html │ │ │ │ ├── register.component.spec.ts │ │ │ │ └── register.component.ts │ │ ├── models │ │ │ ├── authentication-response.ts │ │ │ ├── register.ts │ │ │ └── user.ts │ │ ├── products │ │ │ └── show-case │ │ │ │ ├── show-case.component.css │ │ │ │ ├── show-case.component.html │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ └── show-case.component.ts │ │ └── services │ │ │ └── users.service.ts │ ├── assets │ │ └── .gitkeep │ ├── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 02. Products Microservice ├── 01. Creating Products Microservice Solution │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ └── BusinessLogicLayer.csproj │ ├── DataAccessLayer │ │ └── DataAccessLayer.csproj │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 02. Boilerplate Code │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ └── DependencyInjection.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 03. MySQL │ └── MySQL Script.sql ├── 04. Products DbContext │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ └── Entities │ │ │ └── Product.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 05. Products Repository │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 06. Products Service Contract │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ └── ServiceContracts │ │ │ └── IProductsService.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 07. Products Fluent Validation │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 08. Products AutoMapper │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 09. Products Service │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 10. Products Service Assignment Solution │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 11. Minimal API Endpoints │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 12. Minimal API Endpoints Assignment │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 13. Testing API Endpoints - Part 1 │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 14. Testing API Endpoints - Part 2 │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 15. Swagger │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.ProductsService.sln ├── 16. Products Angular UI │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json └── 17. GitHub Repository for Products Microservice │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ ├── BusinessLogicLayer.csproj │ ├── DTO │ │ ├── CategoryOptions.cs │ │ ├── ProductAddRequest.cs │ │ ├── ProductResponse.cs │ │ └── ProductUpdateRequest.cs │ ├── DependencyInjection.cs │ ├── Mappers │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ ├── ProductToProductResponseMappingProfile.cs │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ ├── ServiceContracts │ │ └── IProductsService.cs │ ├── Services │ │ └── ProductsService.cs │ └── Validators │ │ ├── ProductAddRequestValidator.cs │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ ├── Context │ │ └── ApplicationDbContext.cs │ ├── DataAccessLayer.csproj │ ├── DependencyInjection.cs │ ├── Entities │ │ └── Product.cs │ ├── Repositories │ │ └── ProductsRepository.cs │ └── RepositoryContracts │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ ├── APIEndpoints │ │ └── ProductAPIEndpoints.cs │ ├── Dockerfile │ ├── Middleware │ │ └── ExceptionHandlingMiddleware.cs │ ├── ProductsMicroService.API.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── appsettings.Development.json │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln ├── 03. Docker ├── 01. Connection String with Environment Variables │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln └── 02. MySQL Startup Script │ └── db.sql ├── 04. Docker Compose ├── 01. YAML File - Part 1 │ └── docker-compose.yaml ├── 02. YAML File - Part 2 │ └── docker-compose.yaml ├── 03. Docker Compose Commands │ └── docker-compose.yaml ├── 04. Connection String in Users Microservice │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 05. Pushing Users Microservice Docker Image │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ └── AuthController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ └── RegisterRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln └── 06. Adding Users Microservice to Docker Compose │ ├── docker-compose.yaml │ ├── sql1.sql │ └── sql2.sql ├── 05. Orders Microservice ├── 01. Creating Orders Microservice Assignment Solution │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ └── DependencyInjection.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 02. Adding MongoDB │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ └── DependencyInjection.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 03. Order Entities │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ └── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 04. Orders Repository │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 05. Order DTO │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ └── DependencyInjection.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 06. Orders Service Contract │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ └── ServiceContracts │ │ │ └── IOrdersService.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 07. Order Validators │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 08. Order Mappers │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 09. Orders Service - Part 1 │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 10. Orders Service - Part 2 │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 11. Orders Endpoints │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 12. Orders CUD Endpoints Assignment Solution │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ └── OrderUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 13. MongoDB Startup Script │ └── init.js └── 14. Testing Orders Endpoints │ ├── .dockerignore │ ├── BusinessLogicLayer │ ├── BusinessLogicLayer.csproj │ ├── DTO │ │ ├── OrderAdddRequest.cs │ │ ├── OrderItemAddRequest.cs │ │ ├── OrderItemResponse.cs │ │ ├── OrderItemUpdateRequest.cs │ │ ├── OrderResponse.cs │ │ └── OrderUpdateRequest.cs │ ├── DependencyInjection.cs │ ├── Mappers │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ ├── ServiceContracts │ │ └── IOrdersService.cs │ ├── Services │ │ └── OrdersService.cs │ └── Validators │ │ ├── OrderAddRequestValidator.cs │ │ ├── OrderItemAddRequestValidator.cs │ │ ├── OrderItemUpdateRequestValidator.cs │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ ├── DataAccessLayer.csproj │ ├── DependencyInjection.cs │ ├── Entities │ │ ├── Order.cs │ │ └── OrderItem.cs │ ├── Repositories │ │ └── OrdersRepository.cs │ └── RepositoryContracts │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ ├── ApiControllers │ │ └── OrdersController.cs │ ├── Dockerfile │ ├── Middleware │ │ └── ExceptionHandlingMiddleware.cs │ ├── OrdersMicroservice.API.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── appsettings.Development.json │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 06. Microservice Communication ├── 01. GetUserByUserID Endpoint │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln ├── 02. Custom HttpClient Service │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 03. Microservice Communication using HttpClient │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── eCommerceSolution.OrdersService.sln ├── 04. GetProductByProductID Endpoint │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln ├── 05. Docker Compose in Visual Studio - Part 1 │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ └── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln ├── 06. Docker Compose in Visual Studio - Part 2 │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ └── mongodb-init │ │ └── init.js ├── 07. Docker Compose in Visual Studio - Part 3 │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 08. Debugging Microservices in Visual Sudio │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 09. Validating ProductID - Assignment Solution │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ └── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 10. Loading Product Details - Assignment Solution │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ └── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 11. Loading User Details - Assignment Solution │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql └── 12. Frontend with Orders │ └── frontend │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.config.ts │ │ ├── app.routes.ts │ │ ├── components │ │ │ ├── admin-orders │ │ │ │ ├── admin-orders.component.css │ │ │ │ ├── admin-orders.component.html │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ └── admin-orders.component.ts │ │ │ ├── cart │ │ │ │ ├── cart.component.css │ │ │ │ ├── cart.component.html │ │ │ │ ├── cart.component.spec.ts │ │ │ │ └── cart.component.ts │ │ │ ├── delete-product │ │ │ │ ├── delete-product.component.css │ │ │ │ ├── delete-product.component.html │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ └── delete-product.component.ts │ │ │ ├── edit-product │ │ │ │ ├── edit-product.component.css │ │ │ │ ├── edit-product.component.html │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ └── edit-product.component.ts │ │ │ ├── login │ │ │ │ ├── login.component.css │ │ │ │ ├── login.component.html │ │ │ │ ├── login.component.spec.ts │ │ │ │ └── login.component.ts │ │ │ ├── new-product │ │ │ │ ├── new-product.component.css │ │ │ │ ├── new-product.component.html │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ └── new-product.component.ts │ │ │ ├── orders │ │ │ │ ├── orders.component.css │ │ │ │ ├── orders.component.html │ │ │ │ ├── orders.component.spec.ts │ │ │ │ └── orders.component.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ ├── register │ │ │ │ ├── register.component.css │ │ │ │ ├── register.component.html │ │ │ │ ├── register.component.spec.ts │ │ │ │ └── register.component.ts │ │ │ ├── search │ │ │ │ ├── search.component.css │ │ │ │ ├── search.component.html │ │ │ │ ├── search.component.spec.ts │ │ │ │ └── search.component.ts │ │ │ └── show-case │ │ │ │ ├── show-case.component.css │ │ │ │ ├── show-case.component.html │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ └── show-case.component.ts │ │ ├── models │ │ │ ├── authentication-response.ts │ │ │ ├── cart-item.ts │ │ │ ├── new-order-item-request.ts │ │ │ ├── new-order-request.ts │ │ │ ├── new-product-request.ts │ │ │ ├── order-item-response.ts │ │ │ ├── order-response.ts │ │ │ ├── product-response.ts │ │ │ ├── product-update-request.ts │ │ │ ├── register.ts │ │ │ └── user.ts │ │ └── services │ │ │ ├── cart.service.ts │ │ │ ├── products.service.ts │ │ │ └── users.service.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── catalog.png │ │ ├── email.png │ │ ├── empty-cart.png │ │ ├── empty.png │ │ └── user.png │ ├── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── 07. Fault Tolerance ├── 01. WaitAndRetry │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 02. Policy Services │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 03. Exponential Backoff │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 04. Fault Data │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 05. Circuit Breakers │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 06. BrokenCircuitException │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 07. Fallback │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 08. Timeout │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 09. TimeoutRejectedException │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 10. Bulkhead Isolation │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 11. Combined Policy │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql └── 12. Fault Tolerance Assignment Solution │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── cart-item.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mysql-init │ └── db.sql │ └── postgres-init │ ├── sql1.sql │ └── sql2.sql ├── 08. Caching ├── 01. Redis Docker Image │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 02. Redis NuGet Package │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 03. Reading from Cache │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 04. Writing to Cache │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 05. ServiceUnavailable Response │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb └── 06. Redis Cache Assignment Solution │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── cart-item.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 09. API Gateway using Ocelot ├── 01. Ocelot NuGet Package │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 02. ocelot.json │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 03. API Gateway with Docker Compose │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 04. ocelot.json All Routes │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 05. Microservice Communication with API Gateway │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 06. Frontend with API Gateway │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 07. Polly with Ocelot │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 08. Rate Limits │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb └── 09. Response Caching │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── ApiGatway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── cart-item.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 10. RabbitMQ ├── 01. RabbitMQ Docker Image │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 02. RabbitMQ NuGet Package │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 03. RabbitMQ Connection │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 04. Publisher Class │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 05. Invoking Publisher Class │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 06. Consumer Class │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 07. Received Event │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 08. Hosted Service │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 09. Product Deletion Assignment │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 10. Product Deletion Assignment Solution │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 11. Fanout Exchange │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 12. Topic Exchange │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 13. Headers Exchange │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── ApiGatway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb └── 14. Products Cache Invalidation Assignment Solution │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── ApiGatway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln │ ├── frontend │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── cart-item.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 11. Azure ├── 01. Azure CLI Setup │ └── Commands.sh ├── 02. Resource Group │ └── Commands.sh ├── 03. Demo Web API App │ ├── .dockerignore │ ├── DemoWebApplication │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── DemoWebApplication.csproj │ │ ├── DemoWebApplication.http │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── DemoWebApplicationSolution.sln ├── 04. Azure Container Registry │ └── Commands.sh ├── 05. AppService │ ├── .dockerignore │ ├── Commands.sh │ ├── DemoWebApplication │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── DemoWebApplication.csproj │ │ ├── DemoWebApplication.http │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── DemoWebApplicationSolution.sln │ └── logs.zip └── 06. Azure Container Apps │ └── Commands.sh ├── 12. AKS ├── 01. Creating AKS Cluster │ └── Commands - Creating AKS Cluster.sh ├── 02. kubectl Basic Commands │ └── Basic Commands.sh ├── 03. Deployment Manifests │ ├── .dockerignore │ ├── DemoWebApplication │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── DemoWebApplication.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── deployment.yaml │ ├── DemoWebApplicationSolution.sln │ └── Deployment Commands.sh ├── 04. Service Manifests │ ├── .dockerignore │ ├── DemoWebApplication │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── DemoWebApplication.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ ├── deployment.yaml │ │ └── service.yaml │ ├── DemoWebApplicationSolution.sln │ └── Service Commands.sh ├── 05. Pushing Microservice Images to ACR │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 06. Deployment Manifests for Microservices │ ├── Deployment Manifests for Microservices - Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mysql-deployment.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── postgres-deployment.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── redis-deployment.yaml │ │ └── users-microservice-deployment.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 07. Troubleshooting Pods - Part 1 │ └── Microservices Commands.sh ├── 08. Service Manifests for Microservices │ ├── Microservices Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 09. Troubleshooting Pods - Part 2 │ ├── Microservices Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 10. Zero Down Time Rollout │ ├── Docker Image Cases.txt │ ├── Microservices Commands.sh │ ├── Rollout Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql └── 11. Kubernetes Secrets │ ├── Secrets Commands.sh │ ├── aks │ ├── Docker Image Cases.txt │ ├── apigateway-deployment.yaml │ ├── apigateway.service.yaml │ ├── mongodb-deployment.yaml │ ├── mongodb.service.yaml │ ├── mysql-deployment.yaml │ ├── mysql.service.yaml │ ├── orders-microservice-deployment.yaml │ ├── orders-microservice.service.yaml │ ├── postgres-deployment.yaml │ ├── postgres.service.yaml │ ├── products-microservice-deployment.yaml │ ├── products-microservice.service.yaml │ ├── rabbitmq-deployment.yaml │ ├── rabbitmq.secret.yaml │ ├── rabbitmq.service.yaml │ ├── redis-deployment.yaml │ ├── redis.service.yaml │ ├── users-microservice-deployment.yaml │ └── users-microservice.service.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── README.md │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ ├── Dockerfile │ └── mongodb-init │ │ └── init.js │ ├── mysql │ ├── Dockerfile │ └── mysql-init │ │ └── db.sql │ └── postgres │ ├── Dockerfile │ └── postgres-init │ ├── sql1.sql │ └── sql2.sql ├── 13. Azure DevOps CI CD Pipelines ├── 01. Parallelism Request for Pipelines │ └── Parallelism Request Link.txt ├── 02. Creating Azure Pipeline │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker compose commands.sh │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 03. Understanding Pipeline YAML │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 04. Running the Pipeline │ └── azure-pipelines.yml ├── 05. Adding Tests to Repo │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 06. Adding Tests to Pipeline - Part 1 │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 07. Adding Tests to Pipeline - Part 2 │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ └── eCommerceSolution.ProductsService.sln │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 08. Dev Deployment │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ └── deployment.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 09. Other Env Deployments - Assignment Solution - Part 1 │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ └── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 10. Other Env Deployments - Assignment Solution - Part 2 │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 11. Variable Groups │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 12. Orders Microservice Pipeline Assignment Solution │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ └── eCommerceSolution.UsersService.sln │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql ├── 13. Users Pipeline Assignment Solution │ ├── aks │ │ ├── Docker Image Cases.txt │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ └── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql └── 14. Azure Key Vault │ ├── Key Vault Commands.sh │ ├── aks │ ├── Docker Image Cases.txt │ ├── apigateway-deployment.yaml │ ├── apigateway.service.yaml │ ├── mongodb-deployment.yaml │ ├── mongodb.service.yaml │ ├── mysql-deployment.yaml │ ├── mysql.service.yaml │ ├── orders-microservice-deployment.yaml │ ├── orders-microservice.service.yaml │ ├── postgres-deployment.yaml │ ├── postgres.service.yaml │ ├── products-microservice-deployment.yaml │ ├── products-microservice.service.yaml │ ├── rabbitmq-deployment.yaml │ ├── rabbitmq.secret.yaml │ ├── rabbitmq.service.yaml │ ├── redis-deployment.yaml │ ├── redis.service.yaml │ ├── users-microservice-deployment.yaml │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── OrdersUnitTests │ │ ├── OrdersUnitTests.csproj │ │ └── UnitTest1.cs │ ├── README.md │ ├── azure-pipelines.yml │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ ├── k8s │ │ ├── dev │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── prod │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── qa │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── staging │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ └── uat │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ProductsUnitTests │ │ ├── ProductsServiceTests.cs │ │ └── ProductsUnitTests.csproj │ ├── README.md │ ├── azure-pipelines.yml │ ├── eCommerceSolution.ProductsService.sln │ └── k8s │ │ ├── dev │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-dev-deployment.yaml │ │ ├── products-microservice-dev-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── prod │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-prod-deployment.yaml │ │ ├── products-microservice-prod-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── qa │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-qa-deployment.yaml │ │ ├── products-microservice-qa-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── staging │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-staging-deployment.yaml │ │ ├── products-microservice-staging-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ └── uat │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-uat-deployment.yaml │ │ ├── products-microservice-uat-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── UsersUnitTests │ │ ├── UnitTest1.cs │ │ └── UsersUnitTests.csproj │ ├── azure-pipelines.yml │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ ├── eCommerceSolution.UsersService.sln │ └── k8s │ │ ├── dev │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── prod │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── qa │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── staging │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ └── uat │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ ├── mongodb │ ├── Dockerfile │ └── mongodb-init │ │ └── init.js │ ├── mysql │ ├── Dockerfile │ └── mysql-init │ │ └── db.sql │ └── postgres │ ├── Dockerfile │ └── postgres-init │ ├── sql1.sql │ └── sql2.sql ├── 14. Azure API Management ├── 01. Creating APIs using OpenAPI Template │ ├── orders-microservice-api.json │ ├── products-microservice-api.json │ └── users-microservice-api.json ├── 02. Updating NuGet Packages │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-piepilines-backup.yaml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yaml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── login │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── register │ │ │ │ │ │ ├── register.component.css │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── authentication-response.ts │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb └── 03. Frontend App with APIM │ ├── aks │ ├── apigateway-deployment.yaml │ ├── apigateway.service.yaml │ ├── mongodb-deployment.yaml │ ├── mongodb.service.yaml │ ├── mysql-deployment.yaml │ ├── mysql.service.yaml │ ├── orders-microservice-deployment.yaml │ ├── orders-microservice.service.yaml │ ├── postgres-deployment.yaml │ ├── postgres.service.yaml │ ├── products-microservice-deployment.yaml │ ├── products-microservice.service.yaml │ ├── rabbitmq-deployment.yaml │ ├── rabbitmq.secret.yaml │ ├── rabbitmq.service.yaml │ ├── redis-deployment.yaml │ ├── redis.service.yaml │ ├── users-microservice-deployment.yaml │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── OrdersUnitTests │ │ ├── OrdersUnitTests.csproj │ │ └── UnitTest1.cs │ ├── README.md │ ├── azure-pipelines-backup.yaml │ ├── azure-pipelines.yml │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ ├── k8s │ │ ├── dev │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── prod │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── qa │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── staging │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ └── uat │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ProductsUnitTests │ │ ├── ProductsServiceTests.cs │ │ └── ProductsUnitTests.csproj │ ├── README.md │ ├── azure-piepilines-backup.yaml │ ├── azure-pipelines.yml │ ├── eCommerceSolution.ProductsService.sln │ └── k8s │ │ ├── dev │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-dev-deployment.yaml │ │ ├── products-microservice-dev-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── prod │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-prod-deployment.yaml │ │ ├── products-microservice-prod-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── qa │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-qa-deployment.yaml │ │ ├── products-microservice-qa-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── staging │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-staging-deployment.yaml │ │ ├── products-microservice-staging-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ └── uat │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-uat-deployment.yaml │ │ ├── products-microservice-uat-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── UsersUnitTests │ │ ├── UnitTest1.cs │ │ └── UsersUnitTests.csproj │ ├── azure-pipelines-backup.yaml │ ├── azure-pipelines.yml │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ ├── eCommerceSolution.UsersService.sln │ └── k8s │ │ ├── dev │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── prod │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── qa │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── staging │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ └── uat │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ ├── frontend │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── login │ │ │ │ │ ├── login.component.css │ │ │ │ │ ├── login.component.html │ │ │ │ │ ├── login.component.spec.ts │ │ │ │ │ └── login.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── register │ │ │ │ │ ├── register.component.css │ │ │ │ │ ├── register.component.html │ │ │ │ │ ├── register.component.spec.ts │ │ │ │ │ └── register.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── authentication-response.ts │ │ │ │ ├── cart-item.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mongodb │ ├── Dockerfile │ └── mongodb-init │ │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── mysql │ ├── Dockerfile │ └── mysql-init │ │ └── db.sql │ ├── policies.txt │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ ├── postgres │ ├── Dockerfile │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 15. Microsoft Entra ID - B2C Authentication ├── 01. Angular App Config │ └── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ └── favicon.ico │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── claim-utils.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── cart-item.ts │ │ │ │ ├── claim.ts │ │ │ │ ├── environment-configuration.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── login.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json ├── 02. Setting-up Admin User │ └── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ └── favicon.ico │ │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── claim-utils.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── cart-item.ts │ │ │ │ ├── claim.ts │ │ │ │ ├── environment-configuration.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── login.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json ├── 03. Validating B2C JWT Token in APIM │ └── policies.txt ├── 04. Removing DB initializers │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yaml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 05. Microsoft.Graph Package in Users Microservice │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yaml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 06. Graph API Configuration in Users Microservice │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yaml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yaml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb └── 07. Graph API GetAsync │ ├── aks │ ├── apigateway-deployment.yaml │ ├── apigateway.service.yaml │ ├── mongodb-deployment.yaml │ ├── mongodb.service.yaml │ ├── mysql-deployment.yaml │ ├── mysql.service.yaml │ ├── orders-microservice-deployment.yaml │ ├── orders-microservice.service.yaml │ ├── postgres-deployment.yaml │ ├── postgres.service.yaml │ ├── products-microservice-deployment.yaml │ ├── products-microservice.service.yaml │ ├── rabbitmq-deployment.yaml │ ├── rabbitmq.secret.yaml │ ├── rabbitmq.service.yaml │ ├── redis-deployment.yaml │ ├── redis.service.yaml │ ├── users-microservice-deployment.yaml │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── OrdersUnitTests │ │ ├── OrdersUnitTests.csproj │ │ └── UnitTest1.cs │ ├── README.md │ ├── azure-pipelines.yaml │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ ├── k8s │ │ ├── dev │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── prod │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── qa │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── staging │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ └── uat │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ProductsUnitTests │ │ ├── ProductsServiceTests.cs │ │ └── ProductsUnitTests.csproj │ ├── README.md │ ├── azure-pipelines.yaml │ ├── eCommerceSolution.ProductsService.sln │ └── k8s │ │ ├── dev │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-dev-deployment.yaml │ │ ├── products-microservice-dev-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── prod │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-prod-deployment.yaml │ │ ├── products-microservice-prod-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── qa │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-qa-deployment.yaml │ │ ├── products-microservice-qa-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── staging │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-staging-deployment.yaml │ │ ├── products-microservice-staging-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ └── uat │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-uat-deployment.yaml │ │ ├── products-microservice-uat-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── UsersUnitTests │ │ ├── UnitTest1.cs │ │ └── UsersUnitTests.csproj │ ├── azure-pipelines.yaml │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ ├── eCommerceSolution.UsersService.sln │ └── k8s │ │ ├── dev │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── prod │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── qa │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── staging │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ └── uat │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ ├── frontend │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── claim-utils.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── cart-item.ts │ │ │ │ ├── claim.ts │ │ │ │ ├── environment-configuration.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── login.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mongodb │ ├── Dockerfile │ └── mongodb-init │ │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── mysql │ ├── Dockerfile │ └── mysql-init │ │ └── db.sql │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ ├── postgres │ ├── Dockerfile │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 16. Azure ServiceBus ├── 01. Creating Service Bus Namespace │ └── ServiceBus Commands.sh ├── 02. Product Updation Topic Publisher - Part 1 │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 03. Product Updation Topic Publisher - Part 2 │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 04. Product Updation Topic Subscriber - Part 1 │ ├── Complete Steps.yaml │ ├── Subscription Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateConsumer.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 05. Product Updation Topic Subscriber - Part 2 │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 06. Debugging Service Bus │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 07. RabbitMQ Connection Startup Issue - Assignment Solution │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── IRabbitMQProductUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 08. RabbitMQ.Client Version 7 Upgrade │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── IRabbitMQProductUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 09. Product Deletion Topic - Assignment Solution │ ├── Complete Steps.yaml │ ├── Product Deletion ServiceBus Commands.sh │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── IRabbitMQProductUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductDeletionConsumer.cs │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductDeletionConsumer.cs │ │ │ │ ├── ServiceBusProductDeletionHostedService.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ └── ServiceBusProductUpdateHostedService.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 10. Order Placed Topic - Assignment Solution │ ├── Complete Steps.yaml │ ├── aks │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway.service.yaml │ │ ├── mongodb-deployment.yaml │ │ ├── mongodb.service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql.service.yaml │ │ ├── orders-microservice-deployment.yaml │ │ ├── orders-microservice.service.yaml │ │ ├── postgres-deployment.yaml │ │ ├── postgres.service.yaml │ │ ├── products-microservice-deployment.yaml │ │ ├── products-microservice.service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq.secret.yaml │ │ ├── rabbitmq.service.yaml │ │ ├── redis-deployment.yaml │ │ ├── redis.service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── ApiGatway │ │ │ ├── ApiGateway.csproj │ │ │ ├── Dockerfile │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── ocelot.json │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderAdddRequest.cs │ │ │ │ ├── OrderItemAddRequest.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── OrderUpdateRequest.cs │ │ │ │ ├── ProductDTO.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── HttpClients │ │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ │ └── UsersMicroserviceClient.cs │ │ │ ├── Mappers │ │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ │ ├── Policies │ │ │ │ ├── IPollyPolicies.cs │ │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ │ ├── PollyPolicies.cs │ │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ │ └── UsersMicroservicePolicies.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── IRabbitMQProductUpdateConsumer.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ │ ├── RabbitMQProductNameUpdateHostedService.cs │ │ │ │ ├── RabbitMQProductUpdateConsumer.cs │ │ │ │ └── RabbitMQProductUpdateHostedService.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusProductDeletionConsumer.cs │ │ │ │ ├── IServiceBusProductUpdateConsumer.cs │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ ├── ServiceBusProductDeletionConsumer.cs │ │ │ │ ├── ServiceBusProductDeletionHostedService.cs │ │ │ │ ├── ServiceBusProductUpdateConsumer.cs │ │ │ │ ├── ServiceBusProductUpdateHostedService.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IOrdersService.cs │ │ │ ├── Services │ │ │ │ └── OrdersService.cs │ │ │ └── Validators │ │ │ │ ├── OrderAddRequestValidator.cs │ │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ │ └── OrderUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ ├── Order.cs │ │ │ │ └── OrderItem.cs │ │ │ ├── Repositories │ │ │ │ └── OrdersRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IOrdersRepository.cs │ │ ├── OrdersMicroservice.API │ │ │ ├── ApiControllers │ │ │ │ └── OrdersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── OrdersMicroservice.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── OrdersUnitTests │ │ │ ├── OrdersUnitTests.csproj │ │ │ └── UnitTest1.cs │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── docker-compose.dcproj │ │ ├── docker-compose.override.yml │ │ ├── docker-compose.yml │ │ ├── eCommerceSolution.OrdersService.sln │ │ ├── k8s │ │ │ ├── dev │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── prod │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── qa │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ ├── staging │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ │ └── uat │ │ │ │ ├── mongodb-deployment.yaml │ │ │ │ ├── mongodb-service.yaml │ │ │ │ ├── orders-microservice-deployment.yaml │ │ │ │ └── orders-microservice-service.yaml │ │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── BusinessLogicLayer │ │ │ ├── BusinessLogicLayer.csproj │ │ │ ├── DTO │ │ │ │ ├── CategoryOptions.cs │ │ │ │ ├── OrderItemResponse.cs │ │ │ │ ├── OrderResponse.cs │ │ │ │ ├── ProductAddRequest.cs │ │ │ │ ├── ProductResponse.cs │ │ │ │ └── ProductUpdateRequest.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Mappers │ │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ │ ├── RabbitMQ │ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ │ ├── ProductDeletionMessage.cs │ │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ │ └── RabbitMQPublisher.cs │ │ │ ├── ServiceBus │ │ │ │ ├── IServiceBusOrderPlacedConsumer.cs │ │ │ │ ├── IServiceBusPublisher.cs │ │ │ │ ├── ServiceBusOrderPlacedConsumer.cs │ │ │ │ ├── ServiceBusOrderPlacedHostedService.cs │ │ │ │ └── ServiceBusPublisher.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IProductsService.cs │ │ │ ├── Services │ │ │ │ └── ProductsService.cs │ │ │ └── Validators │ │ │ │ ├── ProductAddRequestValidator.cs │ │ │ │ └── ProductUpdateRequestValidator.cs │ │ ├── DataAccessLayer │ │ │ ├── Context │ │ │ │ └── ApplicationDbContext.cs │ │ │ ├── DataAccessLayer.csproj │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── Product.cs │ │ │ ├── Repositories │ │ │ │ └── ProductsRepository.cs │ │ │ └── RepositoryContracts │ │ │ │ └── IProductsRepository.cs │ │ ├── ProductsMicroService.API │ │ │ ├── APIEndpoints │ │ │ │ └── ProductAPIEndpoints.cs │ │ │ ├── Dockerfile │ │ │ ├── Middleware │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── ProductsMicroService.API.csproj │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ └── appsettings.json │ │ ├── ProductsUnitTests │ │ │ ├── ProductsServiceTests.cs │ │ │ └── ProductsUnitTests.csproj │ │ ├── README.md │ │ ├── azure-pipelines.yml │ │ ├── eCommerceSolution.ProductsService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-dev-deployment.yaml │ │ │ ├── products-microservice-dev-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── prod │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-prod-deployment.yaml │ │ │ ├── products-microservice-prod-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── qa │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-qa-deployment.yaml │ │ │ ├── products-microservice-qa-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ ├── staging │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-staging-deployment.yaml │ │ │ ├── products-microservice-staging-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ │ │ └── uat │ │ │ ├── apigateway-deployment.yaml │ │ │ ├── apigateway-service.yaml │ │ │ ├── mysql-deployment.yaml │ │ │ ├── mysql-service.yaml │ │ │ ├── products-microservice-uat-deployment.yaml │ │ │ ├── products-microservice-uat-service.yaml │ │ │ ├── rabbitmq-deployment.yaml │ │ │ ├── rabbitmq-service.yaml │ │ │ ├── redis-deployment.yaml │ │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ │ ├── .dockerignore │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── README.md │ │ ├── UsersUnitTests │ │ │ ├── UnitTest1.cs │ │ │ └── UsersUnitTests.csproj │ │ ├── azure-pipelines.yml │ │ ├── eCommerce.API │ │ │ ├── Controllers │ │ │ │ ├── AuthController.cs │ │ │ │ └── UsersController.cs │ │ │ ├── Dockerfile │ │ │ ├── Middlewares │ │ │ │ └── ExceptionHandlingMiddleware.cs │ │ │ ├── Program.cs │ │ │ ├── Properties │ │ │ │ └── launchSettings.json │ │ │ ├── appsettings.Development.json │ │ │ ├── appsettings.json │ │ │ └── eCommerce.API.csproj │ │ ├── eCommerce.Core │ │ │ ├── DTO │ │ │ │ ├── AuthenticationResponse.cs │ │ │ │ ├── GenderOptions.cs │ │ │ │ ├── LoginRequest.cs │ │ │ │ ├── RegisterRequest.cs │ │ │ │ └── UserDTO.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Entities │ │ │ │ └── ApplicationUser.cs │ │ │ ├── Mappers │ │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ │ └── RegisterRequestMappingProfile.cs │ │ │ ├── RepositoryContracts │ │ │ │ └── IUsersRepository.cs │ │ │ ├── ServiceContracts │ │ │ │ └── IUsersService.cs │ │ │ ├── Services │ │ │ │ └── UsersService.cs │ │ │ ├── Validators │ │ │ │ ├── LoginRequestValidator.cs │ │ │ │ └── RegisterRequestValidator.cs │ │ │ └── eCommerce.Core.csproj │ │ ├── eCommerce.Infrastructure │ │ │ ├── DbContext │ │ │ │ └── DapperDbContext.cs │ │ │ ├── DependencyInjection.cs │ │ │ ├── Repositories │ │ │ │ └── UsersRepository.cs │ │ │ └── eCommerce.Infrastructure.csproj │ │ ├── eCommerceSolution.UsersService.sln │ │ └── k8s │ │ │ ├── dev │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── prod │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── qa │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ ├── staging │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ │ │ └── uat │ │ │ ├── postgres-deployment.yaml │ │ │ ├── postgres-service.yaml │ │ │ ├── users-microservice-deployment.yaml │ │ │ └── users-microservice-service.yaml │ ├── frontend │ │ ├── .dockerignore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ │ └── favicon.ico │ │ ├── src │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.config.ts │ │ │ │ ├── app.routes.ts │ │ │ │ ├── claim-utils.ts │ │ │ │ ├── components │ │ │ │ │ ├── admin-orders │ │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── cart.component.css │ │ │ │ │ │ ├── cart.component.html │ │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ │ └── cart.component.ts │ │ │ │ │ ├── delete-product │ │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ │ └── delete-product.component.ts │ │ │ │ │ ├── edit-product │ │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ │ └── edit-product.component.ts │ │ │ │ │ ├── new-product │ │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ │ └── new-product.component.ts │ │ │ │ │ ├── orders │ │ │ │ │ │ ├── orders.component.css │ │ │ │ │ │ ├── orders.component.html │ │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ │ └── orders.component.ts │ │ │ │ │ ├── products │ │ │ │ │ │ ├── products.component.css │ │ │ │ │ │ ├── products.component.html │ │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ │ └── products.component.ts │ │ │ │ │ ├── search │ │ │ │ │ │ ├── search.component.css │ │ │ │ │ │ ├── search.component.html │ │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ │ └── search.component.ts │ │ │ │ │ └── show-case │ │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ │ └── show-case.component.ts │ │ │ │ ├── models │ │ │ │ │ ├── cart-item.ts │ │ │ │ │ ├── claim.ts │ │ │ │ │ ├── environment-configuration.ts │ │ │ │ │ ├── new-order-item-request.ts │ │ │ │ │ ├── new-order-request.ts │ │ │ │ │ ├── new-product-request.ts │ │ │ │ │ ├── order-item-response.ts │ │ │ │ │ ├── order-response.ts │ │ │ │ │ ├── product-response.ts │ │ │ │ │ ├── product-update-request.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ └── user.ts │ │ │ │ └── services │ │ │ │ │ ├── cart.service.ts │ │ │ │ │ ├── login.service.ts │ │ │ │ │ ├── products.service.ts │ │ │ │ │ └── users.service.ts │ │ │ ├── assets │ │ │ │ ├── .gitkeep │ │ │ │ ├── catalog.png │ │ │ │ ├── email.png │ │ │ │ ├── empty-cart.png │ │ │ │ ├── empty.png │ │ │ │ └── user.png │ │ │ ├── environment.ts │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── mongodb-init │ │ └── init.js │ ├── mongodb │ │ ├── Dockerfile │ │ └── mongodb-init │ │ │ └── init.js │ ├── mysql-init │ │ └── db.sql │ ├── mysql │ │ ├── Dockerfile │ │ └── mysql-init │ │ │ └── db.sql │ ├── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ ├── postgres │ │ ├── Dockerfile │ │ └── postgres-init │ │ │ ├── sql1.sql │ │ │ └── sql2.sql │ └── redis-cache │ │ └── dump.rdb ├── 11. Dead Letter Queue Assignment Solution │ └── DLQExampleSolution │ │ ├── DLQExample │ │ ├── DLQExample.csproj │ │ └── Program.cs │ │ └── DLQExampleSolution.sln ├── 12. Service Bus Filters │ └── Filter Commands.sh └── 13. Service Bus Transactions │ ├── DLQExampleSolution │ ├── DLQExample │ │ ├── DLQExample.csproj │ │ └── Program.cs │ └── DLQExampleSolution.sln │ └── Transactions Topic Commands.sh ├── 17. Extra - Optional ├── 01. Self Hosted Agents in Azure DevOps │ └── Self Hosted Agent Pool.sh └── 02. Complete Steps │ ├── Complete Steps.yaml │ ├── aks │ ├── apigateway-deployment.yaml │ ├── apigateway.service.yaml │ ├── mongodb-deployment.yaml │ ├── mongodb.service.yaml │ ├── mysql-deployment.yaml │ ├── mysql.service.yaml │ ├── orders-microservice-deployment.yaml │ ├── orders-microservice.service.yaml │ ├── postgres-deployment.yaml │ ├── postgres.service.yaml │ ├── products-microservice-deployment.yaml │ ├── products-microservice.service.yaml │ ├── rabbitmq-deployment.yaml │ ├── rabbitmq.secret.yaml │ ├── rabbitmq.service.yaml │ ├── redis-deployment.yaml │ ├── redis.service.yaml │ ├── users-microservice-deployment.yaml │ └── users-microservice.service.yaml │ ├── docker-compose.build.yaml │ ├── eCommerceSolution.OrdersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── ApiGatway │ │ ├── ApiGateway.csproj │ │ ├── Dockerfile │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── ocelot.json │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── OrderAdddRequest.cs │ │ │ ├── OrderItemAddRequest.cs │ │ │ ├── OrderItemResponse.cs │ │ │ ├── OrderItemUpdateRequest.cs │ │ │ ├── OrderResponse.cs │ │ │ ├── OrderUpdateRequest.cs │ │ │ ├── ProductDTO.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── HttpClients │ │ │ ├── ProductsMicroserviceClient.cs │ │ │ └── UsersMicroserviceClient.cs │ │ ├── Mappers │ │ │ ├── OrderAddRequestToOrderMappingProfile.cs │ │ │ ├── OrderItemAddRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderItemToOrderItemResponseMappingProfile.cs │ │ │ ├── OrderItemUpdateRequestToOrderItemMappingProfile.cs │ │ │ ├── OrderToOrderResponseMappingProfile.cs │ │ │ ├── OrderUpdateRequestToOrderMappingProfile.cs │ │ │ ├── ProductDTOToOrderItemResponseMappingProfile.cs │ │ │ └── UserDTOToOrderResponseMappingProfile.cs │ │ ├── Policies │ │ │ ├── IPollyPolicies.cs │ │ │ ├── IProductsMicroservicePolicies.cs │ │ │ ├── IUsersMicroservicePolicies.cs │ │ │ ├── PollyPolicies.cs │ │ │ ├── ProductsMicroservicePolicies.cs │ │ │ └── UsersMicroservicePolicies.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQProductDeletionConsumer.cs │ │ │ ├── IRabbitMQProductNameUpdateConsumer.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ ├── RabbitMQProductDeletionConsumer.cs │ │ │ ├── RabbitMQProductDeletionHostedService.cs │ │ │ ├── RabbitMQProductNameUpdateConsumer.cs │ │ │ └── RabbitMQProductNameUpdateHostedService.cs │ │ ├── ServiceContracts │ │ │ └── IOrdersService.cs │ │ ├── Services │ │ │ └── OrdersService.cs │ │ └── Validators │ │ │ ├── OrderAddRequestValidator.cs │ │ │ ├── OrderItemAddRequestValidator.cs │ │ │ ├── OrderItemUpdateRequestValidator.cs │ │ │ └── OrderUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ ├── Order.cs │ │ │ └── OrderItem.cs │ │ ├── Repositories │ │ │ └── OrdersRepository.cs │ │ └── RepositoryContracts │ │ │ └── IOrdersRepository.cs │ ├── OrdersMicroservice.API │ │ ├── ApiControllers │ │ │ └── OrdersController.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── OrdersMicroservice.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── OrdersUnitTests │ │ ├── OrdersUnitTests.csproj │ │ └── UnitTest1.cs │ ├── README.md │ ├── azure-pipelines-backup.yaml │ ├── azure-pipelines.yml │ ├── docker-compose.dcproj │ ├── docker-compose.override.yml │ ├── docker-compose.yml │ ├── eCommerceSolution.OrdersService.sln │ ├── k8s │ │ ├── dev │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── prod │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── qa │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ ├── staging │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ │ └── uat │ │ │ ├── mongodb-deployment.yaml │ │ │ ├── mongodb-service.yaml │ │ │ ├── orders-microservice-deployment.yaml │ │ │ └── orders-microservice-service.yaml │ └── launchSettings.json │ ├── eCommerceSolution.ProductsService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── BusinessLogicLayer │ │ ├── BusinessLogicLayer.csproj │ │ ├── DTO │ │ │ ├── CategoryOptions.cs │ │ │ ├── ProductAddRequest.cs │ │ │ ├── ProductResponse.cs │ │ │ └── ProductUpdateRequest.cs │ │ ├── DependencyInjection.cs │ │ ├── Mappers │ │ │ ├── ProductAddRequestToProductMappingProfile.cs │ │ │ ├── ProductToProductResponseMappingProfile.cs │ │ │ └── ProductUpdateRequestToProductMappingProfile.cs │ │ ├── RabbitMQ │ │ │ ├── IRabbitMQPublisher.cs │ │ │ ├── ProductDeletionMessage.cs │ │ │ ├── ProductNameUpdateMessage.cs │ │ │ └── RabbitMQPublisher.cs │ │ ├── ServiceContracts │ │ │ └── IProductsService.cs │ │ ├── Services │ │ │ └── ProductsService.cs │ │ └── Validators │ │ │ ├── ProductAddRequestValidator.cs │ │ │ └── ProductUpdateRequestValidator.cs │ ├── DataAccessLayer │ │ ├── Context │ │ │ └── ApplicationDbContext.cs │ │ ├── DataAccessLayer.csproj │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── Product.cs │ │ ├── Repositories │ │ │ └── ProductsRepository.cs │ │ └── RepositoryContracts │ │ │ └── IProductsRepository.cs │ ├── ProductsMicroService.API │ │ ├── APIEndpoints │ │ │ └── ProductAPIEndpoints.cs │ │ ├── Dockerfile │ │ ├── Middleware │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── ProductsMicroService.API.csproj │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ ├── ProductsUnitTests │ │ ├── ProductsServiceTests.cs │ │ └── ProductsUnitTests.csproj │ ├── README.md │ ├── azure-piepilines-backup.yaml │ ├── azure-pipelines.yml │ ├── eCommerceSolution.ProductsService.sln │ └── k8s │ │ ├── dev │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-dev-deployment.yaml │ │ ├── products-microservice-dev-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── prod │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-prod-deployment.yaml │ │ ├── products-microservice-prod-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── qa │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-qa-deployment.yaml │ │ ├── products-microservice-qa-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ ├── staging │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-staging-deployment.yaml │ │ ├── products-microservice-staging-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ │ └── uat │ │ ├── apigateway-deployment.yaml │ │ ├── apigateway-service.yaml │ │ ├── mysql-deployment.yaml │ │ ├── mysql-service.yaml │ │ ├── products-microservice-uat-deployment.yaml │ │ ├── products-microservice-uat-service.yaml │ │ ├── rabbitmq-deployment.yaml │ │ ├── rabbitmq-service.yaml │ │ ├── redis-deployment.yaml │ │ └── redis-service.yaml │ ├── eCommerceSolution.UsersService │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── README.md │ ├── UsersUnitTests │ │ ├── UnitTest1.cs │ │ └── UsersUnitTests.csproj │ ├── azure-pipelines-backup.yaml │ ├── azure-pipelines.yml │ ├── eCommerce.API │ │ ├── Controllers │ │ │ ├── AuthController.cs │ │ │ └── UsersController.cs │ │ ├── Dockerfile │ │ ├── Middlewares │ │ │ └── ExceptionHandlingMiddleware.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── launchSettings.json │ │ ├── appsettings.Development.json │ │ ├── appsettings.json │ │ └── eCommerce.API.csproj │ ├── eCommerce.Core │ │ ├── DTO │ │ │ ├── AuthenticationResponse.cs │ │ │ ├── GenderOptions.cs │ │ │ ├── LoginRequest.cs │ │ │ ├── RegisterRequest.cs │ │ │ └── UserDTO.cs │ │ ├── DependencyInjection.cs │ │ ├── Entities │ │ │ └── ApplicationUser.cs │ │ ├── Mappers │ │ │ ├── ApplicationUserMappingProfile.cs │ │ │ ├── ApplicationUserToUserDTOMappingProfile.cs │ │ │ └── RegisterRequestMappingProfile.cs │ │ ├── RepositoryContracts │ │ │ └── IUsersRepository.cs │ │ ├── ServiceContracts │ │ │ └── IUsersService.cs │ │ ├── Services │ │ │ └── UsersService.cs │ │ ├── Validators │ │ │ ├── LoginRequestValidator.cs │ │ │ └── RegisterRequestValidator.cs │ │ └── eCommerce.Core.csproj │ ├── eCommerce.Infrastructure │ │ ├── DbContext │ │ │ └── DapperDbContext.cs │ │ ├── DependencyInjection.cs │ │ ├── Repositories │ │ │ └── UsersRepository.cs │ │ └── eCommerce.Infrastructure.csproj │ ├── eCommerceSolution.UsersService.sln │ └── k8s │ │ ├── dev │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── prod │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── qa │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ ├── staging │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ │ └── uat │ │ ├── postgres-deployment.yaml │ │ ├── postgres-service.yaml │ │ ├── users-microservice-deployment.yaml │ │ └── users-microservice-service.yaml │ ├── frontend │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── package-lock.json │ ├── package.json │ ├── public │ │ └── favicon.ico │ ├── src │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── claim-utils.ts │ │ │ ├── components │ │ │ │ ├── admin-orders │ │ │ │ │ ├── admin-orders.component.css │ │ │ │ │ ├── admin-orders.component.html │ │ │ │ │ ├── admin-orders.component.spec.ts │ │ │ │ │ └── admin-orders.component.ts │ │ │ │ ├── cart │ │ │ │ │ ├── cart.component.css │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.spec.ts │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── delete-product │ │ │ │ │ ├── delete-product.component.css │ │ │ │ │ ├── delete-product.component.html │ │ │ │ │ ├── delete-product.component.spec.ts │ │ │ │ │ └── delete-product.component.ts │ │ │ │ ├── edit-product │ │ │ │ │ ├── edit-product.component.css │ │ │ │ │ ├── edit-product.component.html │ │ │ │ │ ├── edit-product.component.spec.ts │ │ │ │ │ └── edit-product.component.ts │ │ │ │ ├── new-product │ │ │ │ │ ├── new-product.component.css │ │ │ │ │ ├── new-product.component.html │ │ │ │ │ ├── new-product.component.spec.ts │ │ │ │ │ └── new-product.component.ts │ │ │ │ ├── orders │ │ │ │ │ ├── orders.component.css │ │ │ │ │ ├── orders.component.html │ │ │ │ │ ├── orders.component.spec.ts │ │ │ │ │ └── orders.component.ts │ │ │ │ ├── products │ │ │ │ │ ├── products.component.css │ │ │ │ │ ├── products.component.html │ │ │ │ │ ├── products.component.spec.ts │ │ │ │ │ └── products.component.ts │ │ │ │ ├── search │ │ │ │ │ ├── search.component.css │ │ │ │ │ ├── search.component.html │ │ │ │ │ ├── search.component.spec.ts │ │ │ │ │ └── search.component.ts │ │ │ │ └── show-case │ │ │ │ │ ├── show-case.component.css │ │ │ │ │ ├── show-case.component.html │ │ │ │ │ ├── show-case.component.spec.ts │ │ │ │ │ └── show-case.component.ts │ │ │ ├── models │ │ │ │ ├── cart-item.ts │ │ │ │ ├── claim.ts │ │ │ │ ├── environment-configuration.ts │ │ │ │ ├── new-order-item-request.ts │ │ │ │ ├── new-order-request.ts │ │ │ │ ├── new-product-request.ts │ │ │ │ ├── order-item-response.ts │ │ │ │ ├── order-response.ts │ │ │ │ ├── product-response.ts │ │ │ │ ├── product-update-request.ts │ │ │ │ ├── register.ts │ │ │ │ └── user.ts │ │ │ └── services │ │ │ │ ├── cart.service.ts │ │ │ │ ├── login.service.ts │ │ │ │ ├── products.service.ts │ │ │ │ └── users.service.ts │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ ├── catalog.png │ │ │ ├── email.png │ │ │ ├── empty-cart.png │ │ │ ├── empty.png │ │ │ └── user.png │ │ ├── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ └── styles.css │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── mongodb-init │ └── init.js │ ├── mongodb │ ├── Dockerfile │ └── mongodb-init │ │ └── init.js │ ├── mysql-init │ └── db.sql │ ├── mysql │ ├── Dockerfile │ └── mysql-init │ │ └── db.sql │ ├── postgres-init │ ├── sql1.sql │ └── sql2.sql │ ├── postgres │ ├── Dockerfile │ └── postgres-init │ │ ├── sql1.sql │ │ └── sql2.sql │ └── redis-cache │ └── dump.rdb ├── 18. Outro └── 01. Big Picture │ └── Architecture Link.txt └── README.md /.gitattributes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Harsha-Global/Dot-NET-Microservices-with-Azure-and-AKS/HEAD/.gitattributes -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Harsha-Global/Dot-NET-Microservices-with-Azure-and-AKS/HEAD/.gitignore -------------------------------------------------------------------------------- /01. Users Microservice/17. GitHub Repository/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /01. Users Microservice/18. Swagger/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /01. Users Microservice/19. Angular Client App/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01. Users Microservice/19. Angular Client App/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01. Users Microservice/19. Angular Client App/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01. Users Microservice/19. Angular Client App/src/app/products/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01. Users Microservice/19. Angular Client App/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/16. Products Angular UI/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02. Products Microservice/17. GitHub Repository for Products Microservice/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /03. Docker/01. Connection String with Environment Variables/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /04. Docker Compose/04. Connection String in Users Microservice/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /04. Docker Compose/05. Pushing Users Microservice Docker Image/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /04. Docker Compose/06. Adding Users Microservice to Docker Compose/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /06. Microservice Communication/01. GetUserByUserID Endpoint/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /06. Microservice Communication/04. GetProductByProductID Endpoint/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /06. Microservice Communication/07. Docker Compose in Visual Studio - Part 3/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /06. Microservice Communication/08. Debugging Microservices in Visual Sudio/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /06. Microservice Communication/09. Validating ProductID - Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /06. Microservice Communication/11. Loading User Details - Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06. Microservice Communication/12. Frontend with Orders/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/01. WaitAndRetry/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/02. Policy Services/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/03. Exponential Backoff/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/04. Fault Data/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/05. Circuit Breakers/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/06. BrokenCircuitException/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/07. Fallback/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/08. Timeout/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/09. TimeoutRejectedException/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/10. Bulkhead Isolation/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/11. Combined Policy/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07. Fault Tolerance/12. Fault Tolerance Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/01. Redis Docker Image/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/02. Redis NuGet Package/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/03. Reading from Cache/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/04. Writing to Cache/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/05. ServiceUnavailable Response/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08. Caching/06. Redis Cache Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/eCommerceSolution.OrdersService/ApiGatway/ocelot.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/01. Ocelot NuGet Package/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/02. ocelot.json/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/03. API Gateway with Docker Compose/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/04. ocelot.json All Routes/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/05. Microservice Communication with API Gateway/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/06. Frontend with API Gateway/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/07. Polly with Ocelot/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/08. Rate Limits/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09. API Gateway using Ocelot/09. Response Caching/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/01. RabbitMQ Docker Image/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/02. RabbitMQ NuGet Package/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/03. RabbitMQ Connection/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/04. Publisher Class/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/05. Invoking Publisher Class/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/06. Consumer Class/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/07. Received Event/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/08. Hosted Service/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/09. Product Deletion Assignment/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/10. Product Deletion Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/11. Fanout Exchange/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/12. Topic Exchange/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/13. Headers Exchange/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10. RabbitMQ/14. Products Cache Invalidation Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /11. Azure/01. Azure CLI Setup/Commands.sh: -------------------------------------------------------------------------------- 1 | az --version 2 | az login 3 | -------------------------------------------------------------------------------- /12. AKS/05. Pushing Microservice Images to ACR/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/05. Pushing Microservice Images to ACR/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/05. Pushing Microservice Images to ACR/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /12. AKS/06. Deployment Manifests for Microservices/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/06. Deployment Manifests for Microservices/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/06. Deployment Manifests for Microservices/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /12. AKS/08. Service Manifests for Microservices/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/08. Service Manifests for Microservices/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/08. Service Manifests for Microservices/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /12. AKS/09. Troubleshooting Pods - Part 2/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/09. Troubleshooting Pods - Part 2/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/09. Troubleshooting Pods - Part 2/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /12. AKS/10. Zero Down Time Rollout/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/10. Zero Down Time Rollout/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/10. Zero Down Time Rollout/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /12. AKS/11. Kubernetes Secrets/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /12. AKS/11. Kubernetes Secrets/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /12. AKS/11. Kubernetes Secrets/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/02. Creating Azure Pipeline/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/02. Creating Azure Pipeline/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/03. Understanding Pipeline YAML/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/05. Adding Tests to Repo/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/05. Adding Tests to Repo/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/06. Adding Tests to Pipeline - Part 1/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/07. Adding Tests to Pipeline - Part 2/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/08. Dev Deployment/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/08. Dev Deployment/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/08. Dev Deployment/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/11. Variable Groups/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/11. Variable Groups/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/11. Variable Groups/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/14. Azure Key Vault/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/14. Azure Key Vault/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/14. Azure Key Vault/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /13. Azure DevOps CI CD Pipelines/14. Azure Key Vault/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /14. Azure API Management/02. Updating NuGet Packages/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /14. Azure API Management/03. Frontend App with APIM/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/01. Angular App Config/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/02. Setting-up Admin User/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/04. Removing DB initializers/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/05. Microsoft.Graph Package in Users Microservice/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/05. Microsoft.Graph Package in Users Microservice/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/06. Graph API Configuration in Users Microservice/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/06. Graph API Configuration in Users Microservice/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /15. Microsoft Entra ID - B2C Authentication/07. Graph API GetAsync/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/02. Product Updation Topic Publisher - Part 1/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/03. Product Updation Topic Publisher - Part 2/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/04. Product Updation Topic Subscriber - Part 1/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/05. Product Updation Topic Subscriber - Part 2/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/06. Debugging Service Bus/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/07. RabbitMQ Connection Startup Issue - Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/07. RabbitMQ Connection Startup Issue - Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/07. RabbitMQ Connection Startup Issue - Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/08. RabbitMQ.Client Version 7 Upgrade/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/09. Product Deletion Topic - Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /16. Azure ServiceBus/10. Order Placed Topic - Assignment Solution/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/eCommerceSolution.OrdersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.OrdersService -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/eCommerceSolution.ProductsService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.ProductsService -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/eCommerceSolution.UsersService/README.md: -------------------------------------------------------------------------------- 1 | # eCommerceSolution.UsersService -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/admin-orders/admin-orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/cart/cart.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/delete-product/delete-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/edit-product/edit-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/new-product/new-product.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/orders/orders.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/products/products.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/search/search.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/app/components/show-case/show-case.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /17. Extra - Optional/02. Complete Steps/postgres/postgres-init/sql1.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE eCommerceUsers; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Harsha-Global/Dot-NET-Microservices-with-Azure-and-AKS/HEAD/README.md --------------------------------------------------------------------------------