private void PersistSelectedFields(SPWeb web, string reportId, ReportFilterSelection fieldSelection, SPList list) { var userSettings = GetPersistedSettings(web, reportId); userSettings.FieldSelection = fieldSelection; userSettings.SiteId = web.Site.ID; userSettings.UserId = web.CurrentUser.ID.ToString(); userSettings.WebId = web.ID; userSettings.ListId = list.ID; userSettings.WebPartId = WebPartHelper.ConvertWebPartIdToGuid(reportId); PersistUserSettings(userSettings, web); }
private static string GetFilterForUser(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter) { var returnQuery = new StringBuilder(); returnQuery.AppendFormat("<Where><In><FieldRef Name='{0}' /><Values>", fieldSelection.InternalFieldName); foreach (var selectedField in fieldSelection.SelectedFields) { returnQuery.AppendFormat("<Value Type='UserMulti'>{0}</Value>", selectedField); } returnQuery.Append("</Values></In></Where>"); return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString()); }
private static string GetFilterForSingleSelect(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter) { if (string.IsNullOrEmpty(fieldSelection.CamlComparisonOperator.Operator)) { return(string.Empty); } var returnQuery = new StringBuilder(); HandlePercentageFieldIfApplicable(fieldSelection); returnQuery.AppendFormat("<Where><{0}><FieldRef Name='{1}' /><Value Type='{3}'>{2}</Value></{0}></Where>", fieldSelection.CamlComparisonOperator.Operator, fieldSelection.InternalFieldName, fieldSelection.SelectedFields[0], fieldSelection.FieldType); return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString()); }
private string GetJsonWithErrorMessage(ReportFilterSelection fieldSelection) { var jsonToReturn = new StringBuilder(); jsonToReturn.Append("["); foreach (var errorMessage in fieldSelection.Errors) { var formattedFilteredTitle = errorMessage.Replace("\"", "\\\""); jsonToReturn.AppendFormat("{{\"error\":\"{0}\"}},", formattedFilteredTitle); } jsonToReturn.Append("]"); return(jsonToReturn.ToString().Replace(",]", "]")); }
public static List <string> GetFilteredTitles(SPWeb web, ReportFilterSelection fieldSelection) { var list = web.Lists[fieldSelection.ListToFilterOn]; var applyNonArchivedFilter = list.Fields.ContainsField(ProjectArchiverService.ArchivedColumn); var query = new SPQuery { Query = ReportFilterQueryService.GetQueryForFiltering(fieldSelection, applyNonArchivedFilter) }; if (fieldSelection.HasErrors) { return(null); } return(IsRollup(list) ? GetFilteredTitlesForRollup(web, list, query.Query) : GetFilteredTitlesForSubWeb(list, query)); }
private ReportFilterSelection GetFieldSelection(SPField field, SPWeb web) { var selectedFields = new List <string>(); _selectedFields = CleanValueIfFromPeoplePicker(_selectedFields); selectedFields.PopulateFromCommaSeparatedString(_selectedFields); var returnValue = new ReportFilterSelection { InternalFieldName = field.InternalName, FieldNameForDisplay = field.Title, FieldType = field.Type, ListToFilterOn = web.Lists[_listName].ID, SelectedFields = selectedFields, CamlComparisonOperator = CamlComparisonOperator.GetCamlOperatorByValue(_filterOperator) }; return(returnValue); }
private static string GetFilterForDateTime(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter) { var returnQuery = new StringBuilder(); //2012-10-01T02:48:44Z var startDate = new DateTime(); var startDateWasSuccessful = DateTime.TryParse(fieldSelection.SelectedFields[0], out startDate); var endDate = new DateTime(); var endDateWasSuccessful = DateTime.TryParse(fieldSelection.SelectedFields[1], out endDate); if (startDateWasSuccessful && endDateWasSuccessful) { var startDateFormatted = string.Format("{0}-{1}-{2}T00:00:00Z", startDate.Year, startDate.Month, startDate.Day); var endDateFormatted = string.Format("{0}-{1}-{2}T00:00:00Z", endDate.Year, endDate.Month, endDate.Day); returnQuery.AppendFormat("<Where><And><Geq><FieldRef Name='{0}' /><Value Type='DateTime'>{1}</Value></Geq><Leq><FieldRef Name='{0}' /><Value Type='DateTime'>{2}</Value></Leq></And></Where>", fieldSelection.InternalFieldName, startDateFormatted, endDateFormatted); } return(applyNonArchivedFilter ? AppendNonArchivedFilter(returnQuery.ToString()) : returnQuery.ToString()); }
private static void HandlePercentageFieldIfApplicable(ReportFilterSelection fieldSelection) { if (!fieldSelection.IsPercentage) { return; } if (fieldSelection.SelectedFields.Count <= 0) { return; } decimal result; decimal.TryParse(fieldSelection.SelectedFields[0], out result); if (result != 0) { result = result / 100; } fieldSelection.SelectedFields[0] = result.ToString(); }
public static string GetQueryForFiltering(ReportFilterSelection fieldSelection, bool applyNonArchivedFilter) { switch (fieldSelection.FieldType) { case SPFieldType.Choice: case SPFieldType.Lookup: return(GetFilterForMultiSelect(fieldSelection, applyNonArchivedFilter)); case SPFieldType.Currency: case SPFieldType.Text: case SPFieldType.Number: case SPFieldType.Integer: return(GetFilterForSingleSelect(fieldSelection, applyNonArchivedFilter)); case SPFieldType.DateTime: return(GetFilterForDateTime(fieldSelection, applyNonArchivedFilter)); case SPFieldType.User: return(GetFilterForUser(fieldSelection, applyNonArchivedFilter)); } return(string.Empty); }
private void PopulateDefaultValueListBox() { DefaultValueAsListBox.Items.Clear(); var selectedSharepointListName = SharepointListDropDownList.SelectedValue; var selectedSharepointField = SharepointListFieldDropDownList.SelectedValue; if (selectedSharepointField == DefaultFieldValue) { return; } if (selectedSharepointListName == DefaultListValue) { return; } var sharepointList = SPContext.Current.Web.Lists[selectedSharepointListName]; var field = sharepointList.Fields[selectedSharepointField]; switch (field.Type) { case SPFieldType.Choice: DefaultValueAsListBox.Rows = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? 6 : 1; DefaultValueAsListBox.SelectionMode = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? ListSelectionMode.Multiple : ListSelectionMode.Single; foreach (var choice in ((SPFieldChoice)field).Choices) { DefaultValueAsListBox.Items.Add(choice); } break; case SPFieldType.Lookup: DefaultValueAsListBox.Rows = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? 6 : 1; DefaultValueAsListBox.SelectionMode = AllowMultipleFieldsSelectedDropDownCheckBox.Checked ? ListSelectionMode.Multiple : ListSelectionMode.Single; var lookupField = (SPFieldLookup)field; if (string.IsNullOrEmpty(lookupField.LookupList)) { return; } var web = SPContext.Current.Web; var lookUpWeb = web.Site.AllWebs[lookupField.LookupWebId]; var lookupList = lookUpWeb.Lists[new Guid(lookupField.LookupList)]; var reportFilterSelection = new ReportFilterSelection { IsLookUp = true, ListToFilterOn = lookupList.ID, InternalFieldName = lookupField.InternalName, FieldNameForDisplay = lookupField.Title, LookupFieldType = lookupList.Fields.GetFieldByInternalName(lookupField.LookupField).Type }; var filteredTitles = QueryHelper.GetFilteredTitles(web, reportFilterSelection); if (filteredTitles == null || filteredTitles.Count <= 0) { return; } filteredTitles.Sort(string.Compare); if (!reportFilterSelection.HasErrors) { foreach (var title in filteredTitles) { DefaultValueAsListBox.Items.Add(title); } } break; } }