@@ -92,6 +92,34 @@ public void Register(IEndpointRouteBuilder endpointRouteBuilder)
9292 }
9393 return TypedResults . Ok ( ) ;
9494 } ) . WithOpenApi ( "Handles reference optout" , string . Empty , "reference_optout" ) . WithParameterValidation ( ) ;
95+
96+ endpointRouteBuilder . MapPost ( "/api/References/ICRAWorkExperience" , async Task < Results < Ok , BadRequest < ProblemDetails > > > ( ICRAWorkExperienceReferenceSubmissionRequest request , IMediator messageBus , IMapper mapper , CancellationToken ct ) =>
97+ {
98+ if ( request . Token == null ) return TypedResults . BadRequest ( new ProblemDetails { Detail = "Token is required" } ) ;
99+
100+ var recaptchaResult = await messageBus . Send ( new Managers . Registry . Contract . Recaptcha . VerifyRecaptchaCommand ( request . RecaptchaToken ) , ct ) ;
101+ if ( ! recaptchaResult . Success )
102+ {
103+ var problemDetails = new ProblemDetails
104+ {
105+ Status = StatusCodes . Status400BadRequest ,
106+ Detail = "Invalid recaptcha token" ,
107+ Extensions = { [ "errors" ] = recaptchaResult . ErrorCodes }
108+ } ;
109+ return TypedResults . BadRequest ( problemDetails ) ;
110+ }
111+
112+ var mapped = mapper . Map < Managers . Registry . Contract . ICRA . ICRAWorkExperienceReferenceSubmissionRequest > ( request ) ;
113+ var result = await messageBus . Send ( new Managers . Registry . Contract . Applications . SubmitReferenceCommand ( request . Token )
114+ {
115+ ICRAWorkExperienceReferenceSubmissionRequest = mapped
116+ } , ct ) ;
117+ if ( ! result . IsSuccess )
118+ {
119+ return TypedResults . BadRequest ( new ProblemDetails { Detail = result . ErrorMessage } ) ;
120+ }
121+ return TypedResults . Ok ( ) ;
122+ } ) . WithOpenApi ( "Handles ICRA work experience reference submission" , string . Empty , "icra_workExperience_reference_post" ) . WithParameterValidation ( ) ;
95123 }
96124}
97125
@@ -115,6 +143,24 @@ public enum UnabletoProvideReferenceReasons
115143 Other
116144}
117145
146+ public record ICRAWorkExperienceReferenceSubmissionRequest ( [ Required ] string Token , [ Required ] string RecaptchaToken )
147+ {
148+ public string ? FirstName { get ; set ; }
149+ public string ? LastName { get ; set ; }
150+ public string ? EmailAddress { get ; set ; }
151+ public string ? PhoneNumber { get ; set ; }
152+ public string ? CountryId { get ; set ; }
153+ public string ? EmployerName { get ; set ; }
154+ public string ? PositionTitle { get ; set ; }
155+ public DateTime ? StartDate { get ; set ; }
156+ public DateTime ? EndDate { get ; set ; }
157+ public bool ? WorkedWithChildren { get ; set ; }
158+ public IEnumerable < ChildcareAgeRanges > ? ChildcareAgeRanges { get ; set ; }
159+ public ReferenceRelationship ? ReferenceRelationship { get ; set ; }
160+ public DateTime ? DateSigned { get ; set ; }
161+
162+ }
163+
118164public record WorkExperienceReferenceDetails ( )
119165{
120166 [ Required ]
0 commit comments