Beispiel #1
0
        public async Task <IHttpActionResult> Create([FromBody] CreateApprenticeshipParameters createApprenticeshipParameters)
        {
            var headers = Request.GetApimUserContextHeaders();
            var result  = await _orchestrator.CreateApprenticeshipAsync(createApprenticeshipParameters, headers);

            return(Ok(result));
        }
        public async Task <int> CreateApprenticeshipAsync(CreateApprenticeshipParameters parameters)
        {
            var serialized = JsonConvert.SerializeObject(parameters);

            _logger.Info($"Sandbox Request for Create Apprenticeship : {serialized}");
            return(await Task.FromResult(0));
        }
Beispiel #3
0
        public async Task SetUp()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            _actualParameters = fixture.Create <CreateApprenticeshipParameters>();

            _expectedMediatorResponse = fixture.Create <CreateApprenticeshipResponse>();
            _expectedMapperResponse   = fixture.Create <ApiTypes.CreateApprenticeshipResponse>();
            _expectedRequest          = new CreateApprenticeshipRequest();
            _expectedErrorMessage     = fixture.Create <string>();

            _mockRequestMapper = fixture.Freeze <Mock <ICreateApprenticeshipRequestMapper> >(composer => composer.Do(mock => mock
                                                                                                                     .Setup(mapper => mapper.MapFromApiParameters(_actualParameters, It.IsAny <int>(), It.IsAny <string>()))
                                                                                                                     .Returns(_expectedRequest)));

            _mockMediator = fixture.Freeze <Mock <IMediator> >(composer => composer.Do(mock => mock
                                                                                       .Setup(mediator => mediator.Send(It.IsAny <CreateApprenticeshipRequest>(), It.IsAny <CancellationToken>()))
                                                                                       .ReturnsAsync(_expectedMediatorResponse)));

            _mockResponseMapper = fixture.Freeze <Mock <ICreateApprenticeshipResponseMapper> >(composer => composer.Do(mock => mock
                                                                                                                       .Setup(mapper => mapper.MapToApiResponse(It.IsAny <CreateApprenticeshipResponse>()))
                                                                                                                       .Returns(_expectedMapperResponse)));

            _mockValidationExceptionBuilder = fixture.Freeze <Mock <IValidationExceptionBuilder> >(composer => composer.Do(mock => mock
                                                                                                                           .Setup(builder => builder.Build(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
                                                                                                                           .Returns(new ValidationException(new List <ValidationFailure>
            {
                new ValidationFailure("", _expectedErrorMessage)
            }))
                                                                                                                           ));

            _orchestrator = fixture.Create <CreateApprenticeshipOrchestrator>();

            _actualResponse = await _orchestrator.CreateApprenticeshipAsync(_actualParameters, _validHeader);
        }
Beispiel #4
0
        public async Task<int> CreateApprenticeshipAsync(CreateApprenticeshipParameters parameters)
        {
            return await _sqlDatabaseService.ExecuteWithRetryAsync("Create Apprenticeship Vacancy", async sqlConn =>
            {
                var dynamicParameters = new DynamicParameters(parameters);
                dynamicParameters.Add("VacancyReferenceNumber", dbType: DbType.Int32, direction: ParameterDirection.Output);

                _logger.Info($"Command to create new Apprenticeship Vacancy in AVMS database, Title: [{parameters.Title}].");

                await sqlConn.ExecuteAsync(
                    CreateApprenticeshipVacancySqlSproc,
                    dynamicParameters,
                    commandType: CommandType.StoredProcedure);

                var referenceNumber = dynamicParameters.Get<int>("VacancyReferenceNumber");

                if (referenceNumber == int.MinValue)
                    throw new InfrastructureException(new Exception($"Failed to get reference number for new Apprenticeship Vacancy [{parameters.Title}]"));

                _logger.Info($"Created Apprenticeship Vacancy for [{referenceNumber}] from AVMS database.");

                return referenceNumber;

            });
        }
        public CreateApprenticeshipParameters MapFromRequest(CreateApprenticeshipRequest request,
                                                             EmployerInformation employerInformation)
        {
            var parameters = new CreateApprenticeshipParameters
            {
                Title                      = request.Title,
                ShortDescription           = request.ShortDescription,
                Description                = request.LongDescription,
                ApplicationClosingDate     = request.ApplicationClosingDate.Date,
                DesiredSkills              = request.DesiredSkills,
                DesiredPersonalQualities   = request.DesiredPersonalQualities,
                DesiredQualifications      = request.DesiredQualifications,
                FutureProspects            = request.FutureProspects,
                ThingsToConsider           = request.ThingsToConsider,
                TrainingToBeProvided       = request.TrainingToBeProvided,
                DurationValue              = request.ExpectedDuration,
                DurationTypeId             = (int)_durationMapper.MapTypeToDomainType(request.DurationType),
                ExpectedStartDate          = request.ExpectedStartDate.Date,
                WorkingWeek                = request.WorkingWeek,
                HoursPerWeek               = request.HoursPerWeek,
                WageType                   = (int)_wageTypeMapper.MapToLegacy(request),
                WageTypeReason             = request.WageTypeReason,
                WageUnitId                 = (int)request.WageUnit,
                WeeklyWage                 = request.FixedWage,
                WageLowerBound             = request.MinWage,
                WageUpperBound             = request.MaxWage,
                WageText                   = _wageTextFormatter.GetWageText(request),
                LocationTypeId             = request.LocationType == LocationType.Nationwide ? NationwideLocationType : StandardLocationType,
                NumberOfPositions          = request.NumberOfPositions,
                VacancyOwnerRelationshipId = employerInformation.VacancyOwnerRelationshipId,
                EmployerDescription        =
                    string.IsNullOrWhiteSpace(request.EmployerDescription)
                    ? employerInformation.EmployerDescription
                    : request.EmployerDescription,
                EmployerWebsite =
                    string.IsNullOrWhiteSpace(request.EmployerWebsiteUrl)
                    ? employerInformation.EmployerWebsite
                    : request.EmployerWebsiteUrl,
                ProviderId                       = employerInformation.ProviderId,
                ProviderSiteId                   = employerInformation.ProviderSiteId,
                ApplyOutsideNAVMS                = request.ApplicationMethod == ApplicationMethod.Offline,
                SupplementaryQuestion1           = request.SupplementaryQuestion1,
                SupplementaryQuestion2           = request.SupplementaryQuestion2,
                EmployersRecruitmentWebsite      = request.ExternalApplicationUrl,
                EmployersApplicationInstructions = request.ExternalApplicationInstructions,
                ContactName                      = request.ContactName,
                ContactEmail                     = request.ContactEmail,
                ContactNumber                    = request.ContactNumber,
                TrainingTypeId                   = (int)request.TrainingType,
                ApprenticeshipType               = GetApprenticeshipType(request.EducationLevel),
                IsDisabilityConfident            = request.IsEmployerDisabilityConfident.GetValueOrDefault(),
                AdditionalLocationInformation    = request.AdditionalLocationInformation,
                HistoryUserName                  = request.UserEmail
            };

            MapLocationFields(request, employerInformation, parameters);

            MapTrainingCode(request, parameters);
            return(parameters);
        }
 private static void MapTrainingCode(CreateApprenticeshipRequest request, CreateApprenticeshipParameters parameters)
 {
     if (request.TrainingType == TrainingType.Standard)
     {
         parameters.TrainingCode = request.TrainingCode;
     }
     else
     {
         var length = request.TrainingCode.IndexOf("-", StringComparison.Ordinal);
         parameters.TrainingCode = request.TrainingCode.Substring(0, length);
     }
 }
        public void Setup()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            _createApprenticeshipRequest = fixture.Build <CreateApprenticeshipRequest>()
                                           .With(request => request.LocationType, LocationType.OtherLocation)
                                           .Create();
            _employerInformation = fixture.Create <EmployerInformation>();

            var mapper = fixture.Create <CreateApprenticeshipParametersMapper>();

            _mappedParameters = mapper.MapFromRequest(_createApprenticeshipRequest, _employerInformation);
        }
