public ExpendituresViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.Project project, ViewDataForAngularClass viewDataForAngularClass, ProposalSectionsStatus proposalSectionsStatus) : base(currentFirmaSession, project, ProjectCreateSection.ReportedExpenditures.ProjectCreateSectionDisplayName, proposalSectionsStatus) { ProjectID = project.ProjectID; ViewDataForAngular = viewDataForAngularClass; RefreshUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.RefreshExpenditures(project)); DiffUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.DiffExpenditures(project)); RequestFundingSourceUrl = SitkaRoute <HelpController> .BuildUrlFromExpression(x => x.MissingFundingSource()); ShowCommentsSection = project.IsPendingApproval() || (project.ExpendituresComment != null && project.ProjectApprovalStatus == ProjectApprovalStatus.Returned); CanEditComments = project.IsPendingApproval() && new ProjectEditAsAdminRegardlessOfStageFeature().HasPermission(currentFirmaSession, project).HasPermission; }
public EditWqmpParcelsViewData(Person currentPerson, Models.WaterQualityManagementPlan waterQualityManagementPlan, MapInitJson mapInitJson) : base(currentPerson, NeptuneArea.OCStormwaterTools) { WaterQualityManagementPlan = waterQualityManagementPlan; EntityName = $"{FieldDefinitionType.WaterQualityManagementPlan.GetFieldDefinitionLabelPluralized()}"; EntityUrl = SitkaRoute <WaterQualityManagementPlanController> .BuildUrlFromExpression(c => c.Index()); SubEntityName = waterQualityManagementPlan.WaterQualityManagementPlanName; SubEntityUrl = waterQualityManagementPlan.GetDetailUrl(); PageTitle = "Edit Associated Parcels"; RecordedWQMPAreaInAcres = waterQualityManagementPlan.RecordedWQMPAreaInAcres; ViewDataForAngular = new EditWqmpParcelsViewDataForAngular(mapInitJson, waterQualityManagementPlan.WaterQualityManagementPlanParcels.Select(x => x.Parcel).ToList()); }
private IEnumerable <string> GenerateProjectListAsHtmlStrings( IReadOnlyCollection <Project> projects) { var projectsRemaining = projects; var tenantCanonicalHostName = FirmaWebConfiguration.GetCanonicalHostForBackgroundJob(TenantID); var projectListAsHtmlStrings = projectsRemaining.OrderBy(project => project.GetDisplayName()).Select(project => { var projectUrl = SitkaRoute <ProjectController> .BuildAbsoluteUrlHttpsFromExpression(controller => controller.Detail(project)); projectUrl = SitkaRoute <ProjectController> .ReplaceHostNameForBackgroundJob(projectUrl, tenantCanonicalHostName); return($@"<div style=""font-size:smaller""><a href=""{projectUrl}"">{project.ProjectName}</a></div>"); }).ToList(); return(projectListAsHtmlStrings); }
public IndexViewData(Person currentPerson) : base(currentPerson, NeptunePage.GetNeptunePageByPageType(NeptunePageType.HRUCharacteristics)) { RefreshUrl = SitkaRoute <HRUCharacteristicController> .BuildUrlFromExpression(x => x.RefreshHRUCharacteristics()); HasAdminPermissions = new NeptuneAdminFeature().HasPermissionByPerson(currentPerson); EntityName = "HRU Characteristics"; PageTitle = "Index"; GridSpec = new HRUCharacteristicGridSpec() { ObjectNameSingular = "HRU Characteristic", ObjectNamePlural = "HRU Characteristics", SaveFiltersInCookie = true }; GridName = "HRUCharacteristics"; GridDataUrl = SitkaRoute <HRUCharacteristicController> .BuildUrlFromExpression(j => j.HRUCharacteristicGridJsonData()); }
public PartialViewResult BulkRowBMPDelineation(BulkRowBMPDelineationViewModel viewModel) { var bmpDelineations = new List <Delineation>(); if (viewModel.EntityIDList != null) { bmpDelineations = HttpRequestStorage.DatabaseEntities.Delineations .Where(x => viewModel.EntityIDList.Contains(x.DelineationID)) .ToList().OrderBy(x => x.TreatmentBMP.TreatmentBMPName).ToList(); } ModelState.Clear(); var viewData = new BulkRowBMPDelineationViewData(bmpDelineations, SitkaRoute <BulkRowController> .BuildUrlFromExpression(x => x.MarkBMPDelineationAsVerifiedModal(null)), "BMP Delineation", "The BMP Delineations for the selected BMP Delineations will be marked as Verified until the delineation is updated or a Jurisdiction Manager later flags the data as provisional."); return(RazorPartialView <BulkRowBMPDelineation, BulkRowBMPDelineationViewData, BulkRowBMPDelineationViewModel >(viewData, viewModel)); }
public InviteViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage psInfoPage) : base(currentFirmaSession, psInfoPage) { PageTitle = "Invite User"; EntityName = "Users"; CancelUrl = SitkaRoute <UserController> .BuildUrlFromExpression(x => x.Index()); IndexUrl = SitkaRoute <UserController> .BuildUrlFromExpression(x => x.Index()); // ReSharper disable once ConvertClosureToMethodGroup var allOrganizations = HttpRequestStorage.DatabaseEntities.Organizations.ToList().OrderBy(x => x.OrganizationName).ToList(); var filteredOrganizations = allOrganizations.Where(o => o.KeystoneOrganizationGuid != null || o.IsUnknownOrUnspecified).ToList(); //var filteredOrganizations = allOrganizations.ToList(); OrganizationsSelectList = filteredOrganizations.ToSelectList(x => x.OrganizationID.ToString(), x => x.OrganizationName); }
public CustomAttributesViewData(Person currentPerson, Models.ProjectUpdate projectUpdate, UpdateStatus updateStatus, ProjectAttributeValidationResult projectAttributeValidationResult, IEnumerable <Models.ProjectCustomAttributeType> projectCustomAttributeTypes) : base(currentPerson, projectUpdate.ProjectUpdateBatch, updateStatus, projectAttributeValidationResult.GetWarningMessages(), ProjectUpdateSection.ProjectAttributes.ProjectUpdateSectionDisplayName) { ProjectUpdate = projectUpdate; DiffUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.DiffProjectAttributes(Project)); RefreshUrl = SitkaRoute <ProjectUpdateController> .BuildUrlFromExpression(x => x.RefreshProjectAttributes(Project)); ProjectCustomAttributeTypes = projectCustomAttributeTypes; SectionCommentsViewData = new SectionCommentsViewData(projectUpdate.ProjectUpdateBatch.ProjectAttributesComment, projectUpdate.ProjectUpdateBatch.IsReturned); }
public ViewResult Index() { var externalMapLayersFirmaPage = FirmaPageTypeEnum.ExternalMapLayers.GetFirmaPage(); var externalMapLayerGridDataUrl = SitkaRoute <MapLayerController> .BuildUrlFromExpression(x => x.ExternalMapLayerGridJsonData()); var internalMapLayersFirmaPage = FirmaPageTypeEnum.InternalMapLayers.GetFirmaPage(); var externallySourcedGeospatialAreasInstructionsFirmaPage = FirmaPageTypeEnum.ExternallySourcedGeospatialAreasInstructions.GetFirmaPage(); var geospatialAreaMapLayerGridDataUrl = SitkaRoute <MapLayerController> .BuildUrlFromExpression(x => x.GeospatialAreaMapLayerGridJsonData()); var userCanManage = new FirmaAdminFeature().HasPermission(CurrentFirmaSession).HasPermission; var viewData = new IndexViewData(CurrentFirmaSession, externalMapLayersFirmaPage, externalMapLayerGridDataUrl, internalMapLayersFirmaPage, geospatialAreaMapLayerGridDataUrl, externallySourcedGeospatialAreasInstructionsFirmaPage, userCanManage); return(RazorView <Index, IndexViewData>(viewData)); }
public ActionResult RequestSupport(RequestSupportViewModel viewModel) { if (!ModelState.IsValid) { return(ViewRequestSupport(viewModel)); } var supportRequestLog = SupportRequestLogModelExtensions.Create(CurrentFirmaSession); viewModel.UpdateModel(supportRequestLog, CurrentFirmaSession); HttpRequestStorage.DatabaseEntities.AllSupportRequestLogs.Add(supportRequestLog); SupportRequestLogModelExtensions.SendMessage(supportRequestLog, Request.UserHostAddress, Request.UserAgent, viewModel.CurrentPageUrl, supportRequestLog.SupportRequestType, HttpRequestStorage.DatabaseEntities, FirmaWebConfiguration.DefaultSupportPersonID); SetMessageForDisplay("Message sent. Thank you for contacting us."); var returnUrl = viewModel.ReturnUrl ?? SitkaRoute <HomeController> .BuildUrlFromExpression(x => x.Index()); return(Redirect(returnUrl)); }
private PartialViewResult ViewDelete(Person personToDelete, ConfirmDialogFormViewModel viewModel) { // This CanDeletePerson extension method is important when deleting users. We want to prevent accidental data loss // due to unforeseen cascade deletion. var canDelete = personToDelete.CanDeletePerson(CurrentPerson); var confirmMessage = canDelete ? $"Are you sure you want to delete {personToDelete.GetFullNameFirstLastAndOrg()}?" : ConfirmDialogFormViewData.GetStandardCannotDeletePersonMessage("Person", SitkaRoute <UserController> .BuildLinkFromExpression(x => x.Detail(personToDelete), "User profile page")); var viewData = new ConfirmDialogFormViewData(confirmMessage, canDelete); return(RazorPartialView <ConfirmDialogForm, ConfirmDialogFormViewData, ConfirmDialogFormViewModel>(viewData, viewModel)); }
private PartialViewResult ViewEditProjectLocationSummaryPoint(Project project, ProjectLocationSimpleViewModel viewModel) { var layerGeoJsons = MapInitJson.GetConfiguredGeospatialAreaMapLayers(); var mapInitJson = new MapInitJson($"project_{project.ProjectID}_EditMap", 10, layerGeoJsons, MapInitJson.GetExternalMapLayers(), BoundingBox.MakeNewDefaultBoundingBox(), false) { AllowFullScreen = false, DisablePopups = true }; var mapPostUrl = SitkaRoute <ProjectLocationController> .BuildUrlFromExpression(c => c.EditProjectLocationSimple(project, null)); var mapFormID = GenerateEditProjectLocationFormID(project.ProjectID); var geospatialAreaTypes = HttpRequestStorage.DatabaseEntities.GeospatialAreaTypes.OrderBy(x => x.GeospatialAreaTypeName) .ToList(); var viewData = new ProjectLocationSimpleViewData(CurrentFirmaSession, mapInitJson, geospatialAreaTypes, null, mapPostUrl, mapFormID); return(RazorPartialView <ProjectLocationSimple, ProjectLocationSimpleViewData, ProjectLocationSimpleViewModel>(viewData, viewModel)); }
public ViewResult GrantModificationDetail(GrantModificationPrimaryKey grantModificationPrimaryKey) { var grantModification = grantModificationPrimaryKey.EntityObject; var userHasEditGrantModificationPermissions = new GrantModificationEditAsAdminFeature().HasPermissionByPerson(CurrentPerson); var internalGrantModificationNotesViewData = new EntityNotesViewData( EntityNote.CreateFromEntityNote(new List <IEntityNote>(grantModification.GrantModificationNoteInternals)), SitkaRoute <GrantModificationController> .BuildUrlFromExpression(x => x.NewGrantModificationNoteInternal(grantModificationPrimaryKey)), grantModification.GrantModificationName, userHasEditGrantModificationPermissions); var viewData = new GrantModificationDetailViewData(CurrentPerson, grantModification, internalGrantModificationNotesViewData); return(RazorView <GrantModificationDetail, GrantModificationDetailViewData>(viewData)); }
public IndexViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage) : base(currentFirmaSession, firmaPage) { PageTitle = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} Tags"; var hasTagManagePermissions = new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession); GridSpec = new IndexGridSpec(hasTagManagePermissions) { ObjectNameSingular = "Tag", ObjectNamePlural = "Tags", SaveFiltersInCookie = true }; GridName = "TagsGrid"; GridDataUrl = SitkaRoute <TagController> .BuildUrlFromExpression(tc => tc.IndexGridJsonData()); HasTagManagePermissions = hasTagManagePermissions; NewUrl = SitkaRoute <TagController> .BuildUrlFromExpression(t => t.New()); }
public ProjectAttachmentIndexViewData(FirmaSession currentFirmaSession) : base(currentFirmaSession) { PageTitle = $"Manage {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()} Attachments"; var hasManagePermissions = new ProjectAttachmentEditAsAdminFeature().HasPermissionByFirmaSession(currentFirmaSession); ProjectAttachmentGridSpec = new ProjectAttachmentGridSpec(hasManagePermissions) { ObjectNameSingular = $"Attachment", ObjectNamePlural = $"Attachments", SaveFiltersInCookie = true }; ProjectAttachmentGridName = "projectAttachmentGrid"; ProjectAttachmentGridDataUrl = SitkaRoute <ProjectAttachmentController> .BuildUrlFromExpression(c => c.ProjectAttachmentGridJsonData()); HasManagePermissions = hasManagePermissions; }
public IndexViewData(Person currentPerson) : base(currentPerson, null, NeptuneArea.OCStormwaterTools) { EntityName = "Page Content"; PageTitle = "Manage Page Content"; GridSpec = new NeptunePageGridSpec(new NeptunePageViewListFeature().HasPermissionByPerson(currentPerson)) { ObjectNameSingular = "Page", ObjectNamePlural = "Pages", SaveFiltersInCookie = true }; GridName = "neptunePagesGrid"; GridDataUrl = SitkaRoute <NeptunePageController> .BuildUrlFromExpression(tc => tc.IndexGridJsonData()); NeptunePageUrl = SitkaRoute <NeptunePageController> .BuildUrlFromExpression(x => x.NeptunePageDetails(UrlTemplate.Parameter1Int)); }
public IndexViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage, string gridDataUrl, List <SelectListItem> activeOnlyOrAllUsersSelectListItems) : base(currentFirmaSession, firmaPage) { PageTitle = "Users"; GridSpec = new IndexGridSpec(currentFirmaSession) { ObjectNameSingular = "User", ObjectNamePlural = "Users", SaveFiltersInCookie = true }; GridName = "UserGrid"; GridDataUrl = gridDataUrl; InviteUserUrl = SitkaRoute <UserController> .BuildUrlFromExpression(x => x.Invite()); UserIsFirmaAdmin = new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession); ActiveOnlyOrAllUsersSelectListItems = activeOnlyOrAllUsersSelectListItems; ShowOnlyActiveOrAll = "ShowOnlyActiveOrAll"; }
public FeaturedListViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage, List <ProjectCustomGridConfiguration> projectCustomDefaultGridConfigurations) : base(currentFirmaSession, firmaPage) { PageTitle = $"Featured {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}"; var projectDetails = HttpRequestStorage.DatabaseEntities.vProjectDetails.ToDictionary(x => x.ProjectID); ProjectCustomDefaultGridSpec = new ProjectCustomGridSpec(currentFirmaSession, projectCustomDefaultGridConfigurations, ProjectCustomGridType.Default.ToEnum, projectDetails, currentFirmaSession.Tenant) { ObjectNameSingular = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; ProjectCustomDefaultGridName = "featuredListGrid"; ProjectCustomDefaultGridDataUrl = SitkaRoute <ProjectCustomGridController> .BuildUrlFromExpression(tc => tc.FeaturedProjectsGridJsonData()); EditUrl = SitkaRoute <ProjectController> .BuildUrlFromExpression(tc => tc.EditFeaturedProjects()); }
public ViewResult ObligationRequestDetail(ObligationRequestPrimaryKey obligationRequestPrimaryKey) { var obligationRequest = obligationRequestPrimaryKey.EntityObject; var userCanInteractWithSubmissionNotes = new ObligationRequestSubmissionNoteFeature().HasPermissionByFirmaSession(CurrentFirmaSession); var obligationRequestNotesViewData = new EntityNotesViewData( EntityNote.CreateFromEntityNote(obligationRequest.ObligationRequestSubmissionNotes), SitkaRoute <ObligationRequestSubmissionNotesController> .BuildUrlFromExpression(x => x.New(obligationRequest)), FieldDefinitionEnum.ObligationRequest.ToType().FieldDefinitionDisplayName, userCanInteractWithSubmissionNotes); var viewData = new ObligationRequestDetailViewData(CurrentFirmaSession, obligationRequest, userCanInteractWithSubmissionNotes, obligationRequestNotesViewData); return(RazorView <ObligationRequestDetail, ObligationRequestDetailViewData>(viewData)); }
/* * public ObligationItemBudgetGridSpec ObligationItemBudgetGridSpec { get; } * public string ObligationItemBudgetGridName { get; } * public string ObligationItemBudgetGridDataUrl { get; } */ public BudgetObjectCodeDetailViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.BudgetObjectCode budgetObjectCode) : base(currentFirmaSession) { PageTitle = $"Budget Object Code: {budgetObjectCode.GetDisplayName()}"; EntityName = "Budget Object Code Detail"; BudgetObjectCode = budgetObjectCode; BudgetObjectCodeIndexUrl = SitkaRoute <BudgetObjectCodeController> .BuildUrlFromExpression(c => c.BudgetObjectCodeIndex()); ContractualInvoiceGridName = "budgetObjectCodeItemInvoices"; ContractualInvoiceGridSpec = new ContractualInvoiceGridSpec(currentFirmaSession); ContractualItemInvoiceGridDataUrl = SitkaRoute <BudgetObjectCodeController> .BuildUrlFromExpression(fc => fc.ContractualInvoiceGridOnBudgetObjectCodeDetailJsonData(budgetObjectCode)); //ObligationItemBudgetGridName = "budgetObjectCodeItemBudgets"; //ObligationItemBudgetGridSpec = new ObligationItemBudgetGridSpec(currentFirmaSession); //ObligationItemBudgetGridDataUrl = SitkaRoute<BudgetObjectCodeController>.BuildUrlFromExpression(fc => fc.ObligationItemBudgetGridOnBudgetObjectCodeDetailJsonData(budgetObjectCode)); }
public DetailViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.TaxonomyTrunk taxonomyTrunk, ProjectLocationsMapInitJson projectLocationsMapInitJson, ProjectLocationsMapViewData projectLocationsMapViewData, bool canHaveAssociatedPerformanceMeasures, RelatedPerformanceMeasuresViewData relatedPerformanceMeasuresViewData, List <PerformanceMeasureChartViewData> performanceMeasureChartViewDatas, TaxonomyLevel taxonomyLevel, List <ProjectCustomGridConfiguration> projectCustomDefaultGridConfigurations) : base(currentFirmaSession) { TaxonomyTrunk = taxonomyTrunk; TaxonomyTrunkDisplayName = FieldDefinitionEnum.TaxonomyTrunk.ToType().GetFieldDefinitionLabel(); TaxonomyTrunkDisplayNamePluralized = FieldDefinitionEnum.TaxonomyTrunk.ToType().GetFieldDefinitionLabelPluralized(); TaxonomyBranchDisplayNamePluralized = FieldDefinitionEnum.TaxonomyBranch.ToType().GetFieldDefinitionLabelPluralized(); TaxonomyLeafDisplayNamePluralized = FieldDefinitionEnum.TaxonomyLeaf.ToType().GetFieldDefinitionLabelPluralized(); ProjectLocationsMapInitJson = projectLocationsMapInitJson; ProjectLocationsMapViewData = projectLocationsMapViewData; ProjectMapFilteredUrl = ProjectLocationsMapInitJson.ProjectMapCustomization.GetCustomizedUrl(); PageTitle = taxonomyTrunk.GetDisplayName(); EntityName = TaxonomyTrunkDisplayName; IndexUrl = SitkaRoute <ProgramInfoController> .BuildUrlFromExpression(c => c.Taxonomy()); UserHasTaxonomyTrunkManagePermissions = new TaxonomyTrunkManageFeature().HasPermissionByFirmaSession(CurrentFirmaSession); UserHasProjectTaxonomyTrunkExpenditureManagePermissions = new TaxonomyTrunkManageFeature().HasPermissionByFirmaSession(CurrentFirmaSession); EditTaxonomyTrunkUrl = SitkaRoute <TaxonomyTrunkController> .BuildUrlFromExpression(c => c.Edit(taxonomyTrunk.TaxonomyTrunkID)); TaxonomyBranchIndexUrl = SitkaRoute <TaxonomyBranchController> .BuildUrlFromExpression(c => c.Index()); var projectDetails = HttpRequestStorage.DatabaseEntities.vProjectDetails.ToDictionary(x => x.ProjectID); ProjectCustomDefaultGridSpec = new ProjectCustomGridSpec(currentFirmaSession, projectCustomDefaultGridConfigurations, ProjectCustomGridType.Default.ToEnum, projectDetails, currentFirmaSession.Tenant) { ObjectNameSingular = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; ProjectCustomDefaultGridName = "taxonomyTrunkProjectListGrid"; ProjectCustomDefaultGridDataUrl = SitkaRoute <ProjectCustomGridController> .BuildUrlFromExpression(tc => tc.TaxonomyTrunkProjectsGridJsonData(taxonomyTrunk)); ProjectTaxonomyViewData = new ProjectTaxonomyViewData(taxonomyTrunk, taxonomyLevel); CanHaveAssociatedPerformanceMeasures = canHaveAssociatedPerformanceMeasures; PerformanceMeasureChartViewDatas = performanceMeasureChartViewDatas; RelatedPerformanceMeasuresViewData = relatedPerformanceMeasuresViewData; EditChildrenSortOrderUrl = SitkaRoute <TaxonomyTrunkController> .BuildUrlFromExpression(x => x.EditChildrenSortOrder(taxonomyTrunk)); }
public static void SendApprovalMessage(Project project) { Check.Require(project.ProjectApprovalStatus == ProjectApprovalStatus.Approved, "Need to be in Approved state to send the Approved email!"); var submitterPerson = project.ProposingPerson; var subject = $"Your {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} \"{project.DisplayName.ToEllipsifiedString(80)}\" was approved!"; var detailUrl = SitkaRoute <ProjectController> .BuildAbsoluteUrlHttpsFromExpression(x => x.Detail(project.ProjectID)); var projectListUrl = SitkaRoute <ProjectController> .BuildAbsoluteUrlHttpsFromExpression(x => x.Index()); var message = $@" <p>Dear {submitterPerson.FullNameFirstLastAndOrg},</p> <p>The {MultiTenantHelpers.GetToolDisplayName()} {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} submitted on {project.SubmissionDate.ToStringDate()} was approved by {project.ReviewedByPerson.FullNameFirstLastAndOrg}.</p> <p>This {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} is now on the <a href=""{projectListUrl}"">{MultiTenantHelpers.GetToolDisplayName()} {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} List</a> and is visible to the public via the {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} detail page.</p> <p><a href=""{detailUrl}"">View this {Models.FieldDefinition.Project.GetFieldDefinitionLabel()}</a></p> <p>Thank you for using the {MultiTenantHelpers.GetToolDisplayName()}!</p> <p>{$"- {MultiTenantHelpers.GetToolDisplayName()} team"}</p> "; var mailMessage = new MailMessage { Subject = subject, Body = message, IsBodyHtml = true }; var emailsToSendTo = new List <string> { submitterPerson.Email }; var emailsToReplyTo = new List <string> { project.ReviewedByPerson.Email }; var primaryContactPerson = project.GetPrimaryContact(); if (primaryContactPerson != null && !String.Equals(primaryContactPerson.Email, submitterPerson.Email, StringComparison.InvariantCultureIgnoreCase)) { if (string.IsNullOrEmpty(primaryContactPerson.Email)) { Logger.Warn($"Primary Contact is missing email address and will not get an Approval Message. Primary Contact ID:{primaryContactPerson.PersonID} Primary Contact Name:{primaryContactPerson.FullNameFirstLast} Project ID:{project.ProjectID} "); } else { emailsToSendTo.Add(primaryContactPerson.Email); } } SendMessageAndLogNotification(project, mailMessage, emailsToSendTo, emailsToReplyTo, GetProjectStewardPeople(project).Select(x => x.Email).ToList(), NotificationType.ProjectUpdateApproved); }
public DetailViewData(Person currentPerson, Person personToView, UserNotificationGridSpec userNotificationGridSpec, string userNotificationGridName, string userNotificationGridDataUrl, string activateInactivateUrl) : base(currentPerson, NeptuneArea.OCStormwaterTools) { Person = personToView; PageTitle = personToView.GetFullNameFirstLast() + (!personToView.IsActive ? " (inactive)" : string.Empty); EntityName = "Users"; //TODO: This gets pulled up to root EditPersonOrganizationPrimaryContactUrl = SitkaRoute <PersonOrganizationController> .BuildUrlFromExpression(c => c.EditPersonOrganizationPrimaryContacts(personToView)); IndexUrl = SitkaRoute <UserController> .BuildUrlFromExpression(x => x.Index()); JurisdictionIndexUrl = SitkaRoute <JurisdictionController> .BuildUrlFromExpression(x => x.Index()); UserHasPersonViewPermissions = new UserViewFeature().HasPermission(currentPerson, personToView).HasPermission; UserCanManageThisPersonPermissions = new UserEditRoleFeature().HasPermission(currentPerson, personToView).HasPermission; UserCanManagePeople = new UserEditFeature().HasPermissionByPerson(currentPerson); UserIsAdmin = new NeptuneAdminFeature().HasPermissionByPerson(currentPerson); UserHasViewEverythingPermissions = new NeptuneAdminFeature().HasPermissionByPerson(currentPerson); if (UserCanManagePeople) { EntityUrl = IndexUrl; } IsViewingSelf = currentPerson != null && currentPerson.PersonID == personToView.PersonID; EditRolesLink = UserCanManageThisPersonPermissions ? ModalDialogFormHelper.MakeEditIconLink(SitkaRoute <UserController> .BuildUrlFromExpression(c => c.EditRoles(personToView)), $"Edit Roles for User - {personToView.GetFullNameFirstLast()}", true) : new HtmlString(string.Empty); EditJurisdictionsLink = UserCanManageThisPersonPermissions ? ModalDialogFormHelper.MakeEditIconLink(SitkaRoute <UserController> .BuildUrlFromExpression(c => c.EditJurisdiction(personToView)), $"Edit Assigned Jurisdictions for User - {personToView.GetFullNameFirstLast()}", true) : new HtmlString(string.Empty); UserNotificationGridSpec = userNotificationGridSpec; UserNotificationGridName = userNotificationGridName; UserNotificationGridDataUrl = userNotificationGridDataUrl; ActivateInactivateUrl = activateInactivateUrl; }
private PartialViewResult ViewDeleteTaxonomyLeaf(TaxonomyLeaf taxonomyLeaf, ConfirmDialogFormViewModel viewModel) { var canDelete = !taxonomyLeaf.HasDependentObjects() && HttpRequestStorage.DatabaseEntities.TaxonomyLeafs.Count() > 1; var taxonomyLeafDisplayName = FieldDefinitionEnum.TaxonomyLeaf.ToType().GetFieldDefinitionLabel(); var confirmMessage = canDelete ? string.Format("Are you sure you want to delete this {0} '{1}'?", taxonomyLeafDisplayName, taxonomyLeaf.GetDisplayName()) : ConfirmDialogFormViewData.GetStandardCannotDeleteMessage(taxonomyLeafDisplayName, SitkaRoute <TaxonomyLeafController> .BuildLinkFromExpression(x => x.Detail(taxonomyLeaf), "here")); var viewData = new ConfirmDialogFormViewData(confirmMessage, canDelete); return(RazorPartialView <ConfirmDialogForm, ConfirmDialogFormViewData, ConfirmDialogFormViewModel>(viewData, viewModel)); }
public IndexViewData(FirmaSession currentFirmaSession, List <ProjectFirmaModels.Models.Organization> projectStewardOrganizations, ProjectFirmaModels.Models.FirmaPage firmaPage) : base(currentFirmaSession, firmaPage) { PageTitle = $"{FieldDefinitionEnum.ProjectStewardOrganizationDisplayName.ToType().GetFieldDefinitionLabelPluralized()}"; GridSpec = new IndexGridSpec(currentFirmaSession) { ObjectNameSingular = $"{FieldDefinitionEnum.ProjectStewardOrganizationDisplayName.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{FieldDefinitionEnum.ProjectStewardOrganizationDisplayName.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; GridName = "organizationsGrid"; GridDataUrl = SitkaRoute <ProjectStewardOrganizationController> .BuildUrlFromExpression(tc => tc.IndexGridJsonData()); ProjectStewardOrganizations = projectStewardOrganizations; }
private PartialViewResult ViewDeleteProjectType(ProjectType projectType, ConfirmDialogFormViewModel viewModel) { var canDelete = !projectType.HasDependentObjects() && HttpRequestStorage.DatabaseEntities.ProjectTypes.Count() > 1; var projectTypeDisplayName = FieldDefinition.ProjectType.GetFieldDefinitionLabel(); var confirmMessage = canDelete ? string.Format("Are you sure you want to delete this {0} '{1}'?", projectTypeDisplayName, projectType.DisplayName) : ConfirmDialogFormViewData.GetStandardCannotDeleteMessage(projectTypeDisplayName, SitkaRoute <ProjectTypeController> .BuildLinkFromExpression(x => x.Detail(projectType), "here")); var viewData = new ConfirmDialogFormViewData(confirmMessage, canDelete); return(RazorPartialView <ConfirmDialogForm, ConfirmDialogFormViewData, ConfirmDialogFormViewModel>(viewData, viewModel)); }
public IndexViewData(FirmaSession currentFirmaSession, ProjectFirmaModels.Models.FirmaPage firmaPage) : base(currentFirmaSession, firmaPage) { PageTitle = $"{FieldDefinitionEnum.ContactType.ToType().GetFieldDefinitionLabelPluralized()}"; var hasManagePermissions = new ContactRelationshipTypeManageFeature().HasPermissionByFirmaSession(currentFirmaSession); ContactRelationshipTypeGridSpec = new ContactRelationshipTypeGridSpec(hasManagePermissions) { ObjectNameSingular = $"{FieldDefinitionEnum.ProjectContactRelationshipType.ToType().GetFieldDefinitionLabel()}", ObjectNamePlural = $"{ FieldDefinitionEnum.ProjectContactRelationshipType.ToType().GetFieldDefinitionLabelPluralized()}", SaveFiltersInCookie = true }; ContactRelationshipTypeGridName = "relationshipTypeGrid"; ContactRelationshipTypeGridDataUrl = SitkaRoute <ContactRelationshipTypeController> .BuildUrlFromExpression(otc => otc.ContactRelationshipTypeGridJsonData()); HasManagePermissions = hasManagePermissions; NewProjectAssociationUrl = SitkaRoute <ContactRelationshipTypeController> .BuildUrlFromExpression(t => t.NewContactRelationshipType()); }
private void AddMandatoryFieldsBefore(bool userHasTagManagePermissions, bool userHasReportDownloadPermissions, bool userHasDeletePermissions, ProjectCustomGridTypeEnum projectCustomGridTypeEnum) { switch (projectCustomGridTypeEnum) { case ProjectCustomGridTypeEnum.Default: case ProjectCustomGridTypeEnum.Full: if (userHasTagManagePermissions) { BulkTagModalDialogForm = new BulkTagModalDialogForm( SitkaRoute <TagController> .BuildUrlFromExpression(x => x.BulkTagProjects(null)), $"Tag Checked {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}", $"Tag {FieldDefinitionEnum.Project.ToType().GetFieldDefinitionLabelPluralized()}"); } if (userHasTagManagePermissions) { AddCheckBoxColumn(); Add("ProjectID", x => x.ProjectID, 0); } if (userHasDeletePermissions) { Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true), 30, DhtmlxGridColumnFilterType.None); } Add(string.Empty, x => UrlTemplate.MakeHrefString(x.GetFactSheetUrl(), FirmaDhtmlxGridHtmlHelpers.FactSheetIcon.ToString() + $"<span class=\"sr-only\">Download the Fact Sheet for {x.ProjectName}</span>"), 30, DhtmlxGridColumnFilterType.None); break; case ProjectCustomGridTypeEnum.Reports: if (userHasReportDownloadPermissions) { GenerateReportModalDialogForm = new SelectProjectsModalDialogForm( SitkaRoute <ReportsController> .BuildUrlFromExpression(x => x.SelectReportToGenerateFromSelectedProjects()), $"Generate Reports", $"Confirm Report Generation"); } AddCheckBoxColumn(); Add("ProjectID", x => x.ProjectID, 0); break; default: throw new ArgumentOutOfRangeException(nameof(projectCustomGridTypeEnum), projectCustomGridTypeEnum, null); } }
public ActionResult EditLocation(OnlandVisualTrashAssessmentAreaPrimaryKey onlandVisualTrashAssessmentAreaPrimaryKey, EditLocationViewModel viewModel) { var onlandVisualTrashAssessmentArea = onlandVisualTrashAssessmentAreaPrimaryKey.EntityObject; if (!ModelState.IsValid) { return(ViewEditLocation(onlandVisualTrashAssessmentArea, viewModel)); } viewModel.UpdateModel(onlandVisualTrashAssessmentArea); SetMessageForDisplay("Successfully updated OVTA Area location"); return(Redirect( SitkaRoute <OnlandVisualTrashAssessmentAreaController> .BuildUrlFromExpression(x => x.Detail(onlandVisualTrashAssessmentAreaPrimaryKey)))); }
public static HtmlString MakeImpersonateSinglePageHtmlLink(Person personToImpersonate) { if (personToImpersonate == null) { return(new HtmlString(String.Empty)); } string theLinkUrl = ImpersonateUserSinglePageUrlTemplate.ParameterReplace(personToImpersonate.PersonID); string linkHtmlTemplate = "<span class=\"glyphicon glyphicon-{0}\" aria-hidden=\"true\" title=\"Impersonate {1}\"></span>"; // I wish Bootstrap offered a "domino" or mask icon, but this is all I could come up with quickly. Feel free to change these! -- SLG string linkHtml = String.Format(linkHtmlTemplate, "user", personToImpersonate.GetFullNameFirstLast()); // Controller is actually irrelevant here string theHref = SitkaRoute <UserController> .BuildLinkFromUrl(theLinkUrl, linkHtml, $"impersonate user {personToImpersonate.GetFullNameFirstLast()}"); return(new HtmlString(theHref)); }
public FieldDefinitionGridSpec(bool hasManagePermissions) { if (hasManagePermissions) { Add(string.Empty, a => UrlTemplate.MakeHrefString(SitkaRoute <FieldDefinitionController> .BuildUrlFromExpression(t => t.Edit(a)), DhtmlxGridHtmlHelpers.EditIconBootstrap.ToString(), new Dictionary <string, string> { { "target", "_blank" } }), 30); } Add("Label", a => a.FieldDefinitionTypeDisplayName, 200); Add("Has Custom Field Definition?", a => a.HasCustomFieldDefinition().ToYesNo(), 100, DhtmlxGridColumnFilterType.SelectFilterStrict); Add("Custom Definition", a => a.HasCustomFieldDefinition() ? a.GetFieldDefinitionData().FieldDefinitionValueHtmlString.ToString() : string.Empty, 0); }