Beispiel #1
0
        public MyProjectsViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage, ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum projectUpdateStatusFilterType, string gridDataUrl) : base(currentFirmaSession, firmaPage)
        {
            ProjectUpdateStatusFilterType = projectUpdateStatusFilterType;
            var startDayOfReportingYearAsString = MultiTenantHelpers.GetStartDayOfReportingPeriod().ToStringDateMonthDay();
            var endDayOfReportingYearAsString   = MultiTenantHelpers.GetEndDayOfReportingPeriod().ToStringDateMonthDay();

            switch (projectUpdateStatusFilterType)
            {
            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.MyProjectsRequiringAnUpdate:
                PageTitle =
                    $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()} Requiring an Update for Reporting Period: {startDayOfReportingYearAsString} - {endDayOfReportingYearAsString}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.MySubmittedProjects:
                PageTitle =
                    $"Submitted {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} Updates for Reporting Period: {startDayOfReportingYearAsString} - {endDayOfReportingYearAsString}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.AllMyProjects:
                PageTitle =
                    $"All My {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()} for Reporting Period: {startDayOfReportingYearAsString} - {endDayOfReportingYearAsString}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.AllProjects:
                PageTitle = $"All {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.SubmittedProjects:
                PageTitle = $"Submitted {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}";
                break;

            default:
                throw new ArgumentOutOfRangeException("projectUpdateStatusFilterType", projectUpdateStatusFilterType, null);
            }
            SubmitAllUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.SubmitAll());

            AllMyProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.AllMyProjects());

            MyProjectsRequiringAnUpdateUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.MyProjectsRequiringAnUpdate());

            MySubmittedProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.MySubmittedProjects());

            AllProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.AllProjects());

            SubmittedProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.SubmittedProjects());

            ProposeNewProjectUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(tc => tc.InstructionsProposal(null));

            var currentPerson = currentFirmaSession.Person;

            HasProjectUpdateAdminPermissions = new ProjectUpdateAdminFeature().HasPermissionByFirmaSession(CurrentFirmaSession);
            HasProposeProjectPermissions     = new ProjectCreateFeature().HasPermissionByFirmaSession(CurrentFirmaSession);

            GridSpec = new ProjectUpdateStatusGridSpec(currentFirmaSession, projectUpdateStatusFilterType, currentPerson.IsAdministrator() || currentPerson.IsSitkaAdministrator())
            {
                ObjectNameSingular = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()}",
                ObjectNamePlural   = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true
            };
            GridDataUrl = gridDataUrl;
            GridName    = "myProjectsGrid";

            ArbitraryHtmlPlaceholderID          = $"{GridName}ArbitrayHtmlPlaceholder";
            ArbitraryHtmlProjectFilterButtonsID = $"{GridName}ArbitrayHtmlProjectFilterButtons";
            GridSpec.ArbitraryHtml = new List <string> {
                $"<span id='{ArbitraryHtmlPlaceholderID}'></span>"
            };
        }
        public MyProjectsViewData(Person currentPerson, Models.FirmaPage firmaPage, ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum projectUpdateStatusFilterType, string gridDataUrl) : base(currentPerson, firmaPage)
        {
            ProjectUpdateStatusFilterType = projectUpdateStatusFilterType;
            var currentYearToUseForReporting = FirmaDateUtilities.CalculateCurrentYearToUseForRequiredReporting();
            var fieldDefinitionReportingYear = Models.FieldDefinition.ReportingYear.GetFieldDefinitionLabel();

            switch (projectUpdateStatusFilterType)
            {
            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.MyProjectsRequiringAnUpdate:
                PageTitle =
                    $"{Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()} Requiring an Update for {fieldDefinitionReportingYear}: {currentYearToUseForReporting}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.MySubmittedProjects:
                PageTitle =
                    $"Recently Submitted {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()} for {fieldDefinitionReportingYear}: {currentYearToUseForReporting}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.AllMyProjects:
                PageTitle =
                    $"All My {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()} for {fieldDefinitionReportingYear}: {currentYearToUseForReporting}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.AllProjects:
                PageTitle = $"All {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}";
                break;

            case ProjectUpdateStatusGridSpec.ProjectUpdateStatusFilterTypeEnum.SubmittedProjects:
                PageTitle = $"Submitted {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}";
                break;

            default:
                throw new ArgumentOutOfRangeException("projectUpdateStatusFilterType", projectUpdateStatusFilterType, null);
            }
            SubmitAllUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.SubmitAll());

            AllMyProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.AllMyProjects());

            MyProjectsRequiringAnUpdateUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.MyProjectsRequiringAnUpdate());

            MySubmittedProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.MySubmittedProjects());

            AllProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.AllProjects());

            SubmittedProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(tc => tc.SubmittedProjects());

            ProposeNewProjectUrl = SitkaRoute <ProjectCreateController> .BuildUrlFromExpression(tc => tc.InstructionsProposal(null));

            HasProjectUpdateAdminPermissions = new ProjectUpdateAdminFeature().HasPermissionByPerson(CurrentPerson);
            HasProposeProjectPermissions     = new ProjectCreateFeature().HasPermissionByPerson(CurrentPerson);

            GridSpec = new ProjectUpdateStatusGridSpec(projectUpdateStatusFilterType, currentPerson.IsAdministrator() || currentPerson.IsSitkaAdministrator())
            {
                ObjectNameSingular = $"{Models.FieldDefinition.Project.GetFieldDefinitionLabel()}",
                ObjectNamePlural   = $"{Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true
            };
            GridDataUrl = gridDataUrl;
            GridName    = "myProjectsGrid";

            ArbitraryHtmlPlaceholderID          = $"{GridName}ArbitrayHtmlPlaceholder";
            ArbitraryHtmlProjectFilterButtonsID = $"{GridName}ArbitrayHtmlProjectFilterButtons";
            GridSpec.ArbitraryHtml = new List <string> {
                $"<span id='{ArbitraryHtmlPlaceholderID}'></span>"
            };
        }