コード例 #1
0
        public async Task <ActionResult <GatewayCommonDetails> > GetGatewayCommonDetails(Guid applicationId, [FromBody] Types.Requests.GatewayCommonDetailsRequest request)
        {
            var application = await _mediator.Send(new GetApplicationRequest(applicationId));

            if (application?.ApplyData is null)
            {
                return(NotFound());
            }

            if (application.GatewayReviewStatus == GatewayReviewStatus.New)
            {
                _logger.LogInformation($"Starting Gateway Review for application {application.ApplicationId}");
                await _mediator.Send(new StartGatewayReviewRequest(application.ApplicationId, request.UserId, request.UserName));

                _logger.LogInformation($"Getting external API checks data for application {application.ApplicationId}");
                var gatewayExternalApiCheckDetails = await _gatewayApiChecksService.GetExternalApiCheckDetails(application.ApplicationId);

                await _mediator.Send(new UpdateExternalApiCheckDetailsRequest(application.ApplicationId, gatewayExternalApiCheckDetails, request.UserId, request.UserName));

                // must refresh to get latest information
                application = await _mediator.Send(new GetApplicationRequest(application.ApplicationId));
            }

            var gatewayPage = await _mediator.Send(new GetGatewayPageAnswerRequest(application.ApplicationId, request.PageId));

            if (gatewayPage is null)
            {
                _logger.LogWarning($"Could not find page details for application {application.ApplicationId} | pageId {request.PageId}");
                gatewayPage = new GatewayPageAnswer
                {
                    ApplicationId = application.ApplicationId,
                    PageId        = request.PageId
                };
            }

            return(new GatewayCommonDetails
            {
                ApplicationId = gatewayPage.ApplicationId,
                Ukprn = application.ApplyData.ApplyDetails.UKPRN,
                ApplicationSubmittedOn = application.ApplyData.ApplyDetails.ApplicationSubmittedOn,
                GatewayOutcomeMadeOn = application.ApplyData.GatewayReviewDetails?.OutcomeDateTime,
                GatewayOutcomeMadeBy = application.GatewayUserName,
                SourcesCheckedOn = application.ApplyData.GatewayReviewDetails?.SourcesCheckedOn,
                LegalName = application.ApplyData.ApplyDetails.OrganisationName,
                ProviderRouteName = application.ApplyData.ApplyDetails.ProviderRouteName,
                ApplicationStatus = application.ApplicationStatus,
                GatewayReviewStatus = application.GatewayReviewStatus,
                PageId = gatewayPage.PageId,
                Status = gatewayPage.Status,
                Comments = gatewayPage.Comments,
                OutcomeMadeOn = gatewayPage.UpdatedAt,
                OutcomeMadeBy = gatewayPage.UpdatedBy,
                GatewaySubcontractorDeclarationClarificationUpload = application.ApplyData.GatewayReviewDetails?.GatewaySubcontractorDeclarationClarificationUpload,
                ClarificationComments = gatewayPage.ClarificationComments,
                ClarificationBy = gatewayPage.ClarificationBy,
                ClarificationDate = gatewayPage.ClarificationDate,
                ClarificationAnswer = gatewayPage.ClarificationAnswer
            });
        }
コード例 #2
0
        public async Task <bool> InsertGatewayPageAnswerClarification(GatewayPageAnswer pageAnswer, string userId, string userName)
        {
            using (var connection = _dbConnectionHelper.GetDatabaseConnection())
            {
                var rowsAffected = await connection.ExecuteAsync(
                    @"INSERT INTO GatewayAnswer ([Id], [ApplicationId], [PageId], [Status], [comments], [UpdatedAt], [UpdatedBy], ClarificationComments, ClarificationDate, ClarificationBy)
														 VALUES (@id, @applicationId, @pageId, @status, @comments, @updatedAt, @updatedBy, @ClarificationComments, @ClarificationDate, @ClarificationBy)"
                    , pageAnswer);

                return(rowsAffected > 0);
            }
        }
        public async Task <bool> InsertGatewayPageAnswer(GatewayPageAnswer pageAnswer, string userId, string userName)
        {
            using (var connection = new SqlConnection(_config.SqlConnectionString))
            {
                var rowsAffected = await connection.ExecuteAsync(
                    @"INSERT INTO GatewayAnswer ([Id], [ApplicationId], [PageId], [Status], [comments], [UpdatedAt], [UpdatedBy])
														 VALUES (@id, @applicationId, @pageId, @status, @comments, @updatedAt, @updatedBy)"
                    , pageAnswer);

                return(rowsAffected > 0);
            }
        }
