public IActionResult ReportDiscardDraftPost(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); DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear); bool draftReturnExists = draftReturn != null; if (!draftReturnExists) { string nextPageNoDraftUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "No draft to discard", nextPageNoDraftUrl); return(LocalRedirect(nextPageNoDraftUrl)); } dataRepository.Delete(draftReturn); dataRepository.SaveChanges(); Organisation organisation = dataRepository.Get <Organisation>(organisationId); Return submittedReturn = organisation.GetReturn(reportingYear); bool isEditingSubmittedReturn = submittedReturn != null; string yourChangesOrYourDraftReport = isEditingSubmittedReturn ? "your changes" : "your draft report"; string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, $"Discarded {yourChangesOrYourDraftReport}", nextPageUrl); return(LocalRedirect(nextPageUrl)); }
public IActionResult ReportSizeOfOrganisationPost(string encryptedOrganisationId, int reportingYear, ReportSizeOfOrganisationViewModel viewModel) { ControllerHelper.Throw404IfFeatureDisabled(FeatureFlag.NewReportingJourney); long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); ValidateUserInput(viewModel); if (viewModel.HasAnyErrors()) { PopulateViewModel(viewModel, organisationId, reportingYear); return(View("ReportSizeOfOrganisation", viewModel)); } SaveChangesToDraftReturn(viewModel, organisationId, reportingYear); string nextPageUrl = viewModel.Action == ReportPagesAction.Save ? Url.Action("ReportSizeOfOrganisationGet", "ReportSizeOfOrganisation", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }) : Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "Saved changes to size of organisation", nextPageUrl); return(LocalRedirect(nextPageUrl)); }
public IActionResult ReportDiscardDraftGet(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); DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear); bool draftReturnExists = draftReturn != null; if (!draftReturnExists) { string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "No draft to discard", nextPageUrl); return(LocalRedirect(nextPageUrl)); } var viewModel = new ReportDiscardDraftViewModel(); PopulateViewModel(viewModel, organisationId, reportingYear); return(View("ReportDiscardDraft", viewModel)); }
public IActionResult ReportResponsiblePersonGet(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); Organisation organisation = dataRepository.Get <Organisation>(organisationId); if (organisation.SectorType == SectorTypes.Public) { string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "Public authority employers are not required to provide a person responsible", nextPageUrl); return(LocalRedirect(nextPageUrl)); } var viewModel = new ReportResponsiblePersonViewModel(); PopulateViewModel(viewModel, organisationId, reportingYear); SetValuesFromDraftReturnOrSubmittedReturn(viewModel, organisationId, reportingYear); return(View("ReportResponsiblePerson", viewModel)); }
public IActionResult ChangePersonalDetailsPost(ChangePersonalDetailsViewModel viewModel) { ControllerHelper.ThrowIfAdminIsImpersonatingUser(User); viewModel.ParseAndValidateParameters(Request, m => m.FirstName); viewModel.ParseAndValidateParameters(Request, m => m.LastName); viewModel.ParseAndValidateParameters(Request, m => m.JobTitle); viewModel.ParseAndValidateParameters(Request, m => m.ContactPhoneNumber); if (viewModel.HasAnyErrors()) { return(View("ChangePersonalDetails", viewModel)); } // Get the user db entry User currentUser = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); AuditLogChanges(currentUser, viewModel); SaveUserDetails(currentUser, viewModel); string nextPageUrl = Url.Action("ManageAccountGet", "ManageAccount"); StatusMessageHelper.SetStatusMessage(Response, "Saved changes to personal details", nextPageUrl); // Return user to the Manage Account page return(LocalRedirect(nextPageUrl)); }
public IActionResult ChangePasswordPost(ChangePasswordViewModel viewModel) { ControllerHelper.ThrowIfAdminIsImpersonatingUser(User); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); // Check all values are provided and NewPassword is at least 8 characters long viewModel.ParseAndValidateParameters(Request, m => m.CurrentPassword); viewModel.ParseAndValidateParameters(Request, m => m.NewPassword); viewModel.ParseAndValidateParameters(Request, m => m.ConfirmNewPassword); // Get the current user User currentUser = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); // Check that passwords are valid ValidatePasswords(viewModel, currentUser); if (viewModel.HasAnyErrors()) { return(View("ChangePassword", viewModel)); } userRepository.UpdatePassword(currentUser, viewModel.NewPassword); // send password change notification emailSendingService.SendChangePasswordCompletedEmail(currentUser.EmailAddress); // Set up success notification on Manage Account page string nextPageUrl = Url.Action("ManageAccountGet", "ManageAccount"); StatusMessageHelper.SetStatusMessage(Response, "Your password has been changed successfully", nextPageUrl); // Return user to the Manage Account page return(LocalRedirect(nextPageUrl)); }
private IActionResult RedirectToReportOverviewPage(string encryptedOrganisationId, int reportingYear, string message) { string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId, reportingYear }); StatusMessageHelper.SetStatusMessage(Response, message, nextPageUrl); return(LocalRedirect(nextPageUrl)); }
public IActionResult ReportResponsiblePersonPost(string encryptedOrganisationId, int reportingYear, ReportResponsiblePersonViewModel viewModel) { long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); Organisation organisation = dataRepository.Get <Organisation>(organisationId); if (organisation.SectorType == SectorTypes.Public) { string nextPagePublicSectorUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId, reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "Public authority employers are not required to provide a person responsible", nextPagePublicSectorUrl); return(LocalRedirect(nextPagePublicSectorUrl)); } ValidateUserInput(viewModel); if (viewModel.HasAnyErrors()) { PopulateViewModel(viewModel, organisationId, reportingYear); return(View("ReportResponsiblePerson", viewModel)); } SaveChangesToDraftReturn(viewModel, organisationId, reportingYear); string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId, reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "Saved changes to draft", nextPageUrl); return(LocalRedirect(nextPageUrl)); }
private IActionResult RedirectToReportOverviewPageWithNotReadyStatusMessage(string encryptedOrganisationId, int reportingYear) { string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId = encryptedOrganisationId, reportingYear = reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "This report is not ready to submit. Complete the remaining sections", nextPageUrl); return(LocalRedirect(nextPageUrl)); }
public IActionResult Edit(string id) { var entity = _GuestbookService.GetDataById(id); if (entity.CreatorId != this.UserId) { StatusMessageHelper.AddMessage(message: "您無法修改此留言!", contentType: StatusMessageHelper.ContentType.Danger); return(RedirectToAction(nameof(Index))); } return(View(entity)); }
public async Task <IActionResult> ChangePasswordAsync(ViewModels.Members.ChangePassword changeData) { if (ModelState.IsValid) { var applicationUser = await _userManager.FindByNameAsync(User.Identity.Name); var result = _memberService.ChangePassword(applicationUser, changeData.Password, changeData.NewPassword, out string message); StatusMessageHelper.AddMessage(message: message, contentType: result ? StatusMessageHelper.ContentType.Success : StatusMessageHelper.ContentType.Warning); } return(View()); }
public IActionResult EmailValidate(string account, string authCode) { if (account == null || authCode == null) { return(RedirectToAction("Index", "Home")); } var blPass = _memberService.EmailValidate(account, authCode, out string message); StatusMessageHelper.AddMessage(message: message, contentType: blPass ? StatusMessageHelper.ContentType.Success : StatusMessageHelper.ContentType.Danger, dismissible: false, keep: true); return(View()); }
public async Task <IActionResult> Register(ViewModels.Members.Register registerMember) { if (ModelState.IsValid) { var newMember = _mapper.Map <ApplicationUser>(registerMember); var result = await _memberService.RegisterAsync(newMember, registerMember.Password); if (result.Succeeded) { var authCode = await _userManager.GenerateEmailConfirmationTokenAsync(newMember); authCode = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(authCode)); string tempMail = System.IO.File.ReadAllText("Views/Shared/RegisterEmailTemplate.html"); UriBuilder validateUrl = new UriBuilder("http", "localhost", Request.Host.Port ?? 5000) { Path = Url.Action("EmailValidate", "Members", new { Account = newMember.UserName, AuthCode = authCode }) }; string mailBody = _mailService.GetRegiesterMailBody(tempMail, newMember.Name, validateUrl.ToString().Replace("%3F", "?")); await _mailService.SendRegisterMailAsync(mailBody, newMember.Email); StatusMessageHelper.AddMessage(message: "註冊成功,請去收信進行Email驗證", dismissible: false, keep: true); return(RedirectToAction("RegisterResult")); } else { foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } } } registerMember.Password = null; registerMember.PasswordCheck = null; return(View(registerMember)); }
public IActionResult ChangeContactPreferencesPost(ChangeContactPreferencesViewModel viewModel) { ControllerHelper.ThrowIfAdminIsImpersonatingUser(User); // Get the user db entry User currentUser = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); // Update the user's information currentUser.SendUpdates = viewModel.SendUpdates; currentUser.AllowContact = viewModel.AllowContact; // Save updates dataRepository.SaveChanges(); string nextPageUrl = Url.Action("ManageAccountGet", "ManageAccount"); StatusMessageHelper.SetStatusMessage(Response, "Saved changes to contact preferences", nextPageUrl); // Return user to the Manage Account page return(LocalRedirect(nextPageUrl)); }
public IActionResult ChangePasswordPost(ChangePasswordViewModel viewModel) { ControllerHelper.ThrowIfAdminIsImpersonatingUser(User); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); // Check all values are provided and NewPassword is at least 8 characters long viewModel.ParseAndValidateParameters(Request, m => m.CurrentPassword); viewModel.ParseAndValidateParameters(Request, m => m.NewPassword); viewModel.ParseAndValidateParameters(Request, m => m.ConfirmNewPassword); // Get the current user User currentUser = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); // Check that passwords are valid ValidatePasswords(viewModel, currentUser); if (currentUser.ResetAttempts == Global.MaxAuthAttempts) { currentUser.ResetAttempts = 0; dataRepository.SaveChanges(); StatusMessageHelper.SetStatusMessage(Response, "You have been logged out for security reasons", Url.Action("LoggedOut", "Login")); return(LoginHelper.Logout(HttpContext, RedirectToAction("LoggedOut", "Login"))); } if (viewModel.HasAnyErrors()) { return(View("ChangePassword", viewModel)); } userRepository.UpdatePassword(currentUser, viewModel.NewPassword); // send password change notification emailSendingService.SendChangePasswordCompletedEmail(currentUser.EmailAddress); // Set up success notification on Manage Account page string nextPageUrl = Url.Action("LoggedOut", "Login"); StatusMessageHelper.SetStatusMessage(Response, "Your password has been changed successfully", nextPageUrl); return(LoginHelper.Logout(HttpContext, RedirectToAction("LoggedOut", "Login"))); }
public IActionResult ReportLinkToWebsitePost(string encryptedOrganisationId, int reportingYear, ReportLinkToWebsiteViewModel viewModel) { long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); ValidateUserInput(viewModel); if (viewModel.HasAnyErrors()) { PopulateViewModel(viewModel, organisationId, reportingYear); return(View("ReportLinkToWebsite", viewModel)); } SaveChangesToDraftReturn(viewModel, organisationId, reportingYear); string nextPageUrl = Url.Action("ReportOverview", "ReportOverview", new { encryptedOrganisationId, reportingYear }); StatusMessageHelper.SetStatusMessage(Response, "Saved changes to draft", nextPageUrl); return(LocalRedirect(nextPageUrl)); }