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