Added mapper
This commit is contained in:
@@ -6,7 +6,7 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService
|
||||
public interface IRegisterService
|
||||
{
|
||||
/// 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
|
||||
Task RegisterAuthority(RegisterRequest request, CancellationToken cancellationToken);
|
||||
|
||||
@@ -3,6 +3,7 @@ using ApplicationLayer.Services.Applicants.NeededServices;
|
||||
using ApplicationLayer.Services.AuthServices.NeededServices;
|
||||
using ApplicationLayer.Services.AuthServices.RegisterService.Exceptions;
|
||||
using ApplicationLayer.Services.AuthServices.Requests;
|
||||
using AutoMapper;
|
||||
using Domains.ApplicantDomain;
|
||||
using Domains.Users;
|
||||
|
||||
@@ -12,9 +13,10 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService
|
||||
public class RegisterService(
|
||||
IUsersRepository users,
|
||||
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
|
||||
if (await users.FindByEmailAsync(request.Email, cancellationToken) is not null)
|
||||
@@ -22,8 +24,8 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService
|
||||
throw new UserAlreadyExistsException(request);
|
||||
}
|
||||
|
||||
//TODO mapper
|
||||
var user = new User { Email = request.Email, Password = request.Password, Role = Role.Applicant };
|
||||
var user = mapper.Map<User>(request);
|
||||
user.Role = Role.Applicant;
|
||||
|
||||
var applicant = new Applicant
|
||||
{
|
||||
@@ -58,8 +60,8 @@ namespace ApplicationLayer.Services.AuthServices.RegisterService
|
||||
throw new UserAlreadyExistsException(request);
|
||||
}
|
||||
|
||||
//TODO mapper
|
||||
var user = new User { Email = request.Email, Password = request.Password, Role = Role.ApprovingAuthority };
|
||||
var user = mapper.Map<User>(request);
|
||||
user.Role = Role.ApprovingAuthority;
|
||||
|
||||
await users.AddAsync(user, cancellationToken);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ using ApplicationLayer.Services.VisaApplications.Exceptions;
|
||||
using ApplicationLayer.Services.VisaApplications.Models;
|
||||
using ApplicationLayer.Services.VisaApplications.NeededServices;
|
||||
using ApplicationLayer.Services.VisaApplications.Requests;
|
||||
using AutoMapper;
|
||||
using Domains.VisaApplicationDomain;
|
||||
|
||||
namespace ApplicationLayer.Services.VisaApplications.Handlers;
|
||||
@@ -13,13 +14,14 @@ namespace ApplicationLayer.Services.VisaApplications.Handlers;
|
||||
public class VisaApplicationRequestsHandler(
|
||||
IVisaApplicationsRepository applications,
|
||||
IApplicantsRepository applicants,
|
||||
IUnitOfWork unitOfWork) : IVisaApplicationRequestsHandler
|
||||
IUnitOfWork unitOfWork,
|
||||
IMapper mapper,
|
||||
IDateTimeProvider dateTimeProvider) : IVisaApplicationRequestsHandler
|
||||
{
|
||||
async Task<List<VisaApplicationModelForAuthority>> IVisaApplicationRequestsHandler.GetAllAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var applicationsList = await applications.GetAllAsync(cancellationToken);
|
||||
|
||||
//todo mapper
|
||||
var applicationModels = applicationsList
|
||||
.Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result)
|
||||
.ToList();
|
||||
@@ -30,85 +32,28 @@ public class VisaApplicationRequestsHandler(
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var applicant = await applicants.GetByIdAsync(visaApplication.ApplicantId, cancellationToken);
|
||||
var applicantModel = new ApplicantModel
|
||||
{
|
||||
Citizenship = applicant.Citizenship,
|
||||
Gender = applicant.Gender,
|
||||
Name = applicant.Name,
|
||||
Passport = applicant.Passport,
|
||||
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
|
||||
};
|
||||
var applicantModel = mapper.Map<ApplicantModel>(applicant);
|
||||
|
||||
var model = mapper.Map<VisaApplicationModelForAuthority>(visaApplication);
|
||||
model.Applicant = applicantModel;
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
public async Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(Guid userId, CancellationToken cancellationToken)
|
||||
{
|
||||
//todo mapper
|
||||
var applicantId = await applicants.GetApplicantIdByUserId(userId, cancellationToken);
|
||||
var visaApplications = await applications.GetOfApplicantAsync(applicantId, cancellationToken);
|
||||
return visaApplications.Select(va => new VisaApplicationModelForApplicant
|
||||
{
|
||||
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();
|
||||
return mapper.Map<List<VisaApplicationModelForApplicant>>(visaApplications);
|
||||
}
|
||||
|
||||
public async Task HandleCreateRequestAsync(Guid userId, VisaApplicationCreateRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
//TODO mapper
|
||||
|
||||
var applicant = await applicants.FindByUserIdAsync(userId, cancellationToken);
|
||||
|
||||
var visaApplication = new 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
|
||||
};
|
||||
var visaApplication = mapper.Map<VisaApplication>(request);
|
||||
visaApplication.RequestDate = dateTimeProvider.Now();
|
||||
visaApplication.ApplicantId = applicant.Id;
|
||||
|
||||
await applications.AddAsync(visaApplication, cancellationToken);
|
||||
|
||||
@@ -138,7 +83,7 @@ public class VisaApplicationRequestsHandler(
|
||||
throw new ApplicationAlreadyProcessedException();
|
||||
}
|
||||
|
||||
//todo mapper
|
||||
//todo handle exception or not
|
||||
ApplicationStatus statusToSet = status switch
|
||||
{
|
||||
AuthorityRequestStatuses.Approved => ApplicationStatus.Approved,
|
||||
|
||||
@@ -6,4 +6,8 @@
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</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.AuthServices.NeededServices;
|
||||
using ApplicationLayer.Services.VisaApplications.NeededServices;
|
||||
@@ -37,6 +38,8 @@ public static class DependencyInjection
|
||||
|
||||
services.AddSingleton<IDateTimeProvider, DateTimeProvider>();
|
||||
|
||||
services.AddAutoMapper(Assembly.GetExecutingAssembly());
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace SchengenVisaApi.Controllers
|
||||
[Route("register")]
|
||||
public async Task<IActionResult> Register(RegisterApplicantRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
await registerService.Register(request, cancellationToken);
|
||||
await registerService.RegisterApplicant(request, cancellationToken);
|
||||
return Ok();
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ namespace SchengenVisaApi.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
|
||||
[Route("authorities")]
|
||||
[Authorize(policy: PolicyConstants.AdminPolicy)]
|
||||
//todo return models
|
||||
public async Task<IActionResult> GetAuthorityAccounts(CancellationToken cancellationToken)
|
||||
{
|
||||
var result = await authorityService.GetAuthoritiesAccountsAsync(cancellationToken);
|
||||
|
||||
Reference in New Issue
Block a user