Example #1
0
        public ProjectUpdateViewData(FirmaSession currentFirmaSession,
                                     ProjectUpdateBatch projectUpdateBatch,
                                     ProjectUpdateStatus projectUpdateStatus,
                                     List <string> validationWarnings,
                                     string currentSectionDisplayName) : base(currentFirmaSession, null)
        {
            IsInstructionsPage  = currentSectionDisplayName.Equals("Instructions", StringComparison.InvariantCultureIgnoreCase);
            InstructionsPageUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Instructions(projectUpdateBatch.Project));

            ProjectWorkflowSectionGroupings = ProjectWorkflowSectionGrouping.All.OrderBy(x => x.SortOrder).ToList();
            if (!MultiTenantHelpers.TrackAccomplishments())
            {
                ProjectWorkflowSectionGroupings = ProjectWorkflowSectionGroupings.Where(x => x != ProjectWorkflowSectionGrouping.Accomplishments).ToList();
            }
            ProjectUpdateBatch         = projectUpdateBatch;
            Project                    = projectUpdateBatch.Project;
            PrimaryContactPerson       = projectUpdateBatch.Project.GetPrimaryContact();
            EntityName                 = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} Update";
            PageTitle                  = $"Update: {Project.GetDisplayName()}";
            ProjectUpdateMyProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.MyProjectsRequiringAnUpdate());

            ProjectUpdateHistoryUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.History(Project));

            DeleteProjectUpdateUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.DeleteProjectUpdate(Project));

            SubmitUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Submit(Project));

            ApproveUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Approve(Project));

            ReturnUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Return(Project));

            ProvideFeedbackUrl = SitkaRoute <HelpController> .BuildUrlFromExpression(x => x.UpdateFeedback());

            TrainingUrl = SitkaRoute <HomeController> .BuildUrlFromExpression(x => x.Training());

            var isApprover = new ProjectUpdateAdminFeatureWithProjectContext().HasPermission(currentFirmaSession, Project).HasPermission;

            ShowApproveAndReturnButton = projectUpdateBatch.IsSubmitted() && isApprover;
            IsEditable                        = projectUpdateBatch.InEditableState() || ShowApproveAndReturnButton;
            IsReadyToApprove                  = projectUpdateBatch.IsReadyToApprove();
            AreProjectBasicsValid             = projectUpdateBatch.AreProjectBasicsValid();
            HasCustomAttributesEditableByUser = projectUpdateBatch.Project.HasEditableCustomAttributes(CurrentFirmaSession);

            //Neuter UpdateStatus for non-approver users until we go live with "Show Changes" for all users.
            ProjectUpdateStatus = currentFirmaSession.Person.IsApprover() ? projectUpdateStatus : new ProjectUpdateStatus(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false);
            HasUpdateStarted    = ModelObjectHelpers.IsRealPrimaryKeyValue(projectUpdateBatch.ProjectUpdateBatchID);

            ValidationWarnings        = validationWarnings;
            CurrentSectionDisplayName = currentSectionDisplayName;
        }
        public ProjectUpdateViewData(Person currentPerson, ProjectUpdateBatch projectUpdateBatch, UpdateStatus updateStatus, List <string> validationWarnings, string currentSectionDisplayName) : base(currentPerson, null)
        {
            IsInstructionsPage  = currentSectionDisplayName.Equals("Instructions", StringComparison.InvariantCultureIgnoreCase);
            InstructionsPageUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Instructions(projectUpdateBatch.Project));

            ProjectWorkflowSectionGroupings = ProjectWorkflowSectionGrouping.All.OrderBy(x => x.SortOrder).ToList();
            ProjectUpdateBatch         = projectUpdateBatch;
            Project                    = projectUpdateBatch.Project;
            PrimaryContactPerson       = projectUpdateBatch.Project.GetPrimaryContact();
            HtmlPageTitle             += $" - {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} Updates";
            EntityName                 = $"{Models.FieldDefinition.Project.GetFieldDefinitionLabel()} Update";
            PageTitle                  = $"Update: {Project.DisplayName}";
            ProjectUpdateMyProjectsUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.MyProjectsRequiringAnUpdate());

            ProjectUpdateHistoryUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.History(Project));

            DeleteProjectUpdateUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.DeleteProjectUpdate(Project));

            SubmitUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Submit(Project));

            ApproveUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Approve(Project));

            ReturnUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.Return(Project));

            ProvideFeedbackUrl = SitkaRoute <HelpController> .BuildUrlFromExpression(x => x.UpdateFeedback());

            var isApprover = new ProjectUpdateAdminFeatureWithProjectContext().HasPermission(CurrentPerson, Project).HasPermission;

            ShowApproveAndReturnButton = projectUpdateBatch.IsSubmitted && isApprover;
            IsEditable            = projectUpdateBatch.InEditableState || ShowApproveAndReturnButton;
            IsReadyToApprove      = projectUpdateBatch.IsReadyToApprove;
            AreProjectBasicsValid = projectUpdateBatch.AreProjectBasicsValid;

            //Neuter UpdateStatus for non-approver users until we go live with "Show Changes" for all users.
            UpdateStatus     = CurrentPerson.IsApprover() ? updateStatus : new UpdateStatus(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false);
            HasUpdateStarted = ModelObjectHelpers.IsRealPrimaryKeyValue(projectUpdateBatch.ProjectUpdateBatchID);

            ValidationWarnings        = validationWarnings;
            CurrentSectionDisplayName = currentSectionDisplayName;
        }
Example #3
0
        public void UpdateModel(FirmaSession currentFirmaSession, List <TechnicalAssistanceRequestUpdate> currentTechnicalAssistanceRequests, IList <TechnicalAssistanceRequestUpdate> allTechnicalAssistanceRequests, ProjectUpdateBatch projectUpdateBatch)
        {
            var userCanAllocate = new ProjectUpdateAdminFeatureWithProjectContext().HasPermission(currentFirmaSession, projectUpdateBatch.Project).HasPermission;
            var updatedTechnicalAssistanceRequests = TechnicalAssistanceRequestSimples != null?
                                                     TechnicalAssistanceRequestSimples.Select(x => new TechnicalAssistanceRequestUpdate(x.TechnicalAssistanceRequestID, projectUpdateBatch.ProjectUpdateBatchID, x.FiscalYear, x.PersonID, x.TechnicalAssistanceTypeID.Value, x.HoursRequested, x.HoursAllocated, x.HoursProvided, x.Notes)).ToList() :
                                                         new List <TechnicalAssistanceRequestUpdate>();

            var databaseEntities = HttpRequestStorage.DatabaseEntities;

            currentTechnicalAssistanceRequests.Merge(updatedTechnicalAssistanceRequests, allTechnicalAssistanceRequests,
                                                     (x, y) => x.TechnicalAssistanceRequestUpdateID == y.TechnicalAssistanceRequestUpdateID,
                                                     (x, y) =>
            {
                x.ProjectUpdateBatchID      = y.ProjectUpdateBatchID;
                x.FiscalYear                = y.FiscalYear;
                x.PersonID                  = y.PersonID;
                x.TechnicalAssistanceTypeID = y.TechnicalAssistanceTypeID;
                x.HoursRequested            = y.HoursRequested;
                x.HoursAllocated            = userCanAllocate ? y.HoursAllocated : x.HoursAllocated;
                x.HoursProvided             = userCanAllocate ? y.HoursProvided : x.HoursProvided;
                x.Notes = y.Notes;
            }, databaseEntities);
        }