public IActionResult LateSubmissionGet(string encryptedOrganisationId, int reportingYear) { ControllerHelper.Throw404IfFeatureDisabled(FeatureFlag.NewReportingJourney); long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); if (!draftReturnService.DraftReturnExistsAndIsComplete(organisationId, reportingYear)) { return(RedirectToReportOverviewPageWithNotReadyStatusMessage(encryptedOrganisationId, reportingYear)); } DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear); if (!draftReturnService.DraftReturnWouldBeNewlyLateIfSubmittedNow(draftReturn)) { // If (somehow) this is not a late submission, send the user back to the Review page return(RedirectToAction("ReportReview", "ReportReviewAndSubmit", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear })); } var viewModel = new ReportLateSubmissionViewModel(); PopulateLateSubmissionViewModel(viewModel, organisationId, reportingYear); return(View("LateSubmission", viewModel)); }
private void PopulateLateSubmissionViewModel(ReportLateSubmissionViewModel viewModel, long organisationId, int reportingYear) { Organisation organisation = dataRepository.Get <Organisation>(organisationId); DateTime snapshotDate = organisation.SectorType.GetAccountingStartDate(reportingYear); DateTime deadlineDate = ReportingYearsHelper.GetDeadlineForAccountingDate(snapshotDate); Return submittedReturn = organisation.GetReturn(reportingYear); bool isEditingSubmittedReturn = submittedReturn != null; viewModel.Organisation = organisation; viewModel.ReportingYear = reportingYear; viewModel.DeadlineDate = deadlineDate; viewModel.IsEditingSubmittedReturn = isEditingSubmittedReturn; }
public IActionResult LateSubmissionPost(string encryptedOrganisationId, int reportingYear, ReportLateSubmissionViewModel viewModel) { ControllerHelper.Throw404IfFeatureDisabled(FeatureFlag.NewReportingJourney); long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); if (!draftReturnService.DraftReturnExistsAndIsComplete(organisationId, reportingYear)) { return(RedirectToReportOverviewPageWithNotReadyStatusMessage(encryptedOrganisationId, reportingYear)); } DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear); if (!draftReturnService.DraftReturnWouldBeNewlyLateIfSubmittedNow(draftReturn)) { // If (somehow) this is not a late submission, send the user back to the Review page return(RedirectToAction("ReportReview", "ReportReviewAndSubmit", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear })); } viewModel.ParseAndValidateParameters(Request, m => m.ReceivedLetterFromEhrc); viewModel.ParseAndValidateParameters(Request, m => m.Reason); if (viewModel.HasAnyErrors()) { PopulateLateSubmissionViewModel(viewModel, organisationId, reportingYear); return(View("LateSubmission", viewModel)); } User user = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); bool receivedLetterFromEhrc = viewModel.ReceivedLetterFromEhrc == ReportLateSubmissionReceivedLetterFromEhrc.Yes; Return newReturn = returnService.CreateAndSaveLateReturnFromDraftReturn(draftReturn, user, Url, viewModel.Reason, receivedLetterFromEhrc); return(RedirectToAction("ReportConfirmation", "ReportConfirmation", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear, confirmationId = Encryption.EncryptQuerystring(newReturn.ReturnId.ToString()) })); }