コード例 #4
0
        public async Task <bool> UpdateGatewayPageAnswerPostClarification(GatewayPageAnswer pageAnswer, string userId, string userName)
        {
            using (var connection = _dbConnectionHelper.GetDatabaseConnection())
            {
                _logger.LogInformation($"Updating applicationId {pageAnswer.ApplicationId} for non-clarification responses");
                var rowsAffected = await connection.ExecuteAsync(
                    @"UPDATE GatewayAnswer
                                        SET Status = @status,
                                            Comments = @comments, 
                                            ClarificationAnswer = @clarificationAnswer,
                                            UpdatedBy = @updatedBy,
                                            UpdatedAt = @updatedAt
                                        WHERE [Id] = @id"
                    , pageAnswer);

                return(rowsAffected > 0);
            }
        }
        public async Task <bool> UpdateGatewayPageAnswer(GatewayPageAnswer pageAnswer, string userId, string userName)
        {
            using (var connection = new SqlConnection(_config.SqlConnectionString))
            {
                _logger.LogInformation($"Updating applicationId {pageAnswer.ApplicationId} for non-clarification responses");
                var rowsAffected = await connection.ExecuteAsync(
                    @"UPDATE GatewayAnswer
                                        SET Status = @status,
                                            Comments = @comments, 
                                            ClarificationDate = CASE WHEN ClarificationAnswer IS NULL THEN NULL ELSE ClarificationDate END,
                                            ClarificationBy = CASE WHEN ClarificationAnswer IS NULL THEN NULL ELSE ClarificationBy END,
                                            ClarificationComments = CASE WHEN ClarificationAnswer IS NULL THEN NULL ELSE ClarificationComments END,
                                            UpdatedBy = @updatedBy,
                                            UpdatedAt = @updatedAt
                                        WHERE [Id] = @id"
                    , pageAnswer);

                return(rowsAffected > 0);
            }
        }
コード例 #6
0
        public async Task <bool> UpdateGatewayPageAnswerClarification(GatewayPageAnswer pageAnswer, string userId, string userName)
        {
            _logger.LogInformation($"updating Gateway answer for applicationID [{pageAnswer.ApplicationId}], Status: {pageAnswer.Status}, Clarification answer '{pageAnswer.ClarificationAnswer}'");
            using (var connection = _dbConnectionHelper.GetDatabaseConnection())
            {
                _logger.LogInformation($"Updating applicationId {pageAnswer.ApplicationId} for clarification");
                var rowsAffected = await connection.ExecuteAsync(
                    @"UPDATE GatewayAnswer
                                         SET Status = @status,
                                             Comments = @clarificationComments,
                                             ClarificationComments = @clarificationComments, 
                                             UpdatedBy = @updatedBy,
                                             UpdatedAt = @updatedAt, 
                                             ClarificationDate = @updatedAt,
                                             ClarificationBy = @updatedBy
                                         WHERE [Id] = @id"
                    , pageAnswer);

                return(rowsAffected > 0);
            }
        }
コード例 #7
0
        public void SetUp()
        {
            _autoFixture       = new Fixture();
            _repository        = new Mock <IApplyRepository>();
            _gatewayRepository = new Mock <IGatewayRepository>();
            _auditService      = new Mock <IAuditService>();

            _applicationId = Guid.NewGuid();
            _pageId        = _autoFixture.Create <string>();
            _userId        = _autoFixture.Create <string>();
            _userName      = _autoFixture.Create <string>();
            _status        = _autoFixture.Create <string>();
            _comments      = _autoFixture.Create <string>();

            _existingGatewayPageAnswer = _autoFixture.Create <GatewayPageAnswer>();
            _existingApplication       = _autoFixture.Create <Domain.Entities.Apply>();

            _repository.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(_existingApplication);
            _repository.Setup(x => x.UpdateApplication(It.IsAny <Domain.Entities.Apply>())).Returns(() => Task.CompletedTask);
            _gatewayRepository.Setup(x => x.InsertGatewayPageAnswer(It.IsAny <GatewayPageAnswer>(), _userId, _userName)).ReturnsAsync(true);
            _gatewayRepository.Setup(x => x.UpdateGatewayPageAnswer(It.IsAny <GatewayPageAnswer>(), _userId, _userName)).ReturnsAsync(true);

            _handler = new UpdateGatewayPageAnswerPostClarificationRequestHandler(_repository.Object, _gatewayRepository.Object, _auditService.Object, Mock.Of <IUnitOfWork>());
        }