Ejemplo n.º 1
0
        public InvoiceGridSpec(Models.Person currentPerson, bool invoiceFileExistsOnAtLeastOne)
        {
            ObjectNameSingular  = $"{Models.FieldDefinition.Invoice.GetFieldDefinitionLabel()}";
            ObjectNamePlural    = $"{Models.FieldDefinition.Invoice.GetFieldDefinitionLabelPluralized()}";
            SaveFiltersInCookie = true;
            var userHasCreatePermissions = new InvoiceCreateFeature().HasPermissionByPerson(currentPerson);

            if (userHasCreatePermissions)
            {
                var contentUrl = SitkaRoute <InvoiceController> .BuildUrlFromExpression(t => t.New());

                CreateEntityModalDialogForm = new ModalDialogForm(contentUrl, "Create a new Invoice");
            }

            if (invoiceFileExistsOnAtLeastOne)
            {
                Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeFileDownloadIconAsHyperlinkBootstrap(x.GetFileDownloadUrl(), "Download Invoice file"), 30, DhtmlxGridColumnFilterType.None);
            }

            Add("Invoice ID", x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.InvoiceID.ToString()), 50);
            Add(Models.FieldDefinition.InvoiceIdentifyingName.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.InvoiceIdentifyingName),
                InvoiceGridSpec.InvoiceColumnWidth, DhtmlxGridColumnFilterType.SelectFilterHtmlStrict);
            Add(Models.FieldDefinition.RequestorName.ToGridHeaderString(), x => x.RequestorName, InvoiceGridSpec.InvoiceColumnWidth, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.InvoiceDate.ToGridHeaderString(), x => x.InvoiceDate, 90, DhtmlxGridColumnFormatType.Date);
            Add(Models.FieldDefinition.PurchaseAuthority.ToGridHeaderString(), x => x.PurchaseAuthorityDisplay, InvoiceGridSpec.InvoiceColumnWidth, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.InvoiceStatus.ToGridHeaderString(), x =>
                x.InvoiceStatus.InvoiceStatusDisplayName, InvoiceGridSpec.InvoiceColumnWidth, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.TotalRequestedInvoicePaymentAmount.ToGridHeaderString(), x => x.TotalPaymentAmount.ToStringCurrency(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.InvoiceApprovalStatus.ToGridHeaderString(), x =>
                x.InvoiceApprovalStatus.InvoiceApprovalStatusName, InvoiceGridSpec.InvoiceColumnWidth, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.PreparedByPerson.ToGridHeaderString(), x => x.PreparedByPerson.FullNameFirstLast, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Silanis.ESL.SDK.PackageService"/> class.
 /// </summary>
 /// <param name="apiToken">API token.</param>
 /// <param name="baseUrl">Base URL.</param>
 public PackageService(RestClient restClient, string baseUrl)
 {
     this.restClient            = restClient;
     template                   = new UrlTemplate(baseUrl);
     settings                   = new JsonSerializerSettings();
     settings.NullValueHandling = NullValueHandling.Ignore;
 }
        public ProjectsIncludingLeadImplementingGridSpec(Person currentPerson, bool showSubmittalStatus)
        {
            Add(Models.FieldDefinition.FhtProjectNumber.ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.FhtProjectNumber), 100, DhtmlxGridColumnFilterType.Text);
            Add(Models.FieldDefinition.Project.ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.DisplayName), 350, DhtmlxGridColumnFilterType.Html);

            if (showSubmittalStatus)
            {
                Add("Submittal Status", a => a.ProjectApprovalStatus.ProjectApprovalStatusDisplayName, 110, DhtmlxGridColumnFilterType.SelectFilterStrict);
            }

            Add(Models.FieldDefinition.ProjectStage.ToGridHeaderString(), a => a.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            //Add(Models.FieldDefinition.ProjectRelationshipType.ToGridHeaderStringPlural(Models.FieldDefinition.ProjectRelationshipType.GetFieldDefinitionLabelPluralized()),
            //    a => a.AssocatedFocusAreaNames(focusArea), 180, DhtmlxGridColumnFilterType.Text);

            Add(Models.FieldDefinition.StartApprovalDate.ToGridHeaderString(), x => x.GetPlannedDate(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.ExpirationDate.ToGridHeaderString(), x => x.ExpirationDate, 115, DhtmlxGridColumnFormatType.Date);
            Add(Models.FieldDefinition.CompletionDate.ToGridHeaderString(), x => x.CompletionDate, 90, DhtmlxGridColumnFormatType.Date);
            Add($"Number Of Reported {MultiTenantHelpers.GetPerformanceMeasureName()} Records", x => x.PerformanceMeasureActuals.Count, 100);
            Add($"Number Of {Models.FieldDefinition.ReportedExpenditure.GetFieldDefinitionLabel()} Records", x => x.ProjectGrantAllocationExpenditures.Count, 100);
            Add(Models.FieldDefinition.EstimatedTotalCost.ToGridHeaderString(), x => x.EstimatedTotalCost, 85, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add(Models.FieldDefinition.ProjectGrantAllocationRequestTotalAmount.ToGridHeaderString(), x => x.GetTotalFunding(), 85, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add(Models.FieldDefinition.ProjectDescription.ToGridHeaderString(), x => x.ProjectDescription, 200);
            if (new FirmaAdminFeature().HasPermissionByPerson(currentPerson))
            {
                Add("Tags", x => new HtmlString(!x.ProjectTags.Any() ? string.Empty : string.Join(", ", x.ProjectTags.Select(pt => pt.Tag.DisplayNameAsUrl))), 100, DhtmlxGridColumnFilterType.Html);
            }
            Add("# of Photos", x => x.ProjectImages.Count, 60);
        }
Ejemplo n.º 4
0
 public PendingGridSpec(FirmaSession currentFirmaSession)
 {
     // todo: fulfill "Include standard project grid with columns for “Stage” and “Approval Status”
     Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteProposalUrl(), new ProjectDeleteProposalFeature().HasPermission(currentFirmaSession, x).HasPermission, true), 30, DhtmlxGridColumnFilterType.None);
     Add(string.Empty,
         x => DhtmlxGridHtmlHelpers.MakeEditIconAsHyperlinkBootstrap(x.GetProjectCreateUrl(),
                                                                     new ProjectCreateFeature().HasPermission(currentFirmaSession, x).HasPermission&&
                                                                     !(x.ProjectApprovalStatus == ProjectApprovalStatus.PendingApproval &&
                                                                       currentFirmaSession.Role == ProjectFirmaModels.Models.Role.Normal)), 30,
         DhtmlxGridColumnFilterType.None);
     Add(FieldDefinitionEnum.ProjectName.ToType().ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 300, DhtmlxGridColumnFilterType.Html);
     Add("Submittal Status", a => a.ProjectApprovalStatus.ProjectApprovalStatusDisplayName, 110, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.ProjectStage.ToType().ToGridHeaderString(), x => x.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
     if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
     {
         Add(FieldDefinitionEnum.ProjectsStewardOrganizationRelationshipToProject.ToType().ToGridHeaderString(), x => x.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
             DhtmlxGridColumnFilterType.Html);
     }
     Add(FieldDefinitionEnum.IsPrimaryContactOrganization.ToType().ToGridHeaderString(), x => x.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
     Add(FieldDefinitionEnum.TaxonomyLeaf.ToType().ToGridHeaderString(), x => x.TaxonomyLeaf == null ? string.Empty : x.TaxonomyLeaf.GetDisplayName(), 300, DhtmlxGridColumnFilterType.Html);
     Add(FieldDefinitionEnum.PlanningDesignStartYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetPlanningDesignStartYear(x), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.ImplementationStartYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetImplementationStartYear(x), 115, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.CompletionYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetCompletionYear(x), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.EstimatedTotalCost.ToType().ToGridHeaderString(), x => x.GetEstimatedTotalRegardlessOfFundingType(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add(FieldDefinitionEnum.SecuredFunding.ToType().ToGridHeaderString(), x => x.GetSecuredFunding(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add(FieldDefinitionEnum.TargetedFunding.ToType().ToGridHeaderString(), x => x.GetTargetedFunding(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add(FieldDefinitionEnum.NoFundingSourceIdentified.ToType().ToGridHeaderString(), x => x.GetNoFundingSourceIdentifiedAmount(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add("Submitted By", a => a.SubmittedByPerson != null ? a.SubmittedByPerson.GetFullNameFirstLastAndOrgShortNameAsUrl(currentFirmaSession) : new HtmlString(null), 200);
     Add("Submitted Date", a => a.SubmissionDate, 120);
     Add("Last Updated", a => a.LastUpdatedDate, 120);
     Add(FieldDefinitionEnum.ProjectDescription.ToType().ToGridHeaderString(), x => x.ProjectDescription, 300);
 }
Ejemplo n.º 5
0
        private void AddViewOnlyColumn()
        {
            Add(String.Empty,
                x =>
            {
                var latestNotApprovedUpdateBatch = x.GetLatestNotApprovedUpdateBatch();
                if (latestNotApprovedUpdateBatch == null)
                {
                    return(MakeAlertButton("Unable to View",
                                           $"The Update for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} {x.DisplayName} cannot not be displayed because no Update is in progress. The most recent Update was already approved.", "OK", "<span style=\"display:none\">Unable to </span>View</a><span style=\"display:none\">: The Update has already been approved</span>"));
                }
                if (latestNotApprovedUpdateBatch.IsCreated)
                {
                    return(MakeAlertButton("Unable to View",
                                           $"The Update for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} {x.DisplayName} cannot not be displayed because a new Update has already been started. Go to the All My Projects list to edit the new Update.", "OK", "<span style=\"display:none\">Unable to </span>View</a><span style=\"display:none\">: A new Update has been started</span>"));
                }
                if (latestNotApprovedUpdateBatch.IsReturned && x.IsUpdateMandatory)
                {
                    return(MakeAlertButton("Unable to View",
                                           $"The Update for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} {x.DisplayName} cannot not be displayed because the Update has been returned for mandatory correction. Go to the My Projects Requiring an Update list to fix the returned Update.", "OK", "<span style=\"display:none\">Unable to </span>View</a><span style=\"display:none\">: The Update has been returned</span>"));
                }
                if (latestNotApprovedUpdateBatch.IsReturned && !x.IsUpdateMandatory)
                {
                    return(MakeAlertButton("Unable to View",
                                           $"The Update for {Models.FieldDefinition.Project.GetFieldDefinitionLabel()} {x.DisplayName} cannot not be displayed because the Update has been returned for correction. Go to the All My Projects list to fix the returned Update.", "OK", "<span style=\"display:none\">Unable to </span>View</a><span style=\"display:none\">: The Update has been returned</span>"));
                }

                return(UrlTemplate.MakeHrefString(x.GetProjectUpdateUrl(), _canStewardProjects ? "Review" : "View", new Dictionary <string, string> {
                    { "class", "btn btn-xs btn-firma" }
                }));
            },
                60);
        }
        public PerformanceMeasureExpectedGridSpec(Models.PerformanceMeasure performanceMeasure)
        {
            Add(Models.FieldDefinition.Project.ToGridHeaderString(),
                a => UrlTemplate.MakeHrefString(a.Project.GetDetailUrl(), a.Project.DisplayName),
                350,
                DhtmlxGridColumnFilterType.Html);
            if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
            {
                Add(Models.FieldDefinition.ProjectsStewardOrganizationRelationshipToProject.ToGridHeaderString(), x => x.Project.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
                    DhtmlxGridColumnFilterType.Html);
            }
            Add(Models.FieldDefinition.PrimaryContactOrganization.ToGridHeaderString(), x => x.Project.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.ProjectStage.ToGridHeaderString(), a => a.Project.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            foreach (var performanceMeasureSubcategory in performanceMeasure.PerformanceMeasureSubcategories.OrderBy(x => x.PerformanceMeasureSubcategoryDisplayName))
            {
                Add(performanceMeasureSubcategory.PerformanceMeasureSubcategoryDisplayName,
                    a =>
                {
                    var performanceMeasureExpectedSubcategoryOption =
                        a.PerformanceMeasureExpectedSubcategoryOptions.SingleOrDefault(x => x.PerformanceMeasureSubcategoryID == performanceMeasureSubcategory.PerformanceMeasureSubcategoryID);
                    if (performanceMeasureExpectedSubcategoryOption != null)
                    {
                        return(performanceMeasureExpectedSubcategoryOption.PerformanceMeasureSubcategoryOption.PerformanceMeasureSubcategoryOptionName);
                    }
                    return(string.Empty);
                },
                    120,
                    DhtmlxGridColumnFilterType.SelectFilterStrict);
            }
            var expectedValueColumnName = $"{Models.FieldDefinition.ExpectedValue.ToGridHeaderString()} ({performanceMeasure.MeasurementUnitType.MeasurementUnitTypeDisplayName})";

            Add(expectedValueColumnName, a => a.ExpectedValue, 150, DhtmlxGridColumnFormatType.Decimal, DhtmlxGridColumnAggregationType.Total);
        }
Ejemplo n.º 7
0
        public ProgramGridSpec(Person currentPerson, Models.Organization organization)
        {
            var hasProgramManagePermissions = new ProgramManageFeature().HasPermissionByPerson(currentPerson);

            if (hasProgramManagePermissions)
            {
                var contentUrl = SitkaRoute <ProgramController> .BuildUrlFromExpression(t => t.New());

                if (organization != null)
                {
                    contentUrl = SitkaRoute <ProgramController> .BuildUrlFromExpression(t => t.NewProgram(organization.OrganizationID));
                }

                CreateEntityModalDialogForm = new ModalDialogForm(contentUrl, $"Create a new {Models.FieldDefinition.Program.GetFieldDefinitionLabel()}");
            }

            if (hasProgramManagePermissions)
            {
                Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), !x.IsDefaultProgramForImportOnly, true), 30, DhtmlxGridColumnFilterType.None, true);
            }
            Add("Program", a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.ProgramNameDisplay), 400, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.Organization.ToGridHeaderString("Parent Organization"), a => UrlTemplate.MakeHrefString(a.Organization.GetDetailUrl(), a.Organization.OrganizationName), 400, DhtmlxGridColumnFilterType.Html);
            Add("Short Name", a => a.ProgramShortName, 100);
            Add("Project Count", a => a.Projects.Count, 60);
            Add("Is Active", a => a.ProgramIsActive.ToYesNo(), 80, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add("Is Default for Bulk Import Only", a => a.IsDefaultProgramForImportOnly.ToYesNo(), 80, DhtmlxGridColumnFilterType.SelectFilterStrict);
        }
Ejemplo n.º 8
0
        public GisRecordGridSpec(Models.Person currentPerson, List <GisUploadAttemptGisMetadataAttribute> columns, List <Models.GisFeature> gisFeatures, GisUploadAttempt gisUploadAttempt)
        {
            ObjectNameSingular  = $"GIS Record";
            ObjectNamePlural    = $"GIS Records";
            SaveFiltersInCookie = false;
            var gisFeatureIDs = gisFeatures.Select(x => x.GisFeatureID);
            var allAttributesOnGisUploadAttempt = HttpRequestStorage.DatabaseEntities.GisFeatureMetadataAttributes.Where(x => gisFeatureIDs.Contains(x.GisFeatureID)).ToList();
            var dictionary     = allAttributesOnGisUploadAttempt.GroupBy(x => x.GisMetadataAttributeID).ToDictionary(x => x.Key, y => y.ToList());
            var columnsOrdered = columns
                                 .Where(x => !string.Equals(x.GisMetadataAttribute.GisMetadataAttributeName, "Shape", StringComparison.InvariantCultureIgnoreCase))
                                 .Where(x => dictionary.ContainsKey(x.GisMetadataAttributeID))
                                 .OrderBy(x => x.SortOrder)
                                 .ToList();


            Add("ID", x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.GisFeatureID.ToString()), 90, DhtmlxGridColumnFilterType.SelectFilterHtmlStrict);
            Add("Is Valid", x => (x.IsValid ?? false).ToString(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add("Calculated Area in Acres", x => x.CalculatedArea.ToString(), 90, DhtmlxGridColumnFilterType.Numeric);

            foreach (var fGetColumnNamesForTableResult in columnsOrdered)
            {
                Add(fGetColumnNamesForTableResult.GisMetadataAttribute.GisMetadataAttributeName
                    , x => x.GisFeatureMetadataAttributes.SingleOrDefault(y => y.GisMetadataAttributeID == fGetColumnNamesForTableResult.GisMetadataAttributeID)?.GisFeatureMetadataAttributeValue, 90, DhtmlxGridColumnFilterType.Text);
            }
        }
 public HtmlString GetObligationNumberLinkOrEmptyString()
 {
     return(this.ObligationRequest.ObligationNumber != null
         ? UrlTemplate.MakeHrefString(this.ObligationRequest.ObligationNumber.GetDetailUrl(),
                                      this.ObligationRequest.ObligationNumber.GetDisplayName())
         : new HtmlString(string.Empty));
 }
Ejemplo n.º 10
0
 public CustomPageGridSpec(bool hasManagePermissions)
 {
     if (hasManagePermissions)
     {
         Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true, true), 30, DhtmlxGridColumnFilterType.None);
         Add(string.Empty, a => DhtmlxGridHtmlHelpers.MakeLtInfoEditIconAsModalDialogLinkBootstrap(new ModalDialogForm(SitkaRoute <CustomPageController> .BuildUrlFromExpression(t => t.Edit(a)),
                                                                                                                       850, "Edit")),
             30, DhtmlxGridColumnFilterType.None);
         Add(string.Empty, a => DhtmlxGridHtmlHelpers.MakeModalDialogLink("<span>Edit Content</span>",
                                                                          SitkaRoute <CustomPageController> .BuildUrlFromExpression(y => y.EditInDialog(a)),
                                                                          800,
                                                                          $"Edit Content for {a.CustomPageDisplayName}",
                                                                          true,
                                                                          "Save",
                                                                          "Cancel",
                                                                          new List <string> {
             "gridButton"
         },
                                                                          null,
                                                                          null), 80, DhtmlxGridColumnFilterType.None);
     }
     Add("Menu", a => a.FirmaMenuItem.GetFirmaMenuItemDisplayName(), 110, DhtmlxGridColumnFilterType.Text);
     Add("Page Name", a => !a.IsDisabled() ? UrlTemplate.MakeHrefString(a.GetAboutPageUrl(), a.CustomPageDisplayName) : new HtmlString($"{a.CustomPageDisplayName}"), 180, DhtmlxGridColumnFilterType.Text);
     Add("Has Content", a => a.HasPageContent().ToYesNo(), 85, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.CustomPageViewableBy.ToType().ToGridHeaderString(), a => a.GetViewableRolesAsListOfStrings(), 400, DhtmlxGridColumnFilterType.Text);
     Add("CustomPageID", a => a.CustomPageID, 0);
 }
        private void AddEditAndOrViewColumn()
        {
            Add(String.Empty,
                x =>
            {
                var latestUpdateState = x.GetLatestUpdateStateResilientToDuplicateUpdateBatches();
                var linkText          = "Begin";
                if (latestUpdateState == ProjectUpdateState.Created)
                {
                    linkText = "Edit";
                }
                else if (latestUpdateState == ProjectUpdateState.Returned)
                {
                    linkText = "Re-Edit";
                }
                else if (latestUpdateState == ProjectUpdateState.Submitted)
                {
                    linkText = _canStewardProjects ? "Review" : "View";
                }

                return(UrlTemplate.MakeHrefString(x.GetProjectUpdateUrl(), linkText, new Dictionary <string, string> {
                    { "class", "btn btn-xs btn-firma" }
                }));
            },
                60);
        }
Ejemplo n.º 12
0
        public string RenderMenu(string indent)
        {
            // Example:
            //    <li><a href="@ViewDataTyped.HomeUrl">Home</a></li>
            //    <li><a href="@ViewDataTyped.OverviewUrl">About</a>
            //        <ul>
            //            <li><a href="@ViewDataTyped.OverviewUrl">Overview</a></li>
            //            <li><a href="@ViewDataTyped.HistoryUrl">History</a></li>
            //            <li><a href="@ViewDataTyped.PartnersUrl">Partners</a></li>
            //            <li><a href="@ViewDataTyped.FaqUrl">FAQ</a></li>
            //        </ul>
            //    </li>
            if (RawString != null)
            {
                return($"<li>{RawString}</li>");
            }
            if (!ShouldShow || (IsTopLevelMenuItem && !HasUrl && !ChildenMenuItemsSecurityFiltered.Any()))
            {
                return(string.Empty);
            }
            if (ChildenMenuItemsSecurityFiltered.Any())
            {
                return(RenderMenuWithChildren(indent));
            }

            var extraCssClassesDictionary = ExtraTopLevelMenuCssClasses.Any() ? new Dictionary <string, string> {
                { "class", string.Join(" ", ExtraTopLevelMenuCssClasses) }
            } : null;
            var anchorTagString = UrlTemplate.MakeHrefString(UrlString, MenuItemName, extraCssClassesDictionary);

            return(string.Format("{0}<li class=\"\">{1}</li>", indent, anchorTagString));
        }
        public static List <LayerGeoJson> GetBoundaryLayerGeoJson(this IEnumerable <StormwaterJurisdiction> jurisdictions, bool clickThrough)
        {
            var jurisdictionsToShow =
                jurisdictions?.Where(x => x.StormwaterJurisdictionGeometry != null)
                .ToList();

            if (jurisdictionsToShow == null || !jurisdictionsToShow.Any())
            {
                return(new List <LayerGeoJson>());
            }


            return(jurisdictionsToShow.GroupBy(x => x.Organization.OrganizationType, (organizationType, jurisdictionList) =>
            {
                return new LayerGeoJson(
                    $"{organizationType.OrganizationTypeName} {FieldDefinitionType.Jurisdiction.GetFieldDefinitionLabelPluralized()}",
                    new FeatureCollection(jurisdictionList.Select(x =>
                {
                    var feature = DbGeometryToGeoJsonHelper.FromDbGeometryWithNoReproject(x.StormwaterJurisdictionGeometry.Geometry4326);
                    feature.Properties.Add("Organization Name", UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.Organization.OrganizationName).ToHtmlString());
                    feature.Properties.Add("Short Name", UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.Organization.OrganizationName).ToHtmlString());
                    feature.Properties.Add("Target URL", x.GetDetailUrl());
                    return feature;
                }).ToList()),
                    organizationType.LegendColor, 1,
                    LayerInitialVisibility.Show,
                    clickThrough);
            }).ToList());
        }
Ejemplo n.º 14
0
        public static void TryParseWithParameter(string text, string[] expected)
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(@"
namespace AspBox
{
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;

    [ApiController]
    public class OrdersController : Controller
    {
        [HttpGet(""api/orders/{id}"")]
        public async Task<IActionResult> GetOrder([FromRoute]int id)
        {
        }
    }
}".AssertReplace("api/orders/{id}", text));
            var literal    = syntaxTree.FindLiteralExpression(text);

            Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
            CollectionAssert.AreEqual(expected, template.Path.Select(x => x.Span.ToString()));

            // ReSharper disable once PossibleInvalidOperationException
            var segment = template.Path.Single(x => x.Parameter.HasValue);

            Assert.AreEqual(expected.Single(x => x.StartsWith("{", StringComparison.Ordinal)), segment.Span.ToString());
            Assert.AreEqual("id", segment.Parameter?.Name.ToString());
        }
Ejemplo n.º 15
0
        public static String MakeBocConjoinedLinkString(KeyValuePair <string, List <ProjectFirmaModels.Models.BudgetObjectCode> > currentBocDictEntry)
        {
            List <HtmlString> htmlLinks = currentBocDictEntry.Value
                                          .Select(boc => UrlTemplate.MakeHrefString(boc.GetDetailUrl(), boc.FbmsYear.ToString())).ToList();

            return(String.Join(", ", htmlLinks));
        }
        public BasicProjectInfoGridSpec(Person currentPerson, bool allowTaggingFunctionality)
        {
            var userHasTagManagePermissions = new FirmaAdminFeature().HasPermissionByPerson(currentPerson);

            if (userHasTagManagePermissions && allowTaggingFunctionality)
            {
                BulkTagModalDialogForm = new BulkTagModalDialogForm(SitkaRoute <TagController> .BuildUrlFromExpression(x => x.BulkTagProjects(null)), $"Tag Checked {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", $"Tag {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}");
                AddCheckBoxColumn();
                Add("ProjectID", x => x.ProjectID, 0);
            }

            Add(string.Empty, x => UrlTemplate.MakeHrefString(x.GetFactSheetUrl(), FirmaDhtmlxGridHtmlHelpers.FactSheetIcon.ToString()), 30, DhtmlxGridColumnFilterType.None);
            Add(Models.FieldDefinition.FhtProjectNumber.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.FhtProjectNumber), 100, DhtmlxGridColumnFilterType.Text);
            Add(Models.FieldDefinition.ProjectName.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 300, DhtmlxGridColumnFilterType.Html);

            if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
            {
                Add(Models.FieldDefinition.ProjectsStewardOrganizationRelationshipToProject.ToGridHeaderString(), x => x.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
                    DhtmlxGridColumnFilterType.Html);
            }
            Add(Models.FieldDefinition.PrimaryContactOrganization.ToGridHeaderString(), x => x.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.ProjectStage.ToGridHeaderString(), x => x.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.ProjectInitiationDate.ToGridHeaderString(), x => x.GetPlannedDate(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.ExpirationDate.ToGridHeaderString(), x => x.GetExpirationDateFormatted(), 115, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.CompletionDate.ToGridHeaderString(), x => x.GetCompletionDateFormatted(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.EstimatedTotalCost.ToGridHeaderString(), x => x.EstimatedTotalCost, 110, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add(Models.FieldDefinition.ProjectGrantAllocationRequestTotalAmount.ToGridHeaderString(), x => x.GetTotalFunding(), 110, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add(Models.FieldDefinition.ProjectDescription.ToGridHeaderString(), x => x.ProjectDescription, 300);
            if (userHasTagManagePermissions)
            {
                Add("Tags", x => new HtmlString(!x.ProjectTags.Any() ? string.Empty : string.Join(", ", x.ProjectTags.Select(pt => pt.Tag.DisplayNameAsUrl))), 100, DhtmlxGridColumnFilterType.Html);
            }
        }
Ejemplo n.º 17
0
        public UserProjectGridSpec(FirmaSession currentFirmaSession, Person person)
        {
            var userHasTagManagePermissions = new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession);

            Add(string.Empty, x => UrlTemplate.MakeHrefString(x.GetFactSheetUrl(), FirmaDhtmlxGridHtmlHelpers.FactSheetIcon.ToString()), 30, DhtmlxGridColumnFilterType.None);
            Add(FieldDefinitionEnum.ProjectName.ToType().ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 300, DhtmlxGridColumnFilterType.Html);

            Add($"Contact Type(s)", x => string.Join(", ", person.GetListOfContactTypeStringsForProject(x)), 300, DhtmlxGridColumnFilterType.Html);

            if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
            {
                Add(FieldDefinitionEnum.ProjectsStewardOrganizationRelationshipToProject.ToType().ToGridHeaderString(), x => x.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
                    DhtmlxGridColumnFilterType.Html);
            }
            Add(FieldDefinitionEnum.IsPrimaryContactOrganization.ToType().ToGridHeaderString(), x => x.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
            Add(FieldDefinitionEnum.ProjectStage.ToType().ToGridHeaderString(), x => x.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(FieldDefinitionEnum.PlanningDesignStartYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetPlanningDesignStartYear(x), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(FieldDefinitionEnum.ImplementationStartYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetImplementationStartYear(x), 115, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(FieldDefinitionEnum.CompletionYear.ToType().ToGridHeaderString(), x => ProjectModelExtensions.GetCompletionYear(x), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(FieldDefinitionEnum.FundingType.ToType().ToGridHeaderString(), x => x.FundingType?.FundingTypeDisplayName ?? string.Empty, 300, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(FieldDefinitionEnum.EstimatedTotalCost.ToType().ToGridHeaderString(), x => x.GetEstimatedTotalRegardlessOfFundingType(), 110, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
            Add(FieldDefinitionEnum.ProjectedFunding.ToType().ToGridHeaderString(), x => x.GetProjectedFunding(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
            Add(FieldDefinitionEnum.NoFundingSourceIdentified.ToType().ToGridHeaderString(), x => x.GetNoFundingSourceIdentifiedAmount(), 110, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
            foreach (var geospatialAreaType in new List <GeospatialAreaType>())
            {
                Add($"{geospatialAreaType.GeospatialAreaTypeNamePluralized}", a => a.GetProjectGeospatialAreaNamesAsHyperlinks(geospatialAreaType), 350, DhtmlxGridColumnFilterType.Html);
            }
            Add(FieldDefinitionEnum.ProjectDescription.ToType().ToGridHeaderString(), x => x.ProjectDescription, 300);
            if (userHasTagManagePermissions)
            {
                Add("Tags", x => new HtmlString(!x.ProjectTags.Any() ? string.Empty : string.Join(", ", x.ProjectTags.Select(pt => pt.Tag.GetDisplayNameAsUrl()))), 100, DhtmlxGridColumnFilterType.Html);
            }
        }
Ejemplo n.º 18
0
        public IndexGridSpec(Person currentPerson)
        {
            if (new ProjectTypeManageFeature().HasPermissionByPerson(currentPerson))
            {
                Add(string.Empty,
                    x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true, !x.HasDependentObjects(), true),
                    30, DhtmlxGridColumnFilterType.None);
            }

            if (MultiTenantHelpers.IsTaxonomyLevelTrunk())
            {
                Add(Models.FieldDefinition.TaxonomyTrunk.ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.TaxonomyBranch.TaxonomyTrunk.SummaryUrl, a.TaxonomyBranch.TaxonomyTrunk.TaxonomyTrunkName), 250);
            }
            if (!MultiTenantHelpers.IsTaxonomyLevelLeaf())
            {
                Add(Models.FieldDefinition.TaxonomyBranch.ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.TaxonomyBranch.SummaryUrl, a.TaxonomyBranch.TaxonomyBranchName), 300);
            }
            Add(Models.FieldDefinition.ProjectType.ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.GetSummaryUrl(), a.ProjectTypeName), 350, DhtmlxGridColumnFilterType.Html);
            Add("Description", a => a.ProjectTypeDescriptionHtmlString, 350);
            Add($"# of {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", a => a.GetAssociatedProjects(currentPerson).Count, 90);
            Add($"# of {Models.FieldDefinition.PerformanceMeasure.GetFieldDefinitionLabelPluralized()}", a => a.ProjectTypePerformanceMeasures.Count, 90);
            Add("Sort Order", a => a.ProjectTypeSortOrder, 90, DhtmlxGridColumnFormatType.None);

            Add($"{Models.FieldDefinition.LimitVisibilityToAdmin.GetFieldDefinitionLabel()}", a => a.LimitVisibilityToAdmin.ToYesNo(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
        }
        public ProposalsGridSpec(Person currentPerson)
        {
            Add(string.Empty, x =>
            {
                var userHasDeletePermission = new ProjectDeleteProposalFeature().HasPermission(currentPerson, x).HasPermission;
                return(DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteProposalUrl(),
                                                                            userHasDeletePermission, true, true));
            }, 30, DhtmlxGridColumnFilterType.None);
            Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeEditIconAsHyperlinkBootstrap(x.GetProjectCreateUrl(), new ProjectCreateFeature().HasPermission(currentPerson, x).HasPermission), 30, DhtmlxGridColumnFilterType.None);

            Add(Models.FieldDefinition.FhtProjectNumber.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.FhtProjectNumber), 100, DhtmlxGridColumnFilterType.Text);
            Add(Models.FieldDefinition.ProjectName.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 300, DhtmlxGridColumnFilterType.Html);
            Add("Submittal Status", a => a.ProjectApprovalStatus.ProjectApprovalStatusDisplayName, 110, DhtmlxGridColumnFilterType.SelectFilterStrict);
            if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
            {
                Add(Models.FieldDefinition.ProjectsStewardOrganizationRelationshipToProject.ToGridHeaderString(), x => x.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
                    DhtmlxGridColumnFilterType.Html);
            }
            Add(Models.FieldDefinition.PrimaryContactOrganization.ToGridHeaderString(), x => x.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.ProjectType.ToGridHeaderString(), x => x.ProjectType == null ? string.Empty : x.ProjectType.DisplayName, 300, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.ProjectInitiationDate.ToGridHeaderString(), x => x.GetPlannedDate(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.ExpirationDate.ToGridHeaderString(), x => x.GetExpirationDateFormatted(), 115, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.CompletionDate.ToGridHeaderString(), x => x.GetCompletionDateFormatted(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.EstimatedTotalCost.ToGridHeaderString(), x => x.EstimatedTotalCost, 100, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add(Models.FieldDefinition.ProjectGrantAllocationRequestTotalAmount.ToGridHeaderString(), x => x.GetTotalFunding(), 100, DhtmlxGridColumnFormatType.CurrencyWithCents, DhtmlxGridColumnAggregationType.Total);
            Add("Proposed By", a => a.ProposingPerson.GetFullNameFirstLastAndOrgShortNameAsUrl(), 200);
            Add("Proposed Date", a => a.ProposingDate, 120);
            Add("Submitted Date", a => a.SubmissionDate, 120);
            Add("Last Updated", a => a.LastUpdateDate, 120);
            Add(Models.FieldDefinition.ProjectDescription.ToGridHeaderString(), x => x.ProjectDescription, 300);
        }
Ejemplo n.º 20
0
        public void Add_user(string email, string password, string phone, string gender, string dob)
        {
            using (SqlConnection conn = new SqlConnection(connetionString))
            {
                string query = "NEW_PAT_ACT_MVC";

                SqlCommand cmd = new SqlCommand(query, conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("Email", email);
                cmd.Parameters.AddWithValue("Password", password);
                cmd.Parameters.AddWithValue("Phone", phone);
                //cmd.Parameters.AddWithValue("Gender", gender);
                //cmd.Parameters.AddWithValue("DOB", dob);
                cmd.Parameters.AddWithValue("UserId", DBNull.Value);
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }

            var code     = new DataEncrypt().Encrypt(phone);
            var template = new UrlTemplate
            {
                Url = baseUrl + "/verify-code/" + code.Replace('+', '!')
            };

            new NotificationEndPoint().NotifyUser("new_user_verification", template, -1, new DataEncrypt().Decrypt(email));
        }
Ejemplo n.º 21
0
 public PersonWithRoleGridSpec()
 {
     Add("Last Name", a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.LastName), 200, DhtmlxGridColumnFilterType.SelectFilterHtmlStrict);
     Add("First Name", a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.FirstName), 200, DhtmlxGridColumnFilterType.SelectFilterHtmlStrict);
     Add($"{FieldDefinitionEnum.Organization.ToType().GetFieldDefinitionLabel()}", a => a.Organization.GetDisplayName(), 200, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add("Last Activity", a => a.LastActivityDate.ToString(), 200, DhtmlxGridColumnFilterType.SelectFilterStrict);
 }
Ejemplo n.º 22
0
        public static List <LayerGeoJson> GetBoundaryLayerGeoJson(this IEnumerable <Organization> organizations)
        {
            var organizationsToShow =
                organizations?.Where(x => x.OrganizationBoundary != null && x.OrganizationType != null)
                .ToList();

            if (organizationsToShow == null || !organizationsToShow.Any())
            {
                return(new List <LayerGeoJson>());
            }


            return(organizationsToShow.GroupBy(x => x.OrganizationType, (organizationType, organizationList) =>
            {
                return new LayerGeoJson(
                    $"{organizationType.OrganizationTypeName} {FieldDefinition.Organization.GetFieldDefinitionLabelPluralized()}",
                    new FeatureCollection(organizationList.Select(organization =>
                {
                    var feature = DbGeometryToGeoJsonHelper.FromDbGeometry(organization.OrganizationBoundary);
                    feature.Properties.Add("Hover Name", UrlTemplate.MakeHrefString(organization.GetDetailUrl(), organization.OrganizationShortName).ToHtmlString());
                    feature.Properties.Add(organizationType.OrganizationTypeName, UrlTemplate.MakeHrefString(organization.GetDetailUrl(), organization.OrganizationName).ToHtmlString());
                    return feature;
                }).ToList()),
                    organizationType.LegendColor, 1,
                    organizationType.ShowOnProjectMaps ? LayerInitialVisibility.Show : LayerInitialVisibility.Hide);
            }).ToList());
        }
Ejemplo n.º 23
0
        public static void UriTemplate_ToString_1()
        {
            DateTime    dt       = DateTime.Now;
            UrlTemplate template = "{Year}";

            Assert.Equal(Invariant($"{dt.Year}"), template.ToString(dt));
        }
        public ProjectIndexGridSpec(Person currentPerson
                                    , bool allowTaggingFunctionality
                                    , bool allowDeleteFunctionality
                                    , Dictionary <int, vTotalTreatedAcresByProject> totalTreatedAcresByProjectDictionary
                                    , Dictionary <int, List <Models.Program> > programsByProject)
        {
            var userHasTagManagePermissions = new FirmaAdminFeature().HasPermissionByPerson(currentPerson);
            var userHasDeletePermissions    = new ProjectDeleteFeature().HasPermissionByPerson(currentPerson);

            if (userHasTagManagePermissions && allowTaggingFunctionality)
            {
                BulkTagModalDialogForm = new BulkTagModalDialogForm(SitkaRoute <TagController> .BuildUrlFromExpression(x => x.BulkTagProjects(null)), $"Tag Checked {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}", $"Tag {Models.FieldDefinition.Project.GetFieldDefinitionLabelPluralized()}");
                AddCheckBoxColumn();
                Add("ProjectID", x => x.ProjectID, 0);
            }

            if (userHasDeletePermissions && allowDeleteFunctionality)
            {
                Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true, true), 30, DhtmlxGridColumnFilterType.None);
            }


            Add(string.Empty, x => MakeFactSheetUrl(x), 30, DhtmlxGridColumnFilterType.None);

            Add(Models.FieldDefinition.FhtProjectNumber.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.FhtProjectNumber), 100, DhtmlxGridColumnFilterType.Text);
            Add(Models.FieldDefinition.ProjectName.ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 200, DhtmlxGridColumnFilterType.Html);
            Add(Models.FieldDefinition.ProjectType.ToGridHeaderString(), x => x.ProjectType.DisplayName, 120, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.ProjectStage.ToGridHeaderString(), x => x.ProjectStage.ProjectStageDisplayName, 90, DhtmlxGridColumnFilterType.SelectFilterStrict);

            Add(Models.FieldDefinition.ProjectTotalCompletedTreatmentAcres.ToGridHeaderString(), x => TotalTreatedAcres(x, totalTreatedAcresByProjectDictionary), 100, DhtmlxGridColumnFormatType.Decimal);
            Add($"{MultiTenantHelpers.GetIsPrimaryContactOrganizationRelationship().RelationshipTypeName} Organization", x => x.GetPrimaryContactOrganization()?.DisplayName, 200, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.Program.ToGridHeaderStringPlural("Programs"), x => Program(x, programsByProject), 90, DhtmlxGridColumnFilterType.Html);
            Add($"Associated {Models.FieldDefinition.PriorityLandscape.ToGridHeaderString()}", x => x.ProjectPriorityLandscapes.FirstOrDefault()?.PriorityLandscape?.DisplayName, 125, DhtmlxGridColumnFilterType.SelectFilterStrict);
        }
Ejemplo n.º 25
0
        public IndexGridSpec(FirmaSession currentFirmaSession)
        {
            var hasDeletePermission = new UserEditFeature().HasPermissionByFirmaSession(currentFirmaSession);

            if (hasDeletePermission)
            {
                Add(string.Empty,
                    x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), true, true),
                    30, DhtmlxGridColumnFilterType.None);
            }

            // Impersonate link
            bool impersonationIsAllowed     = FirmaWebConfiguration.ImpersonationAllowedInEnvironment;
            bool hasImpersonationPermission = new FirmaImpersonateUserFeature().HasPermissionByFirmaSession(currentFirmaSession);

            if (impersonationIsAllowed && hasImpersonationPermission)
            {
                Add("Imper. User", a => ImpersonateUserButton.MakeImpersonateSinglePageHtmlLink(a), 45, DhtmlxGridColumnFilterType.Html);
            }

            Add("Last Name", a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.LastName), 100, DhtmlxGridColumnFilterType.Html);
            Add("First Name", a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.FirstName), 100, DhtmlxGridColumnFilterType.Html);
            Add("Email", a => a.Email, 200);
            Add($"{FieldDefinitionEnum.Organization.ToType().GetFieldDefinitionLabelPluralized()}", a => a.Organization.GetShortNameAsUrl(), 200);
            Add("Phone", a => a.Phone.ToPhoneNumberString(), 100);
            Add("Username", a => a.LoginName.ToString(), 200);
            Add("Last Activity", a => a.LastActivityDate, 120);
            Add("Role", a => a.Role.GetDisplayNameAsUrl(), 100, DhtmlxGridColumnFilterType.SelectFilterHtmlStrict);
            Add("Active?", a => a.IsActive.ToYesNo(), 75, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add("Receives Support Emails?", a => a.ReceiveSupportEmails.ToYesNo(), 100, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add($"{FieldDefinitionEnum.OrganizationPrimaryContact.ToType().GetFieldDefinitionLabel()} for Organizations", a => a.GetPrimaryContactOrganizations().Count, 120);
        }
Ejemplo n.º 26
0
 public ProposalsGridSpec(FirmaSession firmaSession)
 {
     Add(string.Empty, x =>
     {
         var userHasDeletePermission = new ProjectDeleteProposalFeature().HasPermission(firmaSession, x).HasPermission;
         return(DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteProposalUrl(),
                                                                     userHasDeletePermission, true));
     }, 30, DhtmlxGridColumnFilterType.None);
     Add(string.Empty,
         x => DhtmlxGridHtmlHelpers.MakeEditIconAsHyperlinkBootstrap(x.GetProjectCreateUrl(),
                                                                     new ProjectCreateFeature().HasPermission(firmaSession, x).HasPermission&&
                                                                     !(x.ProjectApprovalStatus == ProjectApprovalStatus.PendingApproval &&
                                                                       firmaSession.Role == ProjectFirmaModels.Models.Role.Normal)), 30,
         DhtmlxGridColumnFilterType.None);
     Add(FieldDefinitionEnum.ProjectName.ToType().ToGridHeaderString(), x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.ProjectName), 300, DhtmlxGridColumnFilterType.Html);
     Add("Submittal Status", a => a.ProjectApprovalStatus.ProjectApprovalStatusDisplayName, 110, DhtmlxGridColumnFilterType.SelectFilterStrict);
     if (MultiTenantHelpers.HasCanStewardProjectsOrganizationRelationship())
     {
         Add(FieldDefinitionEnum.ProjectsStewardOrganizationRelationshipToProject.ToType().ToGridHeaderString(), x => x.GetCanStewardProjectsOrganization().GetShortNameAsUrl(), 150,
             DhtmlxGridColumnFilterType.Html);
     }
     Add(FieldDefinitionEnum.IsPrimaryContactOrganization.ToType().ToGridHeaderString(), x => x.GetPrimaryContactOrganization().GetShortNameAsUrl(), 150, DhtmlxGridColumnFilterType.Html);
     Add(FieldDefinitionEnum.TaxonomyLeaf.ToType().ToGridHeaderString(), x => x.GetTaxonomyLeaf() == null ? string.Empty : x.GetTaxonomyLeaf().GetDisplayName(), 300, DhtmlxGridColumnFilterType.Html);
     Add(FieldDefinitionEnum.PlanningDesignStartYear.ToType().ToGridHeaderString(), x => x.GetPlanningDesignStartYear(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.ImplementationStartYear.ToType().ToGridHeaderString(), x => x.GetImplementationStartYear(), 115, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.CompletionYear.ToType().ToGridHeaderString(), x => x.GetCompletionYear(), 90, DhtmlxGridColumnFilterType.SelectFilterStrict);
     Add(FieldDefinitionEnum.EstimatedTotalCost.ToType().ToGridHeaderString(), x => x.GetEstimatedTotalRegardlessOfFundingType(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add(FieldDefinitionEnum.ProjectedFunding.ToType().ToGridHeaderString(), x => x.GetProjectedFunding(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add(FieldDefinitionEnum.NoFundingSourceIdentified.ToType().ToGridHeaderString(), x => x.GetNoFundingSourceIdentifiedAmount(), 100, DhtmlxGridColumnFormatType.Currency, DhtmlxGridColumnAggregationType.Total);
     Add("Proposed By", a => a.ProposingPerson.GetFullNameFirstLastAndOrgShortNameAsUrl(firmaSession), 200);
     Add("Proposed Date", a => a.ProposingDate, 120);
     Add("Submitted Date", a => a.SubmissionDate, 120);
     Add("Last Updated", a => a.LastUpdatedDate, 120);
     Add(FieldDefinitionEnum.ProjectDescription.ToType().ToGridHeaderString(), x => x.ProjectDescription, 300);
 }
        public static HtmlString DownloadTemplateLink(this ProjectFirmaModels.Models.ReportTemplate reportTemplate)
        {
            var linkText = reportTemplate.FileResourceInfo.OriginalBaseFilename +
                           reportTemplate.FileResourceInfo.OriginalFileExtension;

            return(UrlTemplate.MakeHrefString(reportTemplate.FileResourceInfo.GetFileResourceUrl(), linkText));
        }
Ejemplo n.º 28
0
        public AgreementGridSpec(FirmaSession currentFirmaSession)
        {
            var hasAgreementDeletePermission = new FirmaAdminFeature().HasPermissionByFirmaSession(currentFirmaSession);

            if (hasAgreementDeletePermission)
            {
                Add(string.Empty, x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteAgreementUrl(), x.AgreementCanBeDeleted()), 30);
            }

            // AgreementNumber
            Add(FieldDefinitionEnum.AgreementNumber.ToType().ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.GetDetailUrl(), a.GetDisplayName()), 100, DhtmlxGridColumnFilterType.Html);
            // Projects
            Add(FieldDefinitionEnum.Project.ToType().ToGridHeaderStringPlural(), a => GetProjectHrefsString(a), 300, DhtmlxGridColumnFilterType.Html);

            if (new ObligationViewFeature().HasPermissionByFirmaSession(currentFirmaSession))
            {
                // Obligations
                Add(FieldDefinitionEnum.Obligation.ToType().ToGridHeaderStringPlural(), a => GetObligationHrefsString(a), 300, DhtmlxGridColumnFilterType.Html);
            }

            // Organization info
            Add(FieldDefinitionEnum.Organization.ToType().ToGridHeaderString(), a => UrlTemplate.MakeHrefString(a.Organization?.GetDetailUrl(), a.Organization?.GetDisplayName()), 300);
            Add(FieldDefinitionEnum.OrganizationType.ToType().ToGridHeaderString(), a => a.Organization?.OrganizationType?.OrganizationTypeName, 80, DhtmlxGridColumnFilterType.SelectFilterStrict);
            // Contract Type
            Add(FieldDefinitionEnum.ContractType.ToType().ToGridHeaderString(), a => a.ContractType.ContractTypeDisplayName, 80, DhtmlxGridColumnFilterType.SelectFilterStrict);

            Add($"# of {FieldDefinitionEnum.CostAuthorityWorkBreakdownStructure.ToType().GetFieldDefinitionLabelPluralized()}", a => a.AgreementCostAuthorities.Count, 80);
        }
Ejemplo n.º 29
0
        public static void TryParseWhenIntParameter(string text, string[] segments, string[] constraints)
        {
            var syntaxTree = CSharpSyntaxTree.ParseText(@"
namespace AspBox
{
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;

    [ApiController]
    public class OrdersController : Controller
    {
        [HttpGet(""orders/{id}"")]
        public async Task<IActionResult> GetOrder([FromRoute]int id)
        {
        }
    }
}".AssertReplace("\"orders/{id}\"", text));
            var literal    = syntaxTree.FindLiteralExpression(text);

            Assert.AreEqual(true, UrlTemplate.TryParse(literal, out var template));
            CollectionAssert.AreEqual(segments, template.Path.Select(x => x.Span.ToString()));

            // ReSharper disable once PossibleInvalidOperationException
            var parameter = template.Path.Single(x => x.Parameter.HasValue)
                            .Parameter.Value;

            Assert.AreEqual("id", parameter.Name.ToString());
            CollectionAssert.AreEqual(constraints, parameter.Constraints.Select(x => x.Span.ToString()));
        }
        /// <summary>
        /// Build relative URL based on permalink template and other properties
        /// </summary>
        /// <returns></returns>
        public virtual string ToUrl()
        {
            var result = UrlTemplate?.Replace("~/", string.Empty) ?? string.Empty;

            if (BuiltInPermalinkStyles.ContainsKey(result))
            {
                result = BuiltInPermalinkStyles[result];
            }

            var removeLeadingSlash = !result.StartsWith("/");
            var categories         = Categories ?? new string[] { };

            result = result.Replace(":folder", FilePath != null ? Path.GetDirectoryName(FilePath).Replace("\\", "/") : string.Empty);
            result = result.Replace(":categories", string.Join("/", categories));
            result = result.Replace(":dashcategories", string.Join("-", categories));
            result = result.Replace(":year", Date?.Year.ToString(CultureInfo.InvariantCulture) ?? string.Empty);
            result = result.Replace(":month", Date?.ToString("MM") ?? string.Empty);
            result = result.Replace(":day", Date?.ToString("dd") ?? string.Empty);
            result = result.Replace(":title", FilePath != null ? GetTitleFromFilePath(FilePath) : string.Empty);
            result = result.Replace(":y_day", Date?.DayOfYear.ToString("000") ?? string.Empty);
            result = result.Replace(":short_year", Date?.ToString("yy") ?? string.Empty);
            result = result.Replace(":i_month", Date?.Month.ToString() ?? string.Empty);
            result = result.Replace(":i_day", Date?.Day.ToString() ?? string.Empty);

            if (result.Contains(":category"))
            {
                var matches = CategoryRegex.Matches(result);
                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        var replacementValue = string.Empty;
                        if (match.Success)
                        {
                            int categoryIndex;
                            if (int.TryParse(match.Groups[1].Value, out categoryIndex) && categoryIndex > 0)
                            {
                                replacementValue = categories.Skip(categoryIndex - 1).FirstOrDefault();
                            }
                            else if (categories.Any())
                            {
                                replacementValue = categories.First();
                            }
                        }

                        result = result.Replace(match.Value, replacementValue);
                    }
                }
            }

            result = SlashesRegex.Replace(result, "/");

            if (removeLeadingSlash)
            {
                result = result.TrimStart('/');
            }

            return(result);
        }