public async Task Applications_shows_Applications_page_if_multiple_applications_in_progress() { var inProgressApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.InProgress }; var submittedApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.Submitted }; var gatewayAssessedApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.GatewayAssessed }; var applications = new List <Domain.Entities.Apply> { inProgressApp, submittedApp, gatewayAssessedApp }; _apiClient.Setup(x => x.GetApplications(It.IsAny <Guid>(), It.IsAny <bool>())).ReturnsAsync(applications); var result = await _controller.Applications(); var viewResult = result as ViewResult; viewResult.ViewName.Should().EndWith("Applications.cshtml"); }
private void UpdateApplicationStatus(Domain.Entities.Apply application, int sequenceNo) { // Always default it to submitted application.ApplicationStatus = ApplicationStatus.Submitted; application.ReviewStatus = ApplicationReviewStatus.New; var applyData = application.ApplyData; if (sequenceNo == 1) { application.ApplicationStatus = (applyData.Apply.InitSubmissions.Count == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; var closedFinanicalStatuses = new List <string> { FinancialReviewStatus.Approved, FinancialReviewStatus.Exempt }; if (!closedFinanicalStatuses.Contains(application.FinancialReviewStatus)) { application.FinancialReviewStatus = FinancialReviewStatus.New; } } else if (sequenceNo == 2) { application.ApplicationStatus = (applyData.Apply.StandardSubmissions.Count == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; } }
private void SaveChanges(OversightReview oversightReview, Domain.Entities.Apply application, bool isNew) { if (isNew) { _oversightReviewRepository.Add(oversightReview); } else { _oversightReviewRepository.Update(oversightReview); } switch (oversightReview.Status) { case OversightReviewStatus.InProgress: application.ApplicationStatus = ApplicationStatus.InProgressOutcome; break; case OversightReviewStatus.Successful: case OversightReviewStatus.SuccessfulAlreadyActive: case OversightReviewStatus.SuccessfulFitnessForFunding: application.ApplicationStatus = ApplicationStatus.Successful; break; case OversightReviewStatus.Unsuccessful: application.ApplicationStatus = application.GatewayReviewStatus == GatewayReviewStatus.Rejected ? ApplicationStatus.Rejected : ApplicationStatus.Unsuccessful; break; } _applyRepository.Update(application); }
public async Task RemoveSubcontractorDeclarationFile_swith_wrong_name_is_not_updated() { var applicationId = Guid.NewGuid(); var clarificationFile = "file.pdf"; var wrongFileName = "file2.pdf"; var userId = "user id"; var userName = "******"; var application = new Domain.Entities.Apply { ApplyData = new ApplyData { GatewayReviewDetails = new ApplyGatewayDetails { GatewaySubcontractorDeclarationClarificationUpload = wrongFileName } } }; _repository.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(application); await _handler.Handle(new RemoveSubcontractorDeclarationFileRequest(applicationId, clarificationFile, userId, userName), new CancellationToken()); _gatewayRepository.Verify(x => x.UpdateGatewayApplyData(applicationId, It.IsAny <ApplyData>(), userId, userName), Times.Never); }
public async Task AddSubcontractorDeclarationFile_is_empty_so_is_not_updated() { var applicationId = Guid.NewGuid(); var clarificationFile = (string)null; var userId = "user id"; var userName = "******"; var application = new Domain.Entities.Apply { ApplyData = new ApplyData { GatewayReviewDetails = new ApplyGatewayDetails { GatewaySubcontractorDeclarationClarificationUpload = null } } }; _repository.Setup(x => x.GetApplication(applicationId)).ReturnsAsync(application); await _handler.Handle(new AddSubcontractorDeclarationFileUploadRequest(applicationId, clarificationFile, userId, userName), new CancellationToken()); _repository.Verify(x => x.GetApplication(applicationId), Times.Never); _gatewayRepository.Verify(x => x.UpdateGatewayApplyData(applicationId, It.IsAny <ApplyData>(), userId, userName), Times.Never); }
public void SetUp() { _applicationId = Guid.NewGuid(); _application = new Domain.Entities.Apply { ApplicationId = _applicationId, GatewayReviewStatus = GatewayReviewStatus.New, ApplyData = new ApplyData() }; _applyRepository = new Mock <IApplyRepository>(); _applyRepository.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(() => _application); _gatewayRepository = new Mock <IGatewayRepository>(); _oversightReviewRepository = new Mock <IOversightReviewRepository>(); _oversightReviewRepository.Setup(x => x.Add(It.IsAny <OversightReview>())); _applicationUpdatedEmailService = new Mock <IApplicationUpdatedEmailService>(); _handler = new UpdateGatewayReviewStatusAndCommentCommandHandler(_applyRepository.Object, _gatewayRepository.Object, _oversightReviewRepository.Object, Mock.Of <IAuditService>(), _applicationUpdatedEmailService.Object, Mock.Of <IUnitOfWork>()); }
public async Task TaskList_shows_tasklist_view_for_application() { var applicationId = Guid.NewGuid(); var userId = Guid.NewGuid(); _userService.Setup(x => x.GetSignInId()).ReturnsAsync(() => userId); var inProgressApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.InProgress, ApplyData = new ApplyData() }; _apiClient.Setup(x => x.GetApplicationByUserId(applicationId, userId)).ReturnsAsync(() => inProgressApp); _taskListOrchestrator.Setup(x => x.GetTaskListViewModel(applicationId, userId)) .ReturnsAsync(() => new TaskListViewModel()); var result = await _controller.TaskList(applicationId); Assert.IsInstanceOf <ViewResult>(result); var viewResult = (ViewResult)result; Assert.AreEqual("~/Views/Roatp/TaskList.cshtml", viewResult.ViewName); }
public async Task SubmitApplicationSequence(Domain.Entities.Apply apply) { await _unitOfWork.Connection.ExecuteAsync( @"UPDATE Apply SET ApplicationStatus = @ApplicationStatus, ApplyData = @ApplyData, StandardCode = @StandardCode, ReviewStatus = @ReviewStatus, FinancialReviewStatus = @FinancialReviewStatus, UpdatedBy = @UpdatedBy, UpdatedAt = GETUTCDATE() WHERE (Apply.Id = @Id)", param : new { apply.ApplicationStatus, apply.ApplyData, apply.StandardCode, apply.ReviewStatus, apply.FinancialReviewStatus, apply.Id, apply.UpdatedBy }, transaction : _unitOfWork.Transaction); }
public async Task <Guid> CreateApplication(Domain.Entities.Apply apply) { return(await _unitOfWork.Connection.QuerySingleAsync <Guid>( @"INSERT INTO Apply (ApplicationId, OrganisationId ,ApplicationStatus, ApplyData, StandardCode, ReviewStatus, FinancialReviewStatus, CreatedBy, CreatedAt) OUTPUT INSERTED.[Id] VALUES (@ApplicationId, @OrganisationId, @ApplicationStatus, @ApplyData, @StandardCode, @ReviewStatus, @FinancialReviewStatus, @CreatedBy, GETUTCDATE())", param : new { apply.ApplicationId, apply.OrganisationId, apply.ApplicationStatus, apply.ApplyData, apply.StandardCode, apply.ReviewStatus, apply.FinancialReviewStatus, apply.CreatedBy }, transaction : _unitOfWork.Transaction)); }
public async Task SubmitApplicationSequence(Domain.Entities.Apply apply) { using (var connection = new SqlConnection(_configuration.SqlConnectionString)) { await connection.ExecuteAsync(@"UPDATE Apply SET ApplicationStatus = @ApplicationStatus, ApplyData = @ApplyData, StandardCode = @StandardCode, ReviewStatus = @ReviewStatus, FinancialReviewStatus = @FinancialReviewStatus, UpdatedBy = @UpdatedBy, UpdatedAt = GETUTCDATE() WHERE (Apply.Id = @Id)", new { apply.ApplicationStatus, apply.ApplyData, apply.StandardCode, apply.ReviewStatus, apply.FinancialReviewStatus, apply.Id, apply.UpdatedBy }); } }
public async Task <Guid> CreateApplication(Domain.Entities.Apply apply) { using (var connection = new SqlConnection(_configuration.SqlConnectionString)) { return(await connection.QuerySingleAsync <Guid>( @"INSERT INTO Apply (ApplicationId, OrganisationId ,ApplicationStatus, ApplyData, StandardCode, ReviewStatus, FinancialReviewStatus, CreatedBy, CreatedAt) OUTPUT INSERTED.[Id] VALUES (@ApplicationId, @OrganisationId, @ApplicationStatus, @ApplyData, @StandardCode, @ReviewStatus, @FinancialReviewStatus, @CreatedBy, GETUTCDATE())", new { apply.ApplicationId, apply.OrganisationId, apply.ApplicationStatus, apply.ApplyData, apply.StandardCode, apply.ReviewStatus, apply.FinancialReviewStatus, apply.CreatedBy })); } }
public void Update_Financial_Grade_with_clarification_Files_name_when_no_files_present() { var application = new Domain.Entities.Apply { FinancialGrade = new FinancialReviewDetails() }; _repository.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); _repository.Setup(x => x.UpdateFinancialReviewDetails(_applicationId, It.Is <FinancialReviewDetails>(g => g.ClarificationFiles.First().Filename == FileName))).ReturnsAsync(true); var result = _handler.Handle(_request, new CancellationToken()).GetAwaiter().GetResult(); Assert.IsTrue(result); }
public async Task <Guid> Handle(CreateApplicationRequest request, CancellationToken cancellationToken) { var org = await _organisationQueryRepository.Get(request.OrganisationId); var orgTypes = await _registerQueryRepository.GetOrganisationTypes(); var creatingContact = await _contactQueryRepository.GetContactById(request.CreatingContactId); if (org != null && orgTypes != null && creatingContact != null) { var orgType = orgTypes.FirstOrDefault(x => x.Id == org.OrganisationTypeId); var sequences = request.ApplySequences; DisableSequencesAndSectionsAsAppropriate(sequences, org, orgType); MakeLowerSequenceActive(sequences); var applyData = new ApplyData { Sequences = sequences, Apply = new ApplyTypes.Apply { ReferenceNumber = await CreateReferenceNumber(request.ApplicationReferenceFormat), InitSubmissions = new List <Submission>(), InitSubmissionsCount = 0, StandardSubmissions = new List <Submission>(), StandardSubmissionsCount = 0 } }; var application = new Domain.Entities.Apply { ApplyData = applyData, ApplicationId = request.QnaApplicationId, ApplicationStatus = ApplicationStatus.InProgress, ReviewStatus = ApplicationReviewStatus.Draft, FinancialReviewStatus = IsFinancialExempt(org.OrganisationData?.FHADetails, orgType) ? FinancialReviewStatus.Exempt : FinancialReviewStatus.Required, OrganisationId = org.Id, CreatedBy = creatingContact.Id.ToString(), CreatedAt = DateTime.UtcNow }; return(await _applyRepository.CreateApplication(application)); } return(Guid.Empty); }
public void Setup() { var application = new Domain.Entities.Apply() { ApplyData = new ApplyData() }; ApplyRepository = new Mock <IApplyRepository>(); ApplyRepository.Setup(r => r.CanSubmitApplication(It.IsAny <Guid>())).ReturnsAsync(true); ApplyRepository.Setup(r => r.GetApplication(It.IsAny <Guid>())).ReturnsAsync(application); ApplyRepository.Setup(r => r.GetNextRoatpApplicationReference()).ReturnsAsync("APR123456"); ContactRepository = new Mock <IContactRepository>(); ContactRepository.Setup(r => r.GetContact(It.IsAny <Guid>())).ReturnsAsync(new Contact()); Handler = new SubmitApplicationHandler(ApplyRepository.Object, ContactRepository.Object); }
private void SaveChanges(Appeal appeal, Domain.Entities.Apply application, bool isNew) { if (isNew) { _appealRepository.Add(appeal); } else { _appealRepository.Update(appeal); } if (!(application.ApplicationStatus == ApplicationStatus.Unsuccessful && appeal.Status == AppealStatus.Unsuccessful)) { _auditService.AuditUpdate(application); } switch (appeal.Status) { case AppealStatus.InProgress: application.ApplicationStatus = ApplicationStatus.InProgressAppeal; break; case AppealStatus.Successful: case AppealStatus.SuccessfulAlreadyActive: case AppealStatus.SuccessfulFitnessForFunding: if (application.GatewayReviewStatus == GatewayReviewStatus.Fail) { application.ApplicationStatus = ApplicationStatus.AppealSuccessful; } else { application.ApplicationStatus = ApplicationStatus.Successful; } break; case AppealStatus.Unsuccessful: application.ApplicationStatus = ApplicationStatus.Unsuccessful; break; } _applyRepository.Update(application); _applicationUpdatedEmailService.SendEmail(appeal.ApplicationId); }
public void Remove_File_From_Financial_Grade_Where_There_Is_Only_One_File() { var application = new Domain.Entities.Apply { FinancialGrade = new FinancialReviewDetails { ClarificationFiles = new List <ClarificationFile> { new ClarificationFile { Filename = FileName } } } }; _repository.Setup(x => x.GetApplication(_applicationId)).ReturnsAsync(application); _repository.Setup(x => x.UpdateFinancialReviewDetails(_applicationId, It.IsAny <FinancialReviewDetails>())).ReturnsAsync(true); var result = _handler.Handle(_request, new CancellationToken()).GetAwaiter().GetResult(); _repository.Verify(x => x.UpdateFinancialReviewDetails(_applicationId, It.Is <FinancialReviewDetails>(g => g.ClarificationFiles.Count == 0))); Assert.IsTrue(result); }
private void UpdateApplicationAndReviewStatus(Domain.Entities.Apply application, int sequenceNo) { if (application.ReviewStatus != ApplicationReviewStatus.HasFeedback) { application.ReviewStatus = ApplicationReviewStatus.New; } var applyData = application.ApplyData; if (sequenceNo == ApplyConst.ORGANISATION_SEQUENCE_NO) { application.ApplicationStatus = (applyData.Apply.InitSubmissionsCount == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; var closedFinanicalStatuses = new List <string> { FinancialReviewStatus.Approved, FinancialReviewStatus.Exempt }; if (!closedFinanicalStatuses.Contains(application.FinancialReviewStatus)) { if (GetFinancialStatus(applyData) != ApplicationSectionStatus.Evaluated) { application.FinancialReviewStatus = FinancialReviewStatus.New; } } } else if (sequenceNo == ApplyConst.STANDARD_SEQUENCE_NO) { application.ApplicationStatus = (applyData.Apply.StandardSubmissionsCount == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; } else if (sequenceNo == ApplyConst.ORGANISATION_WITHDRAWAL_SEQUENCE_NO) { application.ApplicationStatus = (applyData.Apply.OrganisationWithdrawalSubmissionsCount == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; } else if (sequenceNo == ApplyConst.STANDARD_WITHDRAWAL_SEQUENCE_NO) { application.ApplicationStatus = (applyData.Apply.StandardWithdrawalSubmissionsCount == 1) ? ApplicationStatus.Submitted : ApplicationStatus.Resubmitted; } else { application.ApplicationStatus = ApplicationStatus.Submitted; } }
public async Task Applications_shows_task_list_if_an_application_in_progress() { var inProgressApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.InProgress }; var applications = new List <Domain.Entities.Apply> { inProgressApp }; _apiClient.Setup(x => x.GetApplications(It.IsAny <Guid>(), It.IsAny <bool>())).ReturnsAsync(applications); var result = await _controller.Applications(); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("TaskList"); }
public async Task Applications_shows_withdrawn_page_if_application_withdrawn() { var submittedApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.Withdrawn }; var applications = new List <Domain.Entities.Apply> { submittedApp }; _apiClient.Setup(x => x.GetApplications(It.IsAny <Guid>(), It.IsAny <bool>())).ReturnsAsync(applications); var result = await _controller.Applications(); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("ApplicationWithdrawn"); }
public async Task Applications_shows_enter_ukprn_page_if_application_cancelled() { var submittedApp = new Domain.Entities.Apply { ApplicationStatus = ApplicationStatus.Cancelled }; var applications = new List <Domain.Entities.Apply> { submittedApp }; _apiClient.Setup(x => x.GetApplications(It.IsAny <Guid>(), It.IsAny <bool>())).ReturnsAsync(applications); var result = await _controller.Applications(); var redirectResult = result as RedirectToActionResult; redirectResult.Should().NotBeNull(); redirectResult.ActionName.Should().Be("EnterApplicationUkprn"); redirectResult.ControllerName.Should().Be("RoatpApplicationPreamble"); }
private void SaveChanges(OversightReview oversightReview, Domain.Entities.Apply application, bool isNew) { if (isNew) { _oversightReviewRepository.Add(oversightReview); } else { _oversightReviewRepository.Update(oversightReview); } if (oversightReview.Status == OversightReviewStatus.InProgress) { return; } application.ApplicationStatus = oversightReview.Status == OversightReviewStatus.Unsuccessful ? ApplicationStatus.Rejected : ApplicationStatus.Approved; _applyRepository.Update(application); }
public async Task GetProviderRouteName_returns_expected_value(string providerRouteName) { var application = new Domain.Entities.Apply { ApplicationId = _applicationId, ApplyData = new Domain.Entities.ApplyData { ApplyDetails = new Domain.Entities.ApplyDetails { ProviderRouteName = providerRouteName } } }; _mediator .Setup(x => x.Send(It.Is <GetApplicationRequest>(y => y.ApplicationId == _applicationId), It.IsAny <CancellationToken>())) .ReturnsAsync(application); var actualResult = await _controller.GetProviderRouteName(_applicationId); Assert.AreEqual(providerRouteName, actualResult); }
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>()); }