Beispiel #8
0
        public async Task SetUp()
        {
            _fixture = new Fixture().Customize(new AutoMoqCustomization());

            _employerInformation = _fixture.Create <EmployerInformation>();
            _expectedRefNumber   = _fixture.Create <int>();
            _expectedParameters  = _fixture.Freeze <CreateApprenticeshipParameters>();
            _validRequest        = _fixture.Create <CreateApprenticeshipRequest>();

            _mockValidator = _fixture.Freeze <Mock <IValidator <CreateApprenticeshipRequest> > >(composer =>
                                                                                                 composer.Do(mock => mock
                                                                                                             .Setup(validator => validator.ValidateAsync(It.IsAny <CreateApprenticeshipRequest>(), It.IsAny <CancellationToken>()))
                                                                                                             .ReturnsAsync(new ValidationResult())));

            _mockVacancyOwnerService = _fixture.Freeze <Mock <IVacancyOwnerService> >(composer =>
                                                                                      composer.Do(mock => mock
                                                                                                  .Setup(svc => svc.GetEmployersInformationAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <int>()))
                                                                                                  .ReturnsAsync(_employerInformation)));

            _mockMapper = _fixture.Freeze <Mock <ICreateApprenticeshipParametersMapper> >(composer =>
                                                                                          composer.Do(mock => mock
                                                                                                      .Setup(mapper => mapper.MapFromRequest(It.IsAny <CreateApprenticeshipRequest>(), It.IsAny <EmployerInformation>()))
                                                                                                      .Returns(_expectedParameters)));

            _mockService = _fixture.Freeze <Mock <ICreateApprenticeshipService> >(composer =>
                                                                                  composer.Do(mock => mock
                                                                                              .Setup(repository => repository.CreateApprenticeshipAsync(It.IsAny <CreateApprenticeshipParameters>()))
                                                                                              .ReturnsAsync(_expectedRefNumber)));

            _trainingDetails = new List <TrainingDetail>()
            {
                new TrainingDetail()
                {
                    TrainingCode = _validRequest.TrainingCode, Level = 1
                }
            };
            _mockTrainingDetailService = _fixture.Freeze <Mock <ITrainingDetailService> >(composer =>
                                                                                          composer.Do(mock =>
            {
                mock
                .Setup(svc => svc.GetAllFrameworkDetailsAsync())
                .ReturnsAsync(_trainingDetails);
                mock
                .Setup(svc => svc.GetAllStandardDetailsAsync())
                .ReturnsAsync(_trainingDetails);
            }));

            _handler = _fixture.Create <CreateApprenticeshipCommandHandler>();

            _createApprenticeshipResponse = await _handler.Handle(_validRequest);
        }
