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 }); }
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); } }
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); } }
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); } }
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>()); }