Added mapper
This commit is contained in:
		| @@ -6,7 +6,7 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService | |||||||
|     public interface IRegisterService |     public interface IRegisterService | ||||||
|     { |     { | ||||||
|         /// Handle <see cref="RegisterApplicantRequest"/> |         /// Handle <see cref="RegisterApplicantRequest"/> | ||||||
|         Task Register(RegisterApplicantRequest request, CancellationToken cancellationToken); |         Task RegisterApplicant(RegisterApplicantRequest request, CancellationToken cancellationToken); | ||||||
|  |  | ||||||
|         /// Handles <see cref="RegisterRequest"/> and adds approving authority account |         /// Handles <see cref="RegisterRequest"/> and adds approving authority account | ||||||
|         Task RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken); |         Task RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken); | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ using ApplicationLayer.Services.Applicants.NeededServices; | |||||||
| using ApplicationLayer.Services.AuthServices.NeededServices; | using ApplicationLayer.Services.AuthServices.NeededServices; | ||||||
| using ApplicationLayer.Services.AuthServices.RegisterService.Exceptions; | using ApplicationLayer.Services.AuthServices.RegisterService.Exceptions; | ||||||
| using ApplicationLayer.Services.AuthServices.Requests; | using ApplicationLayer.Services.AuthServices.Requests; | ||||||
|  | using AutoMapper; | ||||||
| using Domains.ApplicantDomain; | using Domains.ApplicantDomain; | ||||||
| using Domains.Users; | using Domains.Users; | ||||||
|  |  | ||||||
| @@ -12,9 +13,10 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService | |||||||
|     public class RegisterService( |     public class RegisterService( | ||||||
|         IUsersRepository users, |         IUsersRepository users, | ||||||
|         IApplicantsRepository applicants, |         IApplicantsRepository applicants, | ||||||
|         IUnitOfWork unitOfWork) : IRegisterService |         IUnitOfWork unitOfWork, | ||||||
|  |         IMapper mapper) : IRegisterService | ||||||
|     { |     { | ||||||
|         async Task IRegisterService.Register(RegisterApplicantRequest request, CancellationToken cancellationToken) |         async Task IRegisterService.RegisterApplicant(RegisterApplicantRequest request, CancellationToken cancellationToken) | ||||||
|         { |         { | ||||||
|             //todo move to validation layer |             //todo move to validation layer | ||||||
|             if (await users.FindByEmailAsync(request.Email, cancellationToken) is not null) |             if (await users.FindByEmailAsync(request.Email, cancellationToken) is not null) | ||||||
| @@ -22,8 +24,8 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService | |||||||
|                 throw new UserAlreadyExistsException(request); |                 throw new UserAlreadyExistsException(request); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             //TODO mapper |             var user = mapper.Map<User>(request); | ||||||
|             var user = new User { Email = request.Email, Password = request.Password, Role = Role.Applicant }; |             user.Role = Role.Applicant; | ||||||
|  |  | ||||||
|             var applicant = new Applicant |             var applicant = new Applicant | ||||||
|             { |             { | ||||||
| @@ -58,8 +60,8 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService | |||||||
|                 throw new UserAlreadyExistsException(request); |                 throw new UserAlreadyExistsException(request); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             //TODO mapper |             var user = mapper.Map<User>(request); | ||||||
|             var user = new User { Email = request.Email, Password = request.Password, Role = Role.ApprovingAuthority }; |             user.Role = Role.ApprovingAuthority; | ||||||
|  |  | ||||||
|             await users.AddAsync(user, cancellationToken); |             await users.AddAsync(user, cancellationToken); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ using ApplicationLayer.Services.VisaApplications.Exceptions; | |||||||
| using ApplicationLayer.Services.VisaApplications.Models; | using ApplicationLayer.Services.VisaApplications.Models; | ||||||
| using ApplicationLayer.Services.VisaApplications.NeededServices; | using ApplicationLayer.Services.VisaApplications.NeededServices; | ||||||
| using ApplicationLayer.Services.VisaApplications.Requests; | using ApplicationLayer.Services.VisaApplications.Requests; | ||||||
|  | using AutoMapper; | ||||||
| using Domains.VisaApplicationDomain; | using Domains.VisaApplicationDomain; | ||||||
|  |  | ||||||
| namespace ApplicationLayer.Services.VisaApplications.Handlers; | namespace ApplicationLayer.Services.VisaApplications.Handlers; | ||||||
| @@ -13,13 +14,14 @@ namespace ApplicationLayer.Services.VisaApplications.Handlers; | |||||||
| public class VisaApplicationRequestsHandler( | public class VisaApplicationRequestsHandler( | ||||||
|     IVisaApplicationsRepository applications, |     IVisaApplicationsRepository applications, | ||||||
|     IApplicantsRepository applicants, |     IApplicantsRepository applicants, | ||||||
|     IUnitOfWork unitOfWork) : IVisaApplicationRequestsHandler |     IUnitOfWork unitOfWork, | ||||||
|  |     IMapper mapper, | ||||||
|  |     IDateTimeProvider dateTimeProvider) : IVisaApplicationRequestsHandler | ||||||
| { | { | ||||||
|     async Task<List<VisaApplicationModelForAuthority>> IVisaApplicationRequestsHandler.GetAllAsync(CancellationToken cancellationToken) |     async Task<List<VisaApplicationModelForAuthority>> IVisaApplicationRequestsHandler.GetAllAsync(CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
|         var applicationsList = await applications.GetAllAsync(cancellationToken); |         var applicationsList = await applications.GetAllAsync(cancellationToken); | ||||||
|  |  | ||||||
|         //todo mapper |  | ||||||
|         var applicationModels = applicationsList |         var applicationModels = applicationsList | ||||||
|             .Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result) |             .Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result) | ||||||
|             .ToList(); |             .ToList(); | ||||||
| @@ -30,85 +32,28 @@ public class VisaApplicationRequestsHandler( | |||||||
|         CancellationToken cancellationToken) |         CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
|         var applicant = await applicants.GetByIdAsync(visaApplication.ApplicantId, cancellationToken); |         var applicant = await applicants.GetByIdAsync(visaApplication.ApplicantId, cancellationToken); | ||||||
|         var applicantModel = new ApplicantModel |         var applicantModel = mapper.Map<ApplicantModel>(applicant); | ||||||
|         { |  | ||||||
|             Citizenship = applicant.Citizenship, |         var model = mapper.Map<VisaApplicationModelForAuthority>(visaApplication); | ||||||
|             Gender = applicant.Gender, |         model.Applicant = applicantModel; | ||||||
|             Name = applicant.Name, |  | ||||||
|             Passport = applicant.Passport, |         return model; | ||||||
|             BirthDate = applicant.BirthDate, |  | ||||||
|             FatherName = applicant.FatherName, |  | ||||||
|             JobTitle = applicant.JobTitle, |  | ||||||
|             MaritalStatus = applicant.MaritalStatus, |  | ||||||
|             MotherName = applicant.MotherName, |  | ||||||
|             CitizenshipByBirth = applicant.CitizenshipByBirth, |  | ||||||
|             CityOfBirth = applicant.CityOfBirth, |  | ||||||
|             CountryOfBirth = applicant.CountryOfBirth, |  | ||||||
|             IsNonResident = applicant.IsNonResident, |  | ||||||
|             PlaceOfWork = applicant.PlaceOfWork, |  | ||||||
|         }; |  | ||||||
|         return new VisaApplicationModelForAuthority |  | ||||||
|         { |  | ||||||
|             PastVisits = visaApplication.PastVisits, |  | ||||||
|             ReentryPermit = visaApplication.ReentryPermit, |  | ||||||
|             VisaCategory = visaApplication.VisaCategory, |  | ||||||
|             PermissionToDestCountry = visaApplication.PermissionToDestCountry, |  | ||||||
|             DestinationCountry = visaApplication.DestinationCountry, |  | ||||||
|             PastVisas = visaApplication.PastVisas, |  | ||||||
|             RequestDate = visaApplication.RequestDate, |  | ||||||
|             ValidDaysRequested = visaApplication.ValidDaysRequested, |  | ||||||
|             RequestedNumberOfEntries = visaApplication.RequestedNumberOfEntries, |  | ||||||
|             ForGroup = visaApplication.ForGroup, |  | ||||||
|             Applicant = applicantModel, |  | ||||||
|             Id = visaApplication.Id, |  | ||||||
|             Status = visaApplication.Status |  | ||||||
|         }; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public async Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(Guid userId, CancellationToken cancellationToken) |     public async Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(Guid userId, CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
|         //todo mapper |  | ||||||
|         var applicantId = await applicants.GetApplicantIdByUserId(userId, cancellationToken); |         var applicantId = await applicants.GetApplicantIdByUserId(userId, cancellationToken); | ||||||
|         var visaApplications = await applications.GetOfApplicantAsync(applicantId, cancellationToken); |         var visaApplications = await applications.GetOfApplicantAsync(applicantId, cancellationToken); | ||||||
|         return visaApplications.Select(va => new VisaApplicationModelForApplicant |         return mapper.Map<List<VisaApplicationModelForApplicant>>(visaApplications); | ||||||
|             { |  | ||||||
|                 DestinationCountry = va.DestinationCountry, |  | ||||||
|                 ValidDaysRequested = va.ValidDaysRequested, |  | ||||||
|                 ReentryPermit = va.ReentryPermit, |  | ||||||
|                 VisaCategory = va.VisaCategory, |  | ||||||
|                 RequestedNumberOfEntries = va.RequestedNumberOfEntries, |  | ||||||
|                 PermissionToDestCountry = va.PermissionToDestCountry, |  | ||||||
|                 ForGroup = va.ForGroup, |  | ||||||
|                 PastVisas = va.PastVisas, |  | ||||||
|                 RequestDate = va.RequestDate, |  | ||||||
|                 PastVisits = va.PastVisits, |  | ||||||
|                 Id = va.Id, |  | ||||||
|                 Status = va.Status |  | ||||||
|             }) |  | ||||||
|             .ToList(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public async Task HandleCreateRequestAsync(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken) |     public async Task HandleCreateRequestAsync(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken) | ||||||
|     { |     { | ||||||
|         //TODO mapper |  | ||||||
|  |  | ||||||
|         var applicant = await applicants.FindByUserIdAsync(userId, cancellationToken); |         var applicant = await applicants.FindByUserIdAsync(userId, cancellationToken); | ||||||
|  |  | ||||||
|         var visaApplication = new VisaApplication |         var visaApplication = mapper.Map<VisaApplication>(request); | ||||||
|         { |         visaApplication.RequestDate = dateTimeProvider.Now(); | ||||||
|             ApplicantId = applicant.Id, |         visaApplication.ApplicantId = applicant.Id; | ||||||
|             RequestedNumberOfEntries = request.RequestedNumberOfEntries, |  | ||||||
|             ValidDaysRequested = request.ValidDaysRequested, |  | ||||||
|             ReentryPermit = request.ReentryPermit, |  | ||||||
|             VisaCategory = request.VisaCategory, |  | ||||||
|             PermissionToDestCountry = request.PermissionToDestCountry, |  | ||||||
|             DestinationCountry = request.DestinationCountry, |  | ||||||
|             PastVisas = request.PastVisas.ToList(), |  | ||||||
|             PastVisits = request.PastVisits.ToList(), |  | ||||||
|             ForGroup = request.IsForGroup, |  | ||||||
|             RequestDate = DateTime.Today, |  | ||||||
|             Status = ApplicationStatus.Pending |  | ||||||
|         }; |  | ||||||
|  |  | ||||||
|         await applications.AddAsync(visaApplication, cancellationToken); |         await applications.AddAsync(visaApplication, cancellationToken); | ||||||
|  |  | ||||||
| @@ -138,7 +83,7 @@ public class VisaApplicationRequestsHandler( | |||||||
|             throw new ApplicationAlreadyProcessedException(); |             throw new ApplicationAlreadyProcessedException(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         //todo mapper |         //todo handle exception or not | ||||||
|         ApplicationStatus statusToSet = status switch |         ApplicationStatus statusToSet = status switch | ||||||
|         { |         { | ||||||
|             AuthorityRequestStatuses.Approved => ApplicationStatus.Approved, |             AuthorityRequestStatuses.Approved => ApplicationStatus.Approved, | ||||||
|   | |||||||
| @@ -6,4 +6,8 @@ | |||||||
|         <Nullable>enable</Nullable> |         <Nullable>enable</Nullable> | ||||||
|     </PropertyGroup> |     </PropertyGroup> | ||||||
|  |  | ||||||
|  |     <ItemGroup> | ||||||
|  |       <PackageReference Include="AutoMapper" Version="13.0.1" /> | ||||||
|  |     </ItemGroup> | ||||||
|  |  | ||||||
| </Project> | </Project> | ||||||
|   | |||||||
| @@ -0,0 +1,14 @@ | |||||||
|  | using ApplicationLayer.Services.Applicants.Models; | ||||||
|  | using AutoMapper; | ||||||
|  | using Domains.ApplicantDomain; | ||||||
|  |  | ||||||
|  | namespace Infrastructure.Automapper.Profiles | ||||||
|  | { | ||||||
|  |     public class ApplicantProfile : Profile | ||||||
|  |     { | ||||||
|  |         public ApplicantProfile() | ||||||
|  |         { | ||||||
|  |             CreateMap<Applicant, ApplicantModel>(MemberList.Destination); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,20 @@ | |||||||
|  | using ApplicationLayer.Services.AuthServices.Requests; | ||||||
|  | using AutoMapper; | ||||||
|  | using Domains.Users; | ||||||
|  |  | ||||||
|  | namespace Infrastructure.Automapper.Profiles | ||||||
|  | { | ||||||
|  |     public class UserProfile : Profile | ||||||
|  |     { | ||||||
|  |         public UserProfile() | ||||||
|  |         { | ||||||
|  |             CreateMap<RegisterApplicantRequest, User>(MemberList.Destination) | ||||||
|  |                 .ForMember(u => u.Role, | ||||||
|  |                     opts => opts.Ignore()); | ||||||
|  |  | ||||||
|  |             CreateMap<RegisterRequest, User>() | ||||||
|  |                 .ForMember(u => u.Role, | ||||||
|  |                     opts => opts.Ignore()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,25 @@ | |||||||
|  | using ApplicationLayer.Services.VisaApplications.Models; | ||||||
|  | using ApplicationLayer.Services.VisaApplications.Requests; | ||||||
|  | using AutoMapper; | ||||||
|  | using Domains.VisaApplicationDomain; | ||||||
|  |  | ||||||
|  | namespace Infrastructure.Automapper.Profiles | ||||||
|  | { | ||||||
|  |     public class VisaApplicationProfile : Profile | ||||||
|  |     { | ||||||
|  |         public VisaApplicationProfile() | ||||||
|  |         { | ||||||
|  |             CreateMap<VisaApplication, VisaApplicationModelForApplicant>(MemberList.Destination); | ||||||
|  |  | ||||||
|  |             CreateMap<VisaApplication, VisaApplicationModelForAuthority>(MemberList.Destination) | ||||||
|  |                 .ForMember(model => model.Applicant, | ||||||
|  |                     opts => opts.Ignore()); | ||||||
|  |  | ||||||
|  |             CreateMap<VisaApplicationCreateRequest, VisaApplication>(MemberList.Destination) | ||||||
|  |                 .ForMember(va => va.RequestDate, | ||||||
|  |                 opts => opts.Ignore()) | ||||||
|  |                 .ForMember(va => va.ApplicantId, | ||||||
|  |                 opts => opts.Ignore()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,4 +1,5 @@ | |||||||
| using ApplicationLayer.InfrastructureServicesInterfaces; | using System.Reflection; | ||||||
|  | using ApplicationLayer.InfrastructureServicesInterfaces; | ||||||
| using ApplicationLayer.Services.Applicants.NeededServices; | using ApplicationLayer.Services.Applicants.NeededServices; | ||||||
| using ApplicationLayer.Services.AuthServices.NeededServices; | using ApplicationLayer.Services.AuthServices.NeededServices; | ||||||
| using ApplicationLayer.Services.VisaApplications.NeededServices; | using ApplicationLayer.Services.VisaApplications.NeededServices; | ||||||
| @@ -37,6 +38,8 @@ public static class DependencyInjection | |||||||
|  |  | ||||||
|         services.AddSingleton<IDateTimeProvider, DateTimeProvider>(); |         services.AddSingleton<IDateTimeProvider, DateTimeProvider>(); | ||||||
|  |  | ||||||
|  |         services.AddAutoMapper(Assembly.GetExecutingAssembly()); | ||||||
|  |  | ||||||
|         return services; |         return services; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ namespace SchengenVisaApi.Controllers | |||||||
|         [Route("register")] |         [Route("register")] | ||||||
|         public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) |         public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken) | ||||||
|         { |         { | ||||||
|             await registerService.Register(request, cancellationToken); |             await registerService.RegisterApplicant(request, cancellationToken); | ||||||
|             return Ok(); |             return Ok(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -62,6 +62,7 @@ namespace SchengenVisaApi.Controllers | |||||||
|         [ProducesResponseType(StatusCodes.Status401Unauthorized)] |         [ProducesResponseType(StatusCodes.Status401Unauthorized)] | ||||||
|         [Route("authorities")] |         [Route("authorities")] | ||||||
|         [Authorize(policy: PolicyConstants.AdminPolicy)] |         [Authorize(policy: PolicyConstants.AdminPolicy)] | ||||||
|  |         //todo return models | ||||||
|         public async Task<IActionResult> GetAuthorityAccounts(CancellationToken cancellationToken) |         public async Task<IActionResult> GetAuthorityAccounts(CancellationToken cancellationToken) | ||||||
|         { |         { | ||||||
|             var result = await authorityService.GetAuthoritiesAccountsAsync(cancellationToken); |             var result = await authorityService.GetAuthoritiesAccountsAsync(cancellationToken); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user