Example #1
0
        public async Task <IActionResult> AddOrganisationStandard(RegisterAddOrganisationStandardViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                var viewModelInvalid = await ConstructOrganisationAndStandardDetails(viewModel);

                return(View(viewModelInvalid));
            }

            var addOrganisationStandardRequest = new CreateEpaOrganisationStandardRequest
            {
                OrganisationId        = viewModel.OrganisationId,
                StandardCode          = viewModel.StandardId,
                EffectiveFrom         = viewModel.EffectiveFrom,
                EffectiveTo           = viewModel.EffectiveTo,
                ContactId             = viewModel.ContactId.ToString(),
                DeliveryAreas         = viewModel.DeliveryAreas,
                Comments              = viewModel.Comments,
                DeliveryAreasComments = viewModel.DeliveryAreasComments
            };

            var organisationStandardId = await _apiClient.CreateEpaOrganisationStandard(addOrganisationStandardRequest);

            return(Redirect($"/register/view-standard/{organisationStandardId}"));
        }
        public void Setup()
        {
            _registerRepository = new Mock <IRegisterRepository>();
            _cleanserService    = new Mock <ISpecialCharacterCleanserService>();
            _validator          = new Mock <IEpaOrganisationValidator>();
            _logger             = new Mock <ILogger <CreateEpaOrganisationStandardHandler> >();
            _organisationId     = "EPA999";
            _requestNoIssuesId  = 1;

            _requestNoIssues = BuildRequest(_organisationId, 123321, new List <int> {
                1
            });
            _expectedOrganisationStandardNoIssues = BuildOrganisationStandard(_requestNoIssues, _requestNoIssuesId);

            _registerRepository.Setup(r => r.CreateEpaOrganisationStandard(It.IsAny <EpaOrganisationStandard>(), new List <int> {
                1
            }))
            .Returns(Task.FromResult(_expectedOrganisationStandardNoIssues.Id.ToString()));

            _validator.Setup(v => v.ValidatorCreateEpaOrganisationStandardRequest(_requestNoIssues)).Returns(new ValidationResponse());
            _cleanserService.Setup(c => c.CleanseStringForSpecialCharacters(It.IsAny <string>()))
            .Returns((string s) => s);

            _createEpaOrganisationStandardHandler = new CreateEpaOrganisationStandardHandler(_registerRepository.Object, _validator.Object, _logger.Object, _cleanserService.Object);
        }
Example #3
0
        public async Task <IActionResult> CreateOrganisationStandard([FromBody] CreateEpaOrganisationStandardRequest request)
        {
            try
            {
                _logger.LogInformation("Creating new Organisation Standard");
                var result = await _mediator.Send(request);

                return(Ok(new EpaoStandardResponse(result)));
            }
            catch (NotFound ex)
            {
                _logger.LogError($@"Record is not available for organisation / standard: [{request.OrganisationId}, {request.StandardCode}]");
                return(NotFound(new EpaoStandardResponse(ex.Message)));
            }
            catch (AlreadyExistsException ex)
            {
                _logger.LogError($@"Record already exists for organisation/standard [{request.OrganisationId}, {request.StandardCode}]");
                return(Conflict(new EpaoStandardResponse(ex.Message)));
            }
            catch (BadRequestException ex)
            {
                _logger.LogError(ex.Message);
                return(BadRequest(new EpaoStandardResponse(ex.Message)));
            }
            catch (Exception ex)
            {
                _logger.LogError($@"Bad request, Message: [{ex.Message}]");
                return(BadRequest());
            }
        }
        public async Task <string> CreateEpaOrganisationStandard(CreateEpaOrganisationStandardRequest request)
        {
            var result =
                await Post <CreateEpaOrganisationStandardRequest, EpaoStandardResponse>("api/ao/assessment-organisations/standards",
                                                                                        request);

            return(result.Details);
        }
 private EpaOrganisationStandard BuildOrganisationStandard(CreateEpaOrganisationStandardRequest request, int id)
 {
     return(new EpaOrganisationStandard
     {
         Id = id,
         OrganisationId = request.OrganisationId,
         StandardCode = request.StandardCode,
         EffectiveFrom = request.EffectiveFrom,
         EffectiveTo = request.EffectiveTo,
         Comments = request.Comments
     });
 }
        public ValidationResponse ValidatorCreateEpaOrganisationStandardRequest(
            CreateEpaOrganisationStandardRequest request)
        {
            var validationResult = new ValidationResponse();

            RunValidationCheckAndAppendAnyError("OrganisationId", CheckIfOrganisationNotFound(request.OrganisationId), validationResult, ValidationStatusCode.NotFound);
            if (!validationResult.IsValid)
            {
                return(validationResult);
            }

            //  SV-658 / SV-659 Now that we have versions, this will check will include versions too.
            RunValidationCheckAndAppendAnyError("OrganisationId", CheckIfOrganisationStandardVersionAlreadyExists(request.OrganisationId, request.StandardCode, request.StandardVersions), validationResult, ValidationStatusCode.AlreadyExists);
            if (!validationResult.IsValid)
            {
                return(validationResult);
            }

            var standard = GetStandard(request.StandardCode.ToString()).Result;

            if (standard is null)
            {
                var standardErrorMessage = FormatErrorMessage(EpaOrganisationValidatorMessageName.StandardNotFound);
                RunValidationCheckAndAppendAnyError("StandardCode", standardErrorMessage, validationResult, ValidationStatusCode.NotFound);
                return(validationResult);
            }

            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckOrganisationStandardFromDateIsWithinStandardDateRanges(request.EffectiveFrom, standard.EffectiveFrom, standard.EffectiveTo, standard.LastDateStarts), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckEffectiveFromIsOnOrBeforeEffectiveTo(request.EffectiveFrom, request.EffectiveTo), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckOrganisationStandardEffectiveFromIsEntered(request.EffectiveFrom), validationResult, ValidationStatusCode.BadRequest);

            RunValidationCheckAndAppendAnyError("OrganisationId", CheckOrganisationIdIsPresentAndValid(request.OrganisationId), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("ContactId", CheckIfContactIdIsValid(request.ContactId, request.OrganisationId), validationResult, ValidationStatusCode.BadRequest);

            // SV-658 Only validate areas if this is not a short application.
            if (string.IsNullOrWhiteSpace(request.StandardApplicationType) || !request.StandardApplicationType.Equals(Domain.Consts.StandardApplicationTypes.Version))
            {
                RunValidationCheckAndAppendAnyError("DeliveryAreas", CheckIfDeliveryAreasAreValid(request.DeliveryAreas), validationResult, ValidationStatusCode.BadRequest);
            }

            RunValidationCheckAndAppendAnyError("EffectiveTo", CheckOrganisationStandardToDateIsWithinStandardDateRanges(request.EffectiveTo, standard.EffectiveFrom, standard.EffectiveTo), validationResult, ValidationStatusCode.BadRequest);

            return(validationResult);
        }
        public void Arrange()
        {
            _mediator = new Mock <IMediator>();
            _logger   = new Mock <ILogger <RegisterController> >();

            _request = new CreateEpaOrganisationStandardRequest
            {
                OrganisationId = "EPA999",
                StandardCode   = 3,
                EffectiveFrom  = DateTime.Now,
                Comments       = "this is a comment"
            };

            _mediator.Setup(m =>
                            m.Send(_request, new CancellationToken())).Throws <NotFound>();

            _controller = new RegisterController(_mediator.Object, _logger.Object);
            _result     = _controller.CreateOrganisationStandard(_request).Result;
        }
