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