Пример #1
0
        public IActionResult ReportOverview(string encryptedOrganisationId, int reportingYear, bool canTriggerLateSubmissionWarning = false)
        {
            long organisationId = ControllerHelper.DecryptOrganisationIdOrThrow404(encryptedOrganisationId);

            ControllerHelper.ThrowIfUserAccountRetiredOrEmailNotVerified(User, dataRepository);
            ControllerHelper.ThrowIfUserDoesNotHavePermissionsForGivenOrganisation(User, dataRepository, organisationId);
            ControllerHelper.ThrowIfReportingYearIsOutsideOfRange(reportingYear);

            if (draftReturnService.ShouldShowLateWarning(organisationId, reportingYear) && canTriggerLateSubmissionWarning)
            {
                return(RedirectToAction("LateSubmissionWarningGet", "LateSubmission", new { encryptedOrganisationId, reportingYear }));
            }

            Organisation organisation    = dataRepository.Get <Organisation>(organisationId);
            DraftReturn  draftReturn     = draftReturnService.GetDraftReturn(organisationId, reportingYear);
            Return       submittedReturn = organisation.GetReturn(reportingYear);

            if (draftReturn == null && submittedReturn == null)
            {
                return(RedirectToAction("ReportFiguresGet", "ReportFigures", new { encryptedOrganisationId, reportingYear }));
            }


            var viewModel = new ReportOverviewViewModel();

            PopulateViewModel(viewModel, organisation, draftReturn, submittedReturn, reportingYear);

            return(View("ReportOverview", viewModel));
        }
Пример #2
0
 private void SetBonusPayFiguresFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.FemaleBonusPayPercent  = submittedReturn.FemaleMedianBonusPayPercent;
     viewModel.MaleBonusPayPercent    = submittedReturn.MaleMedianBonusPayPercent;
     viewModel.DiffMeanBonusPercent   = submittedReturn.DiffMeanBonusPercent;
     viewModel.DiffMedianBonusPercent = submittedReturn.DiffMedianBonusPercent;
 }
Пример #3
0
 private void SetOrganisationInformation(ReportOverviewViewModel viewModel, Organisation organisation, int reportingYear)
 {
     viewModel.Organisation             = organisation;
     viewModel.ReportingYear            = reportingYear;
     viewModel.IsEditingSubmittedReturn = organisation.HasSubmittedReturn(reportingYear);
     viewModel.SnapshotDate             = organisation.SectorType.GetAccountingStartDate(reportingYear);
 }
Пример #4
0
 private void SetBonusPayFiguresFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.FemaleBonusPayPercent  = draftReturn.FemaleMedianBonusPayPercent;
     viewModel.MaleBonusPayPercent    = draftReturn.MaleMedianBonusPayPercent;
     viewModel.DiffMeanBonusPercent   = draftReturn.DiffMeanBonusPercent;
     viewModel.DiffMedianBonusPercent = draftReturn.DiffMedianBonusPercent;
 }
 private void SetInitialReportStatuses(ReportOverviewViewModel viewModel)
 {
     viewModel.HourlyPayStatus = TaskListStatus.NotStarted;
     viewModel.BonusPayStatus  = TaskListStatus.NotStarted;
     viewModel.EmployessByPayQuartileStatus = TaskListStatus.NotStarted;
     viewModel.PersonResponsibleStatus      = TaskListStatus.NotStarted;
     viewModel.OrganisationSizeStatus       = TaskListStatus.NotStarted;
     viewModel.LinkStatus            = TaskListStatus.NotStarted;
     viewModel.ReviewAndSubmitStatus = TaskListStatus.CannotStartYet;
 }
Пример #6
0
 private void SetHourlyPayQuarterFiguresFromDraftReturn(ReportOverviewViewModel 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;
 }
Пример #7
0
 private void SetHourlyPayQuarterFiguresFromSubmittedReturn(ReportOverviewViewModel 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;
 }
Пример #8
0
        private void SetValuesFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
        {
            SetHourlyPayQuarterFiguresFromDraftReturn(viewModel, draftReturn);
            SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromDraftReturn(viewModel, draftReturn);
            SetBonusPayFiguresFromDraftReturn(viewModel, draftReturn);
            SetPersonResponsibleFromDraftReturn(viewModel, draftReturn);

            SetOrganisationSizeFromDraftReturn(viewModel, draftReturn);
            SetLinkToGenderPayGapInformationFromDraftReturn(viewModel, draftReturn);

            SetOptedOutOfReportingPayQuarterFromDraftReturn(viewModel, draftReturn);
        }
        private void PopulateViewModel(ReportOverviewViewModel viewModel, long organisationId, int reportingYear)
        {
            Organisation organisation = dataRepository.Get <Organisation>(organisationId);

            viewModel.Organisation  = organisation;
            viewModel.ReportingYear = reportingYear;

            Return submittedReturn          = organisation.GetReturn(reportingYear);
            bool   isEditingSubmittedReturn = submittedReturn != null;

            viewModel.IsEditingSubmittedReturn = isEditingSubmittedReturn;
        }
