Refactored and fixed errors
This commit is contained in:
		| @@ -0,0 +1,11 @@ | ||||
| using ApplicationLayer.VisaApplications.Requests; | ||||
| using Domains.VisaApplicationDomain; | ||||
|  | ||||
| namespace ApplicationLayer.VisaApplications.Handlers; | ||||
|  | ||||
| public interface IVisaApplicationsRequestHandler | ||||
| { | ||||
|     Task<List<VisaApplication>> Get(CancellationToken cancellationToken); | ||||
|  | ||||
|     void HandleCreateRequest(VisaApplicationCreateRequest request, CancellationToken cancellationToken); | ||||
| } | ||||
| @@ -1,14 +1,78 @@ | ||||
| using ApplicationLayer.Applicants; | ||||
| using ApplicationLayer.Locations.NeededServices; | ||||
| using ApplicationLayer.VisaApplications.Models; | ||||
| using ApplicationLayer.VisaApplications.NeededServices; | ||||
| using ApplicationLayer.VisaApplications.Requests; | ||||
| using Domains.ApplicantDomain; | ||||
| using Domains.VisaApplicationDomain; | ||||
|  | ||||
| namespace ApplicationLayer.VisaApplications.Handlers | ||||
| namespace ApplicationLayer.VisaApplications.Handlers; | ||||
|  | ||||
| /// Handles visa requests | ||||
| public class VisaApplicationRequestsHandler( | ||||
|     IVisaApplicationsRepository applications, | ||||
|     ICitiesRepository cities, | ||||
|     ICountriesRepository countries) : IVisaApplicationsRequestHandler | ||||
| { | ||||
|     /// Handles visa requests | ||||
|     public class VisaApplicationRequestsHandler(IApplicantsRepository) | ||||
|     { | ||||
|         public void HandleCreateRequest(CreateVisaApplicationRequest request) | ||||
|         { | ||||
|     public async Task<List<VisaApplication>> Get(CancellationToken cancellationToken) => await applications.GetAllAsync(cancellationToken); | ||||
|  | ||||
|         } | ||||
|     public async void HandleCreateRequest(VisaApplicationCreateRequest request, CancellationToken cancellationToken) | ||||
|     { | ||||
|         //TODO mapper | ||||
|         var cityOfBirth = await cities.GetByIdAsync(request.BirthCityId, cancellationToken); | ||||
|         var cityOfWork = await cities.GetByIdAsync(request.PlaceOfWork.Address.CityId, cancellationToken); | ||||
|  | ||||
|         var addressOfWork = new Address | ||||
|         { | ||||
|             City = cityOfWork, | ||||
|             Country = cityOfWork.Country, | ||||
|             Building = request.PlaceOfWork.Address.Building, | ||||
|             Street = request.PlaceOfWork.Address.Street | ||||
|         }; | ||||
|  | ||||
|         var applicant = new Applicant | ||||
|         { | ||||
|             MaritalStatus = request.MaritalStatus, | ||||
|             Name = request.FullName, | ||||
|             Passport = request.Passport, | ||||
|             Gender = request.Gender, | ||||
|             Citizenship = request.CitizenShip, | ||||
|             BirthDate = request.BirthDate, | ||||
|             FatherName = request.FatherName, | ||||
|             JobTitle = request.JobTitle, | ||||
|             MotherName = request.MotherName, | ||||
|             CitizenshipByBirth = request.CitizenshipByBirth, | ||||
|             CityOfBirth = cityOfBirth, | ||||
|             CountryOfBirth = cityOfBirth.Country, | ||||
|             IsNonResident = request.IsNonResident, | ||||
|             PlaceOfWork = new PlaceOfWork { Address = addressOfWork, Name = request.PlaceOfWork.Name, PhoneNum = request.PlaceOfWork.PhoneNum } | ||||
|         }; | ||||
|  | ||||
|         var pastVisits = request.PastVisits.Select(m => ConvertPastVisitModelToPastVisit(m, cancellationToken).Result).ToList(); | ||||
|         var visaApplication = new VisaApplication | ||||
|         { | ||||
|             Applicant = applicant, | ||||
|             RequestedNumberOfEntries = request.RequestedNumberOfEntries, | ||||
|             ValidDaysRequested = request.ValidDaysRequested, | ||||
|             ReentryPermit = request.ReentryPermit, | ||||
|             VisaCategory = request.VisaCategory, | ||||
|             PermissionToDestCountry = request.PermissionToDestCountry, | ||||
|             DestinationCountry = await countries.GetByIdAsync(request.DestinationCountryId, cancellationToken), | ||||
|             PastVisas = request.PastVisas.ToList(), | ||||
|             PastVisits = pastVisits, | ||||
|             ForGroup = request.IsForGroup, | ||||
|             RequestDate = DateTime.Today | ||||
|         }; | ||||
|  | ||||
|         await applications.AddAsync(visaApplication, cancellationToken); | ||||
|     } | ||||
|  | ||||
|     private async Task<PastVisit> ConvertPastVisitModelToPastVisit(PastVisitModel model, CancellationToken cancellationToken) | ||||
|     { | ||||
|         return new PastVisit | ||||
|         { | ||||
|             DestinationCountry = await countries.GetByIdAsync(model.DestinationCountryId, cancellationToken), | ||||
|             StartDate = model.StartDate, | ||||
|             EndDate = model.EndDate | ||||
|         }; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,6 +0,0 @@ | ||||
| using ApplicationLayer.Common; | ||||
| using Domains.VisaApplicationDomain; | ||||
|  | ||||
| namespace ApplicationLayer.VisaApplications; | ||||
|  | ||||
| public interface IVisaApplicationsRepository : IGenericRepository<VisaApplication> { } | ||||
| @@ -2,11 +2,8 @@ | ||||
|  | ||||
| public class AddressModel | ||||
| { | ||||
|     /// Country part of address | ||||
|     public string Country { get; set; } = null!; | ||||
|  | ||||
|     /// City part of address | ||||
|     public string City { get; set; } = null!; | ||||
|     public Guid CityId { get; set; } | ||||
|  | ||||
|     /// Street part of address | ||||
|     public string Street { get; set; } = null!; | ||||
|   | ||||
| @@ -0,0 +1,14 @@ | ||||
| namespace ApplicationLayer.VisaApplications.Models | ||||
| { | ||||
|     public class PastVisitModel | ||||
|     { | ||||
|         /// First day of <see cref="PastVisitModel"/> | ||||
|         public DateTime StartDate { get; set; } | ||||
|  | ||||
|         /// Last day of <see cref="PastVisitModel"/> | ||||
|         public DateTime EndDate { get; set; } | ||||
|  | ||||
|         /// Identifier of destination country of <see cref="PastVisitModel"/> | ||||
|         public Guid DestinationCountryId { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| using ApplicationLayer.GeneralNeededServices; | ||||
| using Domains.VisaApplicationDomain; | ||||
|  | ||||
| namespace ApplicationLayer.VisaApplications.NeededServices; | ||||
|  | ||||
| public interface IVisaApplicationsRepository : IGenericRepository<VisaApplication> { } | ||||
| @@ -5,12 +5,11 @@ using Domains.VisaApplicationDomain; | ||||
| namespace ApplicationLayer.VisaApplications.Requests; | ||||
| 
 | ||||
| /// Model of visa request from user | ||||
| public record CreateVisaApplicationRequest( | ||||
| public record VisaApplicationCreateRequest( | ||||
|     Name FullName, | ||||
|     Passport Passport, | ||||
|     DateTime BirthDate, | ||||
|     string BirthCity, | ||||
|     string BirthCountry, | ||||
|     Guid BirthCityId, | ||||
|     string CitizenShip, | ||||
|     string CitizenshipByBirth, | ||||
|     Gender Gender, | ||||
| @@ -21,12 +20,12 @@ public record CreateVisaApplicationRequest( | ||||
|     ReentryPermit ReentryPermit, | ||||
|     string JobTitle, | ||||
|     PlaceOfWorkModel PlaceOfWork, | ||||
|     string DestinationCountry, | ||||
|     Guid DestinationCountryId, | ||||
|     VisaCategory VisaCategory, | ||||
|     bool IsForGroup, | ||||
|     RequestedNumberOfEntries RequestedNumberOfEntries, | ||||
|     int ValidDaysRequested, | ||||
|     PastVisa[] PastVisas, | ||||
|     PermissionToDestCountry? PermissionToDestCountry, | ||||
|     PastVisit[] PastVisits | ||||
|     PastVisitModel[] PastVisits | ||||
| ); | ||||
		Reference in New Issue
	
	Block a user