43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using BlazorWebAssemblyVisaApiClient.Validation.VisaApplications.Models;
 | |
| using FluentValidation;
 | |
| using VisaApiClient;
 | |
| 
 | |
| namespace BlazorWebAssemblyVisaApiClient.Validation.VisaApplications.Validators;
 | |
| 
 | |
| public class VisaApplicationCreateRequestModelValidator : AbstractValidator<VisaApplicationCreateRequestModel>
 | |
| {
 | |
|     public VisaApplicationCreateRequestModelValidator(
 | |
|         IValidator<PastVisaModel> pastVisaModelValidator,
 | |
|         IValidator<PermissionToDestCountryModel?> permissionToDestCountryModelValidator,
 | |
|         IValidator<PastVisitModel> pastVisitModelValidator)
 | |
|     {
 | |
|         RuleFor(r => r.PermissionToDestCountry)
 | |
|             .NotEmpty()
 | |
|             .WithMessage("For transit you must provide permission to destination country")
 | |
|             .SetValidator(permissionToDestCountryModelValidator)
 | |
|             .When(r => r.VisaCategory is VisaCategory.Transit);
 | |
| 
 | |
|         RuleFor(r => r.DestinationCountry)
 | |
|             .NotEmpty()
 | |
|             .WithMessage("Destination country can not be empty");
 | |
| 
 | |
|         RuleFor(r => r.VisaCategory)
 | |
|             .IsInEnum();
 | |
| 
 | |
|         RuleFor(r => r.RequestedNumberOfEntries)
 | |
|             .IsInEnum();
 | |
| 
 | |
|         RuleFor(r => r.ValidDaysRequested)
 | |
|             .GreaterThan(0)
 | |
|             .WithMessage($"Valid days requested should be positive number and less than {ConfigurationConstraints.MaxValidDays}")
 | |
|             .LessThanOrEqualTo(ConfigurationConstraints.MaxValidDays)
 | |
|             .WithMessage($"Valid days requested must be less than or equal to {ConfigurationConstraints.MaxValidDays}");
 | |
| 
 | |
|         RuleForEach(r => r.PastVisas)
 | |
|             .SetValidator(pastVisaModelValidator);
 | |
| 
 | |
|         RuleForEach(r => r.PastVisits)
 | |
|             .SetValidator(pastVisitModelValidator);
 | |
|     }
 | |
| }
 |