Example #1
0
        public async Task <string> Handle(CreateEpaOrganisationRequest request, CancellationToken cancellationToken)
        {
            ProcessRequestFieldsForSpecialCharacters(request);

            ValidationResponse validationResponse = _validator.ValidatorCreateEpaOrganisationRequest(request);

            if (!validationResponse.IsValid)
            {
                var message = validationResponse.Errors.Aggregate(string.Empty, (current, error) => current + error.ErrorMessage + "; ");
                _logger.LogError(message);
                if (validationResponse.Errors.Any(x => x.StatusCode == ValidationStatusCode.BadRequest.ToString()))
                {
                    throw new BadRequestException(message);
                }

                //Incase there already an existing organisation then return that , this is part of ON-2084
                var organisationId = await _registerQueryRepository.GetEpaOrgIdByEndPointAssessmentName(request.Name);

                if (!string.IsNullOrEmpty(organisationId))
                {
                    return(organisationId);
                }
            }


            var newOrganisationId = _organisationIdGenerator.GetNextOrganisationId();

            if (newOrganisationId == string.Empty)
            {
                throw new Exception("A valid organisation Id could not be generated");
            }

            var organisation = MapOrganisationRequestToOrganisation(request, newOrganisationId);

            return(await _registerRepository.CreateEpaOrganisation(organisation));
        }