private static void SetBonusPayFiguresFromSubmittedReturn(ReportFiguresViewModel viewModel, Return submittedReturn) { viewModel.FemaleBonusPayPercent = submittedReturn.FemaleMedianBonusPayPercent; viewModel.MaleBonusPayPercent = submittedReturn.MaleMedianBonusPayPercent; viewModel.DiffMeanBonusPercent = submittedReturn.DiffMeanBonusPercent; viewModel.DiffMedianBonusPercent = submittedReturn.DiffMedianBonusPercent; }
private static void SetFiguresFromSubmittedReturn(ReportFiguresViewModel viewModel, Return submittedReturn) { SetHourlyPayQuarterFiguresFromSubmittedReturn(viewModel, submittedReturn); SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromSubmittedReturn(viewModel, submittedReturn); SetBonusPayFiguresFromSubmittedReturn(viewModel, submittedReturn); SetOptedOutOfReportingPayQuarterFromSubmittedReturn(viewModel, submittedReturn); }
private static void SaveBonusPayFiguresToDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { draftReturn.FemaleMedianBonusPayPercent = viewModel.FemaleBonusPayPercent; draftReturn.MaleMedianBonusPayPercent = viewModel.MaleBonusPayPercent; draftReturn.DiffMeanBonusPercent = viewModel.DiffMeanBonusPercent; draftReturn.DiffMedianBonusPercent = viewModel.DiffMedianBonusPercent; }
private static void SetBonusPayFiguresFromDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { viewModel.FemaleBonusPayPercent = draftReturn.FemaleMedianBonusPayPercent; viewModel.MaleBonusPayPercent = draftReturn.MaleMedianBonusPayPercent; viewModel.DiffMeanBonusPercent = draftReturn.DiffMeanBonusPercent; viewModel.DiffMedianBonusPercent = draftReturn.DiffMedianBonusPercent; }
public static void SaveFiguresToDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { SaveBonusPayFiguresToDraftReturn(viewModel, draftReturn); SaveHourlyPayFiguresToDraftReturn(viewModel, draftReturn); SaveOptedOutOfReportingPayQuartersToDraftReturn(viewModel, draftReturn); SavePayQuartileFiguresToDraftReturn(viewModel, draftReturn); }
private void SaveChangesToDraftReturn(ReportFiguresViewModel viewModel, long organisationId, int reportingYear) { DraftReturn draftReturn = draftReturnService.GetOrCreateDraftReturn(organisationId, reportingYear); ReportFiguresHelper.SaveFiguresToDraftReturn(viewModel, draftReturn); draftReturnService.SaveDraftReturnOrDeleteIfNotRelevant(draftReturn); }
private static void ValidateBonusPayFigures(ReportFiguresViewModel viewModel, HttpRequest request) { ParseAndValidateParameters(viewModel, request, m => m.FemaleBonusPayPercent); ParseAndValidateParameters(viewModel, request, m => m.MaleBonusPayPercent); ParseAndValidateParameters(viewModel, request, m => m.DiffMeanBonusPercent); ParseAndValidateParameters(viewModel, request, m => m.DiffMedianBonusPercent); ValidateBonusPayIntegrity(viewModel); }
private void PopulateViewModel(ReportFiguresViewModel viewModel, long organisationId, int reportingYear) { Organisation organisation = dataRepository.Get <Organisation>(organisationId); viewModel.Organisation = organisation; viewModel.ReportingYear = reportingYear; viewModel.IsEditingSubmittedReturn = organisation.HasSubmittedReturn(reportingYear); viewModel.SnapshotDate = organisation.SectorType.GetAccountingStartDate(reportingYear); }
private static void ParseAndValidateParameters( ReportFiguresViewModel viewModel, HttpRequest request, Expression <Func <ReportFiguresViewModel, decimal?> > propertyLambdaExpressions) { if (!viewModel.HasErrorFor(propertyLambdaExpressions)) { viewModel.ParseAndValidateParameters(request, propertyLambdaExpressions); } }
private static bool HasPayQuarterFigures(ReportFiguresViewModel viewModel) { return(viewModel.MaleLowerPayBand.HasValue || viewModel.FemaleLowerPayBand.HasValue || viewModel.MaleLowerMiddlePayBand.HasValue || viewModel.FemaleLowerMiddlePayBand.HasValue || viewModel.MaleUpperPayBand.HasValue || viewModel.FemaleUpperPayBand.HasValue || viewModel.MaleUpperMiddlePayBand.HasValue || viewModel.FemaleUpperMiddlePayBand.HasValue); }
private static void SetHourlyPayQuarterFiguresFromDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { viewModel.MaleUpperPayBand = draftReturn.MaleUpperQuartilePayBand; viewModel.FemaleUpperPayBand = draftReturn.FemaleUpperQuartilePayBand; viewModel.MaleUpperMiddlePayBand = draftReturn.MaleUpperPayBand; viewModel.FemaleUpperMiddlePayBand = draftReturn.FemaleUpperPayBand; viewModel.MaleLowerMiddlePayBand = draftReturn.MaleMiddlePayBand; viewModel.FemaleLowerMiddlePayBand = draftReturn.FemaleMiddlePayBand; viewModel.MaleLowerPayBand = draftReturn.MaleLowerPayBand; viewModel.FemaleLowerPayBand = draftReturn.FemaleLowerPayBand; }
private static void SavePayQuartileFiguresToDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { draftReturn.MaleUpperQuartilePayBand = viewModel.MaleUpperPayBand; draftReturn.FemaleUpperQuartilePayBand = viewModel.FemaleUpperPayBand; draftReturn.MaleUpperPayBand = viewModel.MaleUpperMiddlePayBand; draftReturn.FemaleUpperPayBand = viewModel.FemaleUpperMiddlePayBand; draftReturn.MaleMiddlePayBand = viewModel.MaleLowerMiddlePayBand; draftReturn.FemaleMiddlePayBand = viewModel.FemaleLowerMiddlePayBand; draftReturn.MaleLowerPayBand = viewModel.MaleLowerPayBand; draftReturn.FemaleLowerPayBand = viewModel.FemaleLowerPayBand; }
private static void SetHourlyPayQuarterFiguresFromSubmittedReturn(ReportFiguresViewModel viewModel, Return submittedReturn) { viewModel.MaleUpperPayBand = submittedReturn.MaleUpperQuartilePayBand; viewModel.FemaleUpperPayBand = submittedReturn.FemaleUpperQuartilePayBand; viewModel.MaleUpperMiddlePayBand = submittedReturn.MaleUpperPayBand; viewModel.FemaleUpperMiddlePayBand = submittedReturn.FemaleUpperPayBand; viewModel.MaleLowerMiddlePayBand = submittedReturn.MaleMiddlePayBand; viewModel.FemaleLowerMiddlePayBand = submittedReturn.FemaleMiddlePayBand; viewModel.MaleLowerPayBand = submittedReturn.MaleLowerPayBand; viewModel.FemaleLowerPayBand = submittedReturn.FemaleLowerPayBand; }
public static void SetFigures(ReportFiguresViewModel viewModel, DraftReturn draftReturn, Return submittedReturn) { if (draftReturn != null) { SetFiguresFromDraftReturn(viewModel, draftReturn); } else if (submittedReturn != null) { SetFiguresFromSubmittedReturn(viewModel, submittedReturn); } }
private static void ValidatePayQuartileFigures(ReportFiguresViewModel viewModel, HttpRequest request) { ParseAndValidateParameters(viewModel, request, m => m.MaleUpperPayBand); ParseAndValidateParameters(viewModel, request, m => m.FemaleUpperPayBand); ParseAndValidateParameters(viewModel, request, m => m.MaleUpperMiddlePayBand); ParseAndValidateParameters(viewModel, request, m => m.FemaleUpperMiddlePayBand); ParseAndValidateParameters(viewModel, request, m => m.MaleLowerMiddlePayBand); ParseAndValidateParameters(viewModel, request, m => m.FemaleLowerMiddlePayBand); ParseAndValidateParameters(viewModel, request, m => m.MaleLowerPayBand); ParseAndValidateParameters(viewModel, request, m => m.FemaleLowerPayBand); ValidatePayQuartersAddUpToOneHundred(viewModel); }
private static void ValidateBonusPayIntegrity(ReportFiguresViewModel viewModel) { const string errorMessageFemaleBonusGreaterThanZero = "Where the % of women receiving a bonus is > 0 AND men also received a bonus greater than 0, " + "then the mean or median bonus difference must be less than 100%"; // ensure that bonus differences do not exceed 100% when females have a bonus if (viewModel.FemaleBonusPayPercent > 0) { if (viewModel.DiffMeanBonusPercent > 100) { viewModel.AddErrorFor(m => m.DiffMeanBonusPercent, errorMessageFemaleBonusGreaterThanZero); } if (viewModel.DiffMedianBonusPercent > 100) { viewModel.AddErrorFor(m => m.DiffMedianBonusPercent, errorMessageFemaleBonusGreaterThanZero); } } const string errorMessageMaleBonusIsZero = "Do not enter a bonus difference if 0% of men received a bonus"; // prevents entering a difference when male bonus percent is 0 if (viewModel.MaleBonusPayPercent == 0) { if (viewModel.DiffMeanBonusPercent.HasValue) { viewModel.AddErrorFor(m => m.DiffMeanBonusPercent, errorMessageMaleBonusIsZero); } if (viewModel.DiffMedianBonusPercent.HasValue) { viewModel.AddErrorFor(m => m.DiffMedianBonusPercent, errorMessageMaleBonusIsZero); } } const string errorMessageMaleBonusGreaterThanZero = "Enter a percentage lower than or equal to 100"; if (viewModel.MaleBonusPayPercent > 0) { if (!viewModel.DiffMeanBonusPercent.HasValue) { viewModel.AddErrorFor(m => m.DiffMeanBonusPercent, errorMessageMaleBonusGreaterThanZero); } if (!viewModel.DiffMedianBonusPercent.HasValue) { viewModel.AddErrorFor(m => m.DiffMedianBonusPercent, errorMessageMaleBonusGreaterThanZero); } } }
public IActionResult ReportFiguresGet(string encryptedOrganisationId, int reportingYear) { long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); var viewModel = new ReportFiguresViewModel(); PopulateViewModel(viewModel, organisationId, reportingYear); DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear); Return submittedReturn = viewModel.Organisation.GetReturn(reportingYear); ReportFiguresHelper.SetFigures(viewModel, draftReturn, submittedReturn); return(View("ReportFigures", viewModel)); }
public static void ValidateUserInput(ReportFiguresViewModel viewModel, HttpRequest request, int reportingYear) { ValidateBonusPayFigures(viewModel, request); ValidateHourlyPayFigures(viewModel, request); ValidatePayQuartileFigures(viewModel, request); if (viewModel.OptedOutOfReportingPayQuarters) { if (!ReportingYearsHelper.IsReportingYearWithFurloughScheme(reportingYear)) { const string errorMessage = "You cannot opt out of reporting your pay quarter figures for this reporting year"; viewModel.AddErrorFor(m => m.OptedOutOfReportingPayQuarters, errorMessage); } if (HasPayQuarterFigures(viewModel)) { const string errorMessage = "Do not enter the data for the percentage of men and women in each hourly pay quarter " + "if you have opted out of reporting your pay quarter figures"; viewModel.AddErrorFor(m => m.OptedOutOfReportingPayQuarters, errorMessage); } } }
private static void ValidatePayQuartersAddUpToOneHundred(ReportFiguresViewModel viewModel) { // Validate percents add up to 100 string errorMessage = "Figures for each quarter must add up to 100%"; if (viewModel.FemaleUpperPayBand.HasValue && viewModel.MaleUpperPayBand.HasValue && viewModel.FemaleUpperPayBand.Value + viewModel.MaleUpperPayBand.Value != 100) { viewModel.AddErrorFor(m => m.FemaleUpperPayBand, errorMessage); viewModel.AddErrorFor(m => m.MaleUpperPayBand, errorMessage); } if (viewModel.FemaleUpperMiddlePayBand.HasValue && viewModel.MaleUpperMiddlePayBand.HasValue && viewModel.FemaleUpperMiddlePayBand.Value + viewModel.MaleUpperMiddlePayBand.Value != 100) { viewModel.AddErrorFor(m => m.FemaleUpperMiddlePayBand, errorMessage); viewModel.AddErrorFor(m => m.MaleUpperMiddlePayBand, errorMessage); } if (viewModel.FemaleLowerMiddlePayBand.HasValue && viewModel.MaleLowerMiddlePayBand.HasValue && viewModel.FemaleLowerMiddlePayBand.Value + viewModel.MaleLowerMiddlePayBand.Value != 100) { viewModel.AddErrorFor(m => m.FemaleLowerMiddlePayBand, errorMessage); viewModel.AddErrorFor(m => m.MaleLowerMiddlePayBand, errorMessage); } if (viewModel.FemaleLowerPayBand.HasValue && viewModel.MaleLowerPayBand.HasValue && viewModel.FemaleLowerPayBand.Value + viewModel.MaleLowerPayBand.Value != 100) { viewModel.AddErrorFor(m => m.FemaleLowerPayBand, errorMessage); viewModel.AddErrorFor(m => m.MaleLowerPayBand, errorMessage); } }
private static void SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { viewModel.DiffMeanHourlyPayPercent = draftReturn.DiffMeanHourlyPayPercent; viewModel.DiffMedianHourlyPercent = draftReturn.DiffMedianHourlyPercent; }
public IActionResult ReportFiguresPost(string encryptedOrganisationId, int reportingYear, ReportFiguresViewModel viewModel) { long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId); ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository); ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId); ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear); ReportFiguresHelper.ValidateUserInput(viewModel, Request, reportingYear); if (viewModel.HasAnyErrors()) { PopulateViewModel(viewModel, organisationId, reportingYear); return(View("ReportFigures", 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 static void SetOptedOutOfReportingPayQuarterFromDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { viewModel.OptedOutOfReportingPayQuarters = draftReturn.OptedOutOfReportingPayQuarters; }
private static void SetOptedOutOfReportingPayQuarterFromSubmittedReturn(ReportFiguresViewModel viewModel, Return submittedReturn) { viewModel.OptedOutOfReportingPayQuarters = submittedReturn.OptedOutOfReportingPayQuarters; }
private static void SaveHourlyPayFiguresToDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { draftReturn.DiffMeanHourlyPayPercent = viewModel.DiffMeanHourlyPayPercent; draftReturn.DiffMedianHourlyPercent = viewModel.DiffMedianHourlyPercent; }
private static void SaveOptedOutOfReportingPayQuartersToDraftReturn(ReportFiguresViewModel viewModel, DraftReturn draftReturn) { draftReturn.OptedOutOfReportingPayQuarters = viewModel.OptedOutOfReportingPayQuarters; }
private static void SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromSubmittedReturn(ReportFiguresViewModel viewModel, Return submittedReturn) { viewModel.DiffMeanHourlyPayPercent = submittedReturn.DiffMeanHourlyPayPercent; viewModel.DiffMedianHourlyPercent = submittedReturn.DiffMedianHourlyPercent; }
private static void ValidateHourlyPayFigures(ReportFiguresViewModel viewModel, HttpRequest request) { ParseAndValidateParameters(viewModel, request, m => m.DiffMeanHourlyPayPercent); ParseAndValidateParameters(viewModel, request, m => m.DiffMedianHourlyPercent); }