Пример #10
0
        private void PopulateViewModel(ReportOverviewViewModel viewModel, Organisation organisation, DraftReturn draftReturn, Return submittedReturn, int reportingYear)
        {
            SetOrganisationInformation(viewModel, organisation, reportingYear);
            viewModel.DraftReturnExists = draftReturn != null;

            if (submittedReturn != null)
            {
                SetValuesFromSubmittedReturn(viewModel, submittedReturn);
            }
            if (draftReturn != null)
            {
                SetValuesFromDraftReturn(viewModel, draftReturn);
            }
        }
        private void SetReportStatusesFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
        {
            viewModel.HourlyPayStatus = TaskListStatus.Completed;
            viewModel.BonusPayStatus  = TaskListStatus.Completed;
            viewModel.EmployessByPayQuartileStatus = TaskListStatus.Completed;
            viewModel.PersonResponsibleStatus      = TaskListStatus.Completed;
            viewModel.OrganisationSizeStatus       = TaskListStatus.Completed;

            // LinkStatus is the only status that isn't definitely Complete
            // All the other fields are non-nullable in the database
            viewModel.LinkStatus = GetStatusFromStrings(submittedReturn.CompanyLinkToGPGInfo);

            viewModel.ReviewAndSubmitStatus = TaskListStatus.Completed;
        }
        private void SetReportStatusesFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
        {
            viewModel.HourlyPayStatus = GetStatusFromNullableValues(
                draftReturn.DiffMeanHourlyPayPercent,
                draftReturn.DiffMedianHourlyPercent);

            if (draftReturn.MaleMedianBonusPayPercent == 0 &&
                draftReturn.FemaleMedianBonusPayPercent == 0)
            {
                // If the number of men & women that receive bonuses is BOTH 0, then:
                // - these two fields are complete
                // - we don't need them to fill in the other two fields
                // so, the overall bonus task is complete
                viewModel.BonusPayStatus = TaskListStatus.Completed;
            }
            else
            {
                viewModel.BonusPayStatus = GetStatusFromNullableValues(
                    draftReturn.FemaleMedianBonusPayPercent,
                    draftReturn.MaleMedianBonusPayPercent,
                    draftReturn.DiffMeanBonusPercent,
                    draftReturn.DiffMedianBonusPercent);
            }

            viewModel.EmployessByPayQuartileStatus = GetStatusFromNullableValues(
                draftReturn.FemaleUpperQuartilePayBand,
                draftReturn.MaleUpperQuartilePayBand,
                draftReturn.FemaleUpperPayBand,
                draftReturn.MaleUpperPayBand,
                draftReturn.FemaleMiddlePayBand,
                draftReturn.MaleMiddlePayBand,
                draftReturn.FemaleLowerPayBand,
                draftReturn.MaleLowerPayBand);

            viewModel.PersonResponsibleStatus = GetStatusFromStrings(
                draftReturn.FirstName,
                draftReturn.LastName,
                draftReturn.JobTitle);

            viewModel.OrganisationSizeStatus = draftReturn.OrganisationSize.HasValue
                ? TaskListStatus.Completed
                : TaskListStatus.NotStarted;

            viewModel.LinkStatus = GetStatusFromStrings(draftReturn.CompanyLinkToGPGInfo);

            viewModel.ReviewAndSubmitStatus = CalculateReviewStatus(viewModel);
        }
        public IActionResult ReportOverview(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);

            var viewModel = new ReportOverviewViewModel();

            PopulateViewModel(viewModel, organisationId, reportingYear);
            SetReportStatuses(viewModel, organisationId, reportingYear);

            return(View("ReportOverview", viewModel));
        }
 private TaskListStatus CalculateReviewStatus(ReportOverviewViewModel viewModel)
 {
     if (viewModel.HourlyPayStatus == TaskListStatus.Completed &&
         viewModel.BonusPayStatus == TaskListStatus.Completed &&
         viewModel.EmployessByPayQuartileStatus == TaskListStatus.Completed &&
         (
             viewModel.PersonResponsibleStatus == TaskListStatus.Completed ||
             viewModel.Organisation.SectorType == SectorTypes.Public // Public sector organisations don't have to provide a responsible person
         ) &&
         viewModel.OrganisationSizeStatus == TaskListStatus.Completed)
     // The "website link" page is optional, so we don't check viewModel.LinkStatus
     {
         return(TaskListStatus.NotStarted);
     }
     else
     {
         return(TaskListStatus.CannotStartYet);
     }
 }