Beispiel #9
0
        public async Task <CreateApprenticeshipResponse> CreateApprenticeshipAsync(
            CreateApprenticeshipParameters parameters, Dictionary <string, string> requestHeaders)
        {
            if (parameters == null)
            {
                throw _validationExceptionBuilder.Build(
                          ErrorCodes.CreateApprenticeship.CreateApprenticeshipParametersIsNull,
                          ErrorMessages.CreateApprenticeship.CreateApprenticeshipParametersIsNull,
                          CreateApprenticeshipParametersName);
            }

            var ukprn     = int.Parse(requestHeaders[Constants.RequestHeaderNames.ProviderUkprn]);
            var userEmail = requestHeaders[Constants.RequestHeaderNames.UserEmail];

            var request = _createApprenticeshipRequestMapper.MapFromApiParameters(parameters, ukprn, userEmail);

            var response = await _mediator.Send(request);

            return(_apprenticeshipResponseMapper.MapToApiResponse(response));
        }
        public void SetUp()
        {
            var fixture = new Fixture();

            var randomWageType          = fixture.Create <int>();
            var randomWageUnit          = fixture.Create <int>();
            var randomLocationType      = fixture.Create <int>();
            var randomApplicationMethod = fixture.Create <int>();

            _apiParameters = fixture.Build <CreateApprenticeshipParameters>()
                             .With(parameters => parameters.LocationType, (ApiTypes.LocationType)randomLocationType)
                             .With(parameters => parameters.WageType, (ApiTypes.WageType)randomWageType)
                             .With(parameters => parameters.WageUnit, (Vacancy.Api.Types.Request.WageUnit)randomWageUnit)
                             .With(parameters => parameters.ApplicationMethod, (ApiTypes.ApplicationMethod)randomApplicationMethod)
                             .Create();

            var mapper = new CreateApprenticeshipRequestMapper();

            _mappedRequest = mapper.MapFromApiParameters(_apiParameters, _ukprn, _userEmail);
        }
 private static void MapLocationFields(CreateApprenticeshipRequest request, EmployerInformation employerInformation,
                                       CreateApprenticeshipParameters parameters)
 {
     if (request.LocationType == LocationType.OtherLocation)
     {
         parameters.AddressLine1 = request.AddressLine1;
         parameters.AddressLine2 = request.AddressLine2;
         parameters.AddressLine3 = request.AddressLine3;
         parameters.AddressLine4 = request.AddressLine4;
         parameters.AddressLine5 = request.AddressLine5;
         parameters.Town         = request.Town;
         parameters.Postcode     = request.Postcode;
     }
     else
     {
         parameters.AddressLine1 = employerInformation.AddressLine1;
         parameters.AddressLine2 = employerInformation.AddressLine2;
         parameters.AddressLine3 = employerInformation.AddressLine3;
         parameters.AddressLine4 = employerInformation.AddressLine4;
         parameters.AddressLine5 = employerInformation.AddressLine5;
         parameters.Town         = employerInformation.Town;
         parameters.Postcode     = employerInformation.Postcode;
     }
 }
        public void SetUp()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            _randomWageType       = fixture.Create <int>();
            _randomLegacyWageType = fixture.Create <int>();
            _randomWageUnit       = fixture.Create <int>();

            _randomDurationType = (DurationType) new Random().Next(1, 4);
            var durationTypeMapper = new DurationMapper();

            _randomDomainDurationType = durationTypeMapper.MapTypeToDomainType(_randomDurationType);

            _request = fixture.Build <CreateApprenticeshipRequest>()
                       .With(request => request.WageType, (WageType)_randomWageType)
                       .With(request => request.WageUnit, (WageUnit)_randomWageUnit)
                       .With(request => request.DurationType, _randomDurationType)
                       .With(request => request.IsEmployerDisabilityConfident, fixture.Create <bool>())
                       .Create();

            _mockWageTypeMapper = fixture.Freeze <Mock <IWageTypeMapper> >();
            _mockWageTypeMapper
            .Setup(typeMapper => typeMapper.MapToLegacy(It.IsAny <CreateApprenticeshipRequest>()))
            .Returns((LegacyWageType)_randomLegacyWageType);

            _mockWageTextFormatter = fixture.Freeze <Mock <IWageTextFormatter> >();


            fixture.Inject <IDurationMapper>(durationTypeMapper);

            _employerInformation = fixture.Create <EmployerInformation>();

            var mapper = fixture.Create <CreateApprenticeshipParametersMapper>();

            _mappedParameters = mapper.MapFromRequest(_request, _employerInformation);
        }