private string FormatAsJson(ExpenseClaims claims) { StringBuilder result = new StringBuilder(16384); string hasDoxString = "<img baseid='E{5}' class='LocalIconDox action-icon' />"; result.Append("{\"rows\":["); FinancialTransactionTagSets tagSets = FinancialTransactionTagSets.ForOrganization(CurrentOrganization); foreach (ExpenseClaim claim in claims) { StringBuilder extraTags = new StringBuilder(); FinancialTransaction transaction = claim.FinancialTransaction; if (transaction != null) { foreach (FinancialTransactionTagSet tagSet in tagSets) { FinancialTransactionTagType tagType = transaction.GetTag(tagSet); extraTags.AppendFormat("\"tagSet{0}\":\"{1}\",", tagSet.Identity, tagType != null ? JsonSanitize(tagType.Name) : string.Empty); } } result.Append("{"); result.AppendFormat( "\"description\":\"{2}\",\"budgetName\":\"{3}\",{6}\"amountRequested\":\"{4:N2}\",\"itemId\":\"E{5}\"," + "\"dox\":\"" + (claim.Documents.Count > 0 ? hasDoxString : " ") + "\"," + "\"actions\":\"" + "<img id='IconApprovalE{5}' class='LocalIconApproval action-icon' baseid='E{5}' />" + "<img id='IconApprovedE{5}' class='LocalIconApproved status-icon' baseid='E{5}' />" + "<img id='IconWaitE{5}' class='LocalIconWait status-icon' baseid='E{5}' />" + "<img id='IconUndoE{5}' class='LocalIconUndo action-icon' baseid='E{5}' />" + "<img id='IconDenialE{5}' class='LocalIconDenial action-icon' baseid='E{5}' />" + "<img id='IconDeniedE{5}' class='LocalIconDenied status-icon' baseid='E{5}' />\"", "olditem", JsonSanitize(claim.ClaimerCanonical), JsonSanitize(claim.Description), JsonSanitize(claim.Budget.Name), claim.AmountCents / 100.0, claim.Identity, extraTags); result.Append("},"); } result.Remove(result.Length - 1, 1); // remove last comma result.Append("]}"); return(result.ToString()); }
private string FormatAsJson(ExpenseClaims claims) { StringBuilder result = new StringBuilder(16384); string hasDoxString = "<img src='/Images/Icons/iconshock-search-256px.png' onmouseover=\\\"this.src='/Images/Icons/iconshock-search-hot-256px.png';\\\" onmouseout=\\\"this.src='/Images/Icons/iconshock-search-256px.png';\\\" baseid=\\\"E{5}\\\" class=\\\"LocalViewDox\\\" height=\\\"20\\\" width=\\\"20\\\" style=\\\"cursor:pointer\\\" />"; result.Append("{\"rows\":["); FinancialTransactionTagSets tagSets = FinancialTransactionTagSets.ForOrganization(CurrentOrganization); foreach (ExpenseClaim claim in claims) { StringBuilder extraTags = new StringBuilder(); FinancialTransaction transaction = claim.FinancialTransaction; if (transaction != null) { foreach (FinancialTransactionTagSet tagSet in tagSets) { FinancialTransactionTagType tagType = transaction.GetTag(tagSet); extraTags.AppendFormat("\"tagSet{0}\":\"{1}\",", tagSet.Identity, tagType != null ? JsonSanitize(tagType.Name) : string.Empty); } } result.Append("{"); result.AppendFormat( "\"description\":\"{2}\",\"budgetName\":\"{3}\",{6}\"amountRequested\":\"{4:N2}\",\"itemId\":\"E{5}\"," + "\"dox\":\"" + (claim.Documents.Count > 0 ? hasDoxString : " ") + "\"," + "\"actions\":\"" + "<img id=\\\"IconApprovalE{5}\\\" class=\\\"LocalIconApproval\\\" baseid=\\\"E{5}\\\" height=\\\"18\\\" width=\\\"24\\\" />" + "<img id=\\\"IconApprovedE{5}\\\" class=\\\"LocalIconApproved\\\" baseid=\\\"E{5}\\\" height=\\\"18\\\" width=\\\"24\\\" />" + "<img id=\\\"IconDenialE{5}\\\" class=\\\"LocalIconDenial\\\" baseid=\\\"E{5}\\\" height=\\\"18\\\" width=\\\"24\\\" />" + "<img id=\\\"IconDeniedE{5}\\\" class=\\\"LocalIconDenied\\\" baseid=\\\"E{5}\\\" height=\\\"18\\\" width=\\\"24\\\" />\"", "olditem", JsonSanitize(claim.ClaimerCanonical), JsonSanitize(claim.Description), JsonSanitize(claim.Budget.Name), claim.AmountCents / 100.0, claim.Identity, extraTags); result.Append("},"); } result.Remove(result.Length - 1, 1); // remove last comma result.Append("]}"); return(result.ToString()); }
private void Localize() { PageTitle = Resources.Pages.Financial.ValidateReceipts_PageTitle; InfoBoxLiteral = Resources.Pages.Financial.ValidateReceipts_Info; this.LabelAttestCostsHeader.Text = Resources.Pages.Financial.ValidateReceipts_Header_ReceiptsAwaitingValidation; this.LabelGridHeaderAction.Text = Global.Global_Action; this.LabelGridHeaderBudget.Text = Resources.Pages.Financial.AttestCosts_GridHeader_Budget; // Reuse some strings from Approve Costs this.LabelGridHeaderDescription.Text = Resources.Pages.Financial.AttestCosts_GridHeader_Description; this.LabelGridHeaderDocs.Text = Resources.Pages.Financial.AttestCosts_GridHeader_Docs; this.LabelGridHeaderRequested.Text = Resources.Pages.Financial.AttestCosts_GridHeader_Requested; FinancialTransactionTagSets tagSets = FinancialTransactionTagSets.ForOrganization(CurrentOrganization); int descriptionWidth = 137 + 170; int tagWidth = 170; if (tagSets.Count > 0) { descriptionWidth = 137 - tagSets.Count; tagWidth = 360 / (tagSets.Count + 1); //this.LiteralBudgetNameWidth.Text = tagWidth.ToString(CultureInfo.InvariantCulture); StringBuilder tagSetHtml = new StringBuilder(); foreach (FinancialTransactionTagSet tagSet in tagSets) { tagSetHtml.AppendFormat( "<th data-options=\"field:'tagSet{0}',width:{1},sortable:true,order:'asc'\">{2}</th>\r\n", tagSet.Identity, tagWidth, FinancialTransactionTagSetType.GetLocalizedName(tagSet.FinancialTransactionTagSetTypeId)); } this.LiteralExtraTags.Text = tagSetHtml.ToString(); } this.LiteralDescriptionThStart.Text = String.Format("<th data-options=\"field:'description',width:{0}\">", descriptionWidth); this.LiteralBudgetThStart.Text = String.Format("<th data-options=\"field:'budgetName',width:{0},sortable:true\">", tagWidth); }
protected void Page_Init(object sender, EventArgs e) { string tagSetIdsString = Request["ctl00$PlaceHolderMain$HiddenTagSetIdentifiers"]; // Find our tag ids, either from previously hidden var or load from org if (String.IsNullOrEmpty(tagSetIdsString)) { this._tagSetIds = FinancialTransactionTagSets.ForOrganization(CurrentOrganization).Identities; } else { string[] tagSetIdStrings = tagSetIdsString.Split(','); this._tagSetIds = new int[tagSetIdStrings.Length]; for (int index = 0; index < tagSetIdStrings.Length; index++) { this._tagSetIds[index] = Int32.Parse(tagSetIdStrings[index]); } } // Construct data source List <TagSetDataSourceItem> dataSourceVisibleTags = new List <TagSetDataSourceItem>(); List <TagSetDataSourceItem> dataSourceForcedTags = new List <TagSetDataSourceItem>(); foreach (int tagSetId in this._tagSetIds) { TagSetDataSourceItem item = new TagSetDataSourceItem { TagSetId = tagSetId, TagSetLocalizedName = FinancialTransactionTagSetType.GetLocalizedName( FinancialTransactionTagSet.FromIdentity(tagSetId). FinancialTransactionTagSetTypeId) }; FinancialTransactionTagSet tagSet = FinancialTransactionTagSet.FromIdentity(tagSetId); if (tagSet.VisibilityLevel <= 1) { dataSourceVisibleTags.Add(item); if (!tagSet.AllowUntagged) { dataSourceForcedTags.Add(item); } } } // Bind data this.RepeaterTagLabels.DataSource = dataSourceVisibleTags; this.RepeaterTagDrop.DataSource = dataSourceVisibleTags; this.RepeaterTagDropScript.DataSource = dataSourceVisibleTags; this.RepeaterErrorCheckTags.DataSource = dataSourceForcedTags; this.RepeaterTagLabels.DataBind(); this.RepeaterTagDrop.DataBind(); this.RepeaterTagDropScript.DataBind(); this.RepeaterErrorCheckTags.DataBind(); // Write set list back to hidden variable List <string> tagSetIdStringList = new List <string>(); foreach (int tagSetId in this._tagSetIds) { tagSetIdStringList.Add(tagSetId.ToString(CultureInfo.InvariantCulture)); } this.HiddenTagSetIdentifiers.Value = String.Join(",", tagSetIdStringList.ToArray()); }