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