Пример #15
0
        public ActionResult Index(int id /* reviewId */)
        {
            var review           = _databaseContext.ReviewConfigurations.Find(id);
            var reviewCategories = review.Categories.OrderBy(c => c.Name).ToList();
            var result           = new ReportOverviewViewModel
            {
                ReviewId        = id,
                Title           = string.Format(@"Reports for review ""{0}""", review.Name),
                CategoryIds     = review.Categories.Select(p => p.Id).ToList(),
                Categories      = reviewCategories,
                CategoryId      = 0,                                             //reviewCategories.First().Id,
                Peers           = review.Peers,
                PeerIds         = review.Peers.Select(p => p.Id).ToList(),
                LoggedInUserId  = _databaseContext.UserProfiles.Single(user => user.EmailAddress == User.Identity.Name).Id,
                SelectedPeerIds = new List <int>()
            };

            return(View(result));
        }
        private void SetReportStatuses(ReportOverviewViewModel viewModel, long organisationId, int reportingYear)
        {
            DraftReturn draftReturn = draftReturnService.GetDraftReturn(organisationId, reportingYear);

            if (draftReturn != null)
            {
                viewModel.DraftReturnExists = true;
                SetReportStatusesFromDraftReturn(viewModel, draftReturn);
                return;
            }

            Return submittedReturn = viewModel.Organisation.GetReturn(reportingYear);

            if (submittedReturn != null)
            {
                SetReportStatusesFromSubmittedReturn(viewModel, submittedReturn);
                return;
            }

            SetInitialReportStatuses(viewModel);
        }
Пример #17
0
 private void SetOptedOutOfReportingPayQuarterFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.OptedOutOfReportingPayQuarters = submittedReturn.OptedOutOfReportingPayQuarters;
 }
Пример #18
0
 private void SetOptedOutOfReportingPayQuarterFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.OptedOutOfReportingPayQuarters = draftReturn.OptedOutOfReportingPayQuarters;
 }
Пример #19
0
 private void SetLinkToGenderPayGapInformationFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.LinkToOrganisationWebsite = submittedReturn.CompanyLinkToGPGInfo;
 }
Пример #20
0
 private void SetLinkToGenderPayGapInformationFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.LinkToOrganisationWebsite = draftReturn.CompanyLinkToGPGInfo;
 }
Пример #21
0
 private void SetOrganisationSizeFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.SizeOfOrganisation = submittedReturn.OrganisationSize;
 }
Пример #22
0
 private void SetOrganisationSizeFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.SizeOfOrganisation = draftReturn.OrganisationSize;
 }
Пример #23
0
 private void SetPersonResponsibleFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.ResponsiblePersonFirstName = submittedReturn.FirstName;
     viewModel.ResponsiblePersonLastName  = submittedReturn.LastName;
     viewModel.ResponsiblePersonJobTitle  = submittedReturn.JobTitle;
 }
Пример #24
0
 private void SetPersonResponsibleFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.ResponsiblePersonFirstName = draftReturn.FirstName;
     viewModel.ResponsiblePersonLastName  = draftReturn.LastName;
     viewModel.ResponsiblePersonJobTitle  = draftReturn.JobTitle;
 }
Пример #25
0
 public OverviewView(ClientOverviewViewModel clientOverviewViewModel, DeviceOverviewViewModel deviceOverviewViewModel, ReportOverviewViewModel reportOverviewViewModel)
     : this()
 {
     ClientControl.DataContext = clientOverviewViewModel;
     DeviceControl.DataContext = deviceOverviewViewModel;
     ReportControl.DataContext = reportOverviewViewModel;
 }
Пример #26
0
 private void SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromSubmittedReturn(ReportOverviewViewModel viewModel, Return submittedReturn)
 {
     viewModel.DiffMeanHourlyPayPercent = submittedReturn.DiffMeanHourlyPayPercent;
     viewModel.DiffMedianHourlyPercent  = submittedReturn.DiffMedianHourlyPercent;
 }
 protected bool Equals(ReportOverviewViewModel other)
 {
     return(string.Equals(WorkCell, other.WorkCell) && string.Equals(WorkUnit, other.WorkUnit) && Actual == other.Actual && Remaining == other.Remaining && Set == other.Set && OverflowRemaining == other.OverflowRemaining && OverflowSet == other.OverflowSet && string.Equals(RuleName, other.RuleName) && string.Equals(RuleType, other.RuleType));
 }
Пример #28
0
 private void SetMeanAndMedianGenderPayGapUsingHourlyPayFiguresFromDraftReturn(ReportOverviewViewModel viewModel, DraftReturn draftReturn)
 {
     viewModel.DiffMeanHourlyPayPercent = draftReturn.DiffMeanHourlyPayPercent;
     viewModel.DiffMedianHourlyPercent  = draftReturn.DiffMedianHourlyPercent;
 }