Example #8
0
        public ValidationResponse ValidatorCreateEpaOrganisationStandardRequest(
            CreateEpaOrganisationStandardRequest request)
        {
            var validationResult = new ValidationResponse();

            RunValidationCheckAndAppendAnyError("OrganisationId", CheckIfOrganisationNotFound(request.OrganisationId), validationResult, ValidationStatusCode.NotFound);
            if (!validationResult.IsValid)
            {
                return(validationResult);
            }

            RunValidationCheckAndAppendAnyError("OrganisationId", CheckIfOrganisationStandardAlreadyExists(request.OrganisationId, request.StandardCode), validationResult, ValidationStatusCode.AlreadyExists);
            if (!validationResult.IsValid)
            {
                return(validationResult);
            }

            var standard = GetStandard(request.StandardCode).Result;

            if (standard is null)
            {
                var standardErrorMessage = FormatErrorMessage(EpaOrganisationValidatorMessageName.StandardNotFound);
                RunValidationCheckAndAppendAnyError("StandardCode", standardErrorMessage, validationResult, ValidationStatusCode.NotFound);
                return(validationResult);
            }

            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckOrganisationStandardFromDateIsWithinStandardDateRanges(request.EffectiveFrom, standard.StandardData.EffectiveFrom, standard.StandardData.EffectiveTo, standard.StandardData.LastDateForNewStarts), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckEffectiveFromIsOnOrBeforeEffectiveTo(request.EffectiveFrom, request.EffectiveTo), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("EffectiveFrom", CheckOrganisationStandardEffectiveFromIsEntered(request.EffectiveFrom), validationResult, ValidationStatusCode.BadRequest);

            RunValidationCheckAndAppendAnyError("OrganisationId", CheckOrganisationIdIsPresentAndValid(request.OrganisationId), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("ContactId", CheckIfContactIdIsValid(request.ContactId, request.OrganisationId), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("DeliveryAreas", CheckIfDeliveryAreasAreValid(request.DeliveryAreas), validationResult, ValidationStatusCode.BadRequest);
            RunValidationCheckAndAppendAnyError("EffectiveTo", CheckOrganisationStandardToDateIsWithinStandardDateRanges(request.EffectiveTo, standard.StandardData.EffectiveFrom, standard.StandardData.EffectiveTo), validationResult, ValidationStatusCode.BadRequest);

            return(validationResult);
        }
Example #9
0
 private CreateEpaOrganisationStandardValidationRequest MapToCreateEpaOrganisationStandardValidateRequest(CreateEpaOrganisationStandardRequest request)
 {
     return(new CreateEpaOrganisationStandardValidationRequest
     {
         OrganisationId = request?.OrganisationId,
         StandardCode = request?.StandardCode ?? 0,
         StandardVersions = request?.StandardVersions,
         EffectiveFrom = request?.EffectiveFrom,
         EffectiveTo = request?.EffectiveTo,
         ContactId = request?.ContactId,
         DeliveryAreas = request?.DeliveryAreas,
         StandardApplicationType = request?.StandardApplicationType
     });
 }
Example #10
0
        public async Task <ValidationResponse> ValidateNewOrganisationStandardRequest(CreateEpaOrganisationStandardRequest request)
        {
            var validationRequest = MapToCreateEpaOrganisationStandardValidateRequest(request);

            return(await _apiClient.CreateOrganisationStandardValidate(validationRequest));
        }