public static DynamicColourSettings GetDerializedDynamicColourSettings(this ViewMetadata view) { JavaScriptSerializer jsSer = new JavaScriptSerializer(); DynamicColourSettings dynSettings = jsSer.Deserialize <DynamicColourSettings>(view.DynamicColourCodingSettings); return(dynSettings); }
public SPGridView2DataSource(ViewMetadata view, QueryParams filterExpression) { this.m_view = view; if (filterExpression != null) { this.m_GridFilterExpression = filterExpression; } }
public SPGridView2DataSource(ViewMetadata view, QueryParams filterExpression, Guid origRosterId, bool displayPrepopRosters) : this(view, filterExpression) { // !!! only for Calendar View !!! // ONLY for Dynamic colour-coding this.dynColoring_OriginalRosterId = origRosterId; this.displayPrepopulatedRosters = displayPrepopRosters; }
public static StaticColourSettings GetDerializedStaticColourSettings(this ViewMetadata view) { JavaScriptSerializer jsSer = new JavaScriptSerializer(); StaticColourSettings staticSettings = new StaticColourSettings(); staticSettings.Conditions = jsSer.Deserialize <List <StaticCondition> >(view.StaticColourCodingSettings); return(staticSettings); }
public virtual IViewMetadataBuilder AddViewMetadata(ViewMetadata metadata) { if (metadata == null) { throw new ArgumentNullException(nameof(metadata)); } AllMetadata.Add(metadata); return(this); }
/// <summary> /// /// </summary> /// <param name="tmd"></param> /// <param name="connStr"></param> public void SaveViewMetaData(ViewMetadata tmd, string connStr) { if (tmd != null) { SaveMetadata(tmd, connStr); ColumnMetadataAccess cma = new ColumnMetadataAccess(); foreach (ColumnMetaData item in tmd.Columns) { SaveMetadata(item, connStr); } } }
public static string GetEventTitleFieldName(this ViewMetadata view, string calendarScope) { if (string.IsNullOrEmpty(view.ViewData)) { throw new ArgumentException("Cannot get Calendar view Title field - ViewData is empty"); } string tKey = string.Empty; if (calendarScope.ToLower() == "week") { tKey = "CalendarWeekTitle"; } else if (calendarScope.ToLower() == "month") { tKey = "CalendarMonthTitle"; } else { tKey = "CalendarDayTitle"; } var xDoc = XDocument.Parse(view.ViewData); var fRefEl = xDoc.Root.Descendants("FieldRef").FirstOrDefault(el => el.Attribute("Type").Value == tKey); if (fRefEl == null) { throw new ArgumentException("Cannot get Calendar view Title field"); } string fldName = fRefEl.Attribute("Name").Value; var eventTitleField = view.ListMetadata.ListMetadataFields.FirstOrDefault(f => f.InternalName == fldName); if (eventTitleField == null) { throw new Exception("Field '" + fldName + "' is used in ViewData but no longer exists. Please update View!"); } if (eventTitleField.FieldType() == SPFieldType.Lookup) { var eventTitleDbFieldLookup = eventTitleField.GetDbField() as DbFieldLookup; return(string.Format("{0}_{1}", eventTitleDbFieldLookup.ListId, eventTitleDbFieldLookup.LookupField.Split('$')[0])); } else if (eventTitleField.FieldType() == SPFieldType.User) { var eventTitleDbFieldUser = eventTitleField.GetDbField() as DbFieldUser; return(string.Format("{0}_{1}", eventTitleDbFieldUser.ListId, eventTitleDbFieldUser.LookupField.Split('$')[0])); } else { return(fldName); } }
public static DataTable GetRostersAsDataTable(ViewMetadata view, IEnumerable <ExpandedRosterEvent> expandedRosters) { var viewFields = view.ViewMetadataFields.OrderBy(x => x.Position).Select(x => x.ListMetadataField.GetDbField()); DataTable tbl = GetDataTableStructure(view, viewFields); #region Init Rows foreach (var roster in expandedRosters) { DataRow row = tbl.NewRow(); row["ID"] = roster.InstanceID; row[FieldNames.START_DATE] = roster.StartDate; row[FieldNames.END_DATE] = roster.EndDate; var props = (IDictionary <string, object>)roster.RosterEventProperties; foreach (var fld in viewFields) { if (fld.InternalName == FieldNames.START_DATE || fld.InternalName == FieldNames.END_DATE) { continue; } row[fld.InternalName] = (fld.Type == SPFieldType.Boolean) ? ((bool)fld.GetFieldValue(props[fld.InternalName]) ? "Yes" : "No") : fld.GetFieldValue(props[fld.InternalName]); if (fld.Type == SPFieldType.Lookup) { // add lookup labels var fldLookup = (DbFieldLookup)fld; fldLookup.LookupField.Split('$').ToList().ForEach(itemField => { var lookupValFldName = string.Format("{0}_{1}", fldLookup.ListId, itemField); row[lookupValFldName] = fld.GetFieldValue(props[lookupValFldName]); }); } else if (fld.Type == SPFieldType.User) { // add user-lookup labels var fldUser = (DbFieldUser)fld; fldUser.LookupField.Split('$').ToList().ForEach(itemField => { var lookupValFldName = string.Format("{0}_{1}", fldUser.ListId, itemField); row[lookupValFldName] = fld.GetFieldValue(props[lookupValFldName]); }); } } tbl.Rows.Add(row); } #endregion return(tbl); }
/// <summary> /// /// </summary> /// <param name="md"></param> /// <param name="connStr"></param> /// <returns></returns> public ViewMetadata GetViewMetaDetails(ViewMetadata md, string connStr) { if (md != null) { ColumnMetadataAccess cma = new ColumnMetadataAccess(); md.Columns = cma.GetColumnMetadata(md.Level1Name, md.Schema, connStr, Level1Types.View); return(md); } return(null); }
/// <summary> /// Create View metadata for a service /// </summary> /// <param name="org">The Organization code for the service owner</param> /// <param name="service">The service code for the current service</param> /// <param name="edition">The edition code for the current service</param> /// <param name="view">The view metadata</param> /// <returns>A boolean indicating if saving was ok. False if duplicate view name</returns> public bool CreateView(string org, string service, string edition, ViewMetadata view) { var views = GetViews(org, service, edition); if (views.FilterByName(view.Name).Any()) { return(false); } views.Add(view); Save(org, service, edition, views); return(true); }
public static DataTable GetStatusesAsDataTable(ViewMetadata view, List <vwEventStatu> statusItems) { var viewFields = view.ViewMetadataFields.OrderBy(x => x.Position).Select(x => x.ListMetadataField.GetDbField()); DataTable tbl = GetDataTableStructure(view, viewFields); #region Init Rows foreach (var statusItm in statusItems) { DataRow row = tbl.NewRow(); row["ID"] = statusItm.Id; var props = statusItm.EventStatusDictionary; foreach (var fld in viewFields) { try { row[fld.InternalName] = (fld.Type == SPFieldType.Boolean) ? ((bool)fld.GetFieldValue(props[fld.InternalName]) ? "Yes" : "No") : fld.GetFieldValue(props[fld.InternalName]); if (fld.Type == SPFieldType.Lookup) { // add lookup label var fldLookup = (DbFieldLookup)fld; fldLookup.LookupField.Split('$').ToList().ForEach(itemField => { var internalName = string.Format("{0}_{1}", fldLookup.ListId, itemField); row[internalName] = fld.GetFieldValue(props[internalName]); }); } else if (fld.Type == SPFieldType.User) { // add user-lookup label var fldUser = (DbFieldUser)fld; fldUser.LookupField.Split('$').ToList().ForEach(itemField => { var internalName = string.Format("{0}_{1}", fldUser.ListId, itemField); row[internalName] = fld.GetFieldValue(props[internalName]); }); } } catch (Exception ex) { string aa = ex.Message; } } tbl.Rows.Add(row); } #endregion return(tbl); }
private static bool TryGetViewId(Entity entityList, out Guid viewId) { // First, try get the view from the newer view configuration JSON. viewId = Guid.Empty; var viewMetadataJson = entityList.GetAttributeValue <string>("adx_views"); if (!string.IsNullOrWhiteSpace(viewMetadataJson)) { try { var viewMetadata = ViewMetadata.Parse(viewMetadataJson); var view = viewMetadata.Views.FirstOrDefault(); if (view != null) { viewId = view.ViewId; return(true); } } catch (Exception e) { Tracing.FrameworkError(typeof(PackageRepositoryHelpers).FullName, "TryGetViewId", "Error parsing adx_views JSON: {0}", e); } } // Fall back to the legacy comma-delimited list of IDs. var viewIds = (entityList.GetAttributeValue <string>("adx_view") ?? string.Empty) .Split(',') .Select(s => { Guid id; return(Guid.TryParse(s, out id) ? new Guid?(id) : null); }) .Where(id => id != null); viewId = viewIds.FirstOrDefault() ?? Guid.Empty; return(viewId != Guid.Empty); }
private static bool TryGetViewId(Entity entityList, out Guid viewId) { // First, try get the view from the newer view configuration JSON. viewId = Guid.Empty; var viewMetadataJson = entityList.GetAttributeValue <string>("adx_views"); if (!string.IsNullOrWhiteSpace(viewMetadataJson)) { try { var viewMetadata = ViewMetadata.Parse(viewMetadataJson); var view = viewMetadata.Views.FirstOrDefault(); if (view != null) { viewId = view.ViewId; return(true); } } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format("Error parsing adx_views JSON: {0}", e.ToString())); } } // Fall back to the legacy comma-delimited list of IDs. var viewIds = (entityList.GetAttributeValue <string>("adx_view") ?? string.Empty) .Split(',') .Select(s => { Guid id; return(Guid.TryParse(s, out id) ? new Guid?(id) : null); }) .Where(id => id != null); viewId = viewIds.FirstOrDefault() ?? Guid.Empty; return(viewId != Guid.Empty); }
public ObjectDataSource SetObjectDataSource(string dataSourceId, string selectMethod, string selectCountMethod, SPGridView2DataSource dataSource, ViewMetadata view) { this.view = view; ObjectDataSource gridDS = new ObjectDataSource(); gridDS.ID = dataSourceId; gridDS.SelectMethod = selectMethod; gridDS.TypeName = dataSource.GetType().AssemblyQualifiedName; gridDS.EnableViewState = false; gridDS.SelectCountMethod = selectCountMethod; gridDS.MaximumRowsParameterName = "iMaximumRows"; gridDS.StartRowIndexParameterName = "iBeginRowIndex"; gridDS.SortParameterName = "SortExpression"; gridDS.EnablePaging = true; gridDS.ObjectCreating += gridDS_ObjectCreating; this.GridDataSource = gridDS; return(gridDS); }
public ActionResult Create(string org, string service, string edition, ViewMetadata view) { if (!ModelState.IsValid) { return(View(view)); } bool viewCreated = _viewRepository.CreateView(org, service, edition, view); if (viewCreated) { Save(org, service, edition, view.Name, string.Empty); IList <ViewMetadata> allViewsMetadata = _viewRepository.GetViews(org, service, edition); _repository.AddViewNameTextResource(org, service, edition, allViewsMetadata); return(RedirectToAction("Edit", new { org, service, edition, id = view.Name })); } ViewBag.viewNameAlreadyExists = true; return(View()); }
protected void btnSave_Click(object sender, EventArgs e) { try { ViewMetadata currentView = this.View; currentView.Name = txtViewName.Text; if (!currentView.IsDefault) { currentView.IsDefault = this.IsDefault; // user cannot remove 'IsDefault' flag from Default view } // Filters currentView.ViewMetadataWhereCriteries.Clear(); if (this.Filters.Any()) { foreach (var filterCrit in this.Filters) { filterCrit.ViewMetadataId = currentView.Id; currentView.ViewMetadataWhereCriteries.Add(filterCrit); } } if (currentView.IsCalendarView()) { currentView.ViewData = this.ViewData; currentView.CalendarScope = this.Scope; currentView.StaticColourCodingSettings = this.StaticColourCodingSettings; currentView.DynamicColourCodingSettings = this.DynamicColourCodingSettings; // collect info about ViewFields for CALENDAR view currentView.ViewMetadataFields.Clear(); List <ViewMetadataField> calendarViewFields = this.CalendarViewFields; if (calendarViewFields.Any()) { foreach (var vmf in calendarViewFields) { vmf.ViewMetadataId = currentView.Id; currentView.ViewMetadataFields.Add(vmf); } } // collect info about Tooltips columns currentView.ViewMetadataPopupSettings.Clear(); foreach (GridViewRow gvRow in TooltipColumnsGrid.Rows) { if (((System.Web.UI.WebControls.CheckBox)gvRow.FindControl("chIsSelected")).Checked) { Guid fldId = new Guid(TooltipColumnsGrid.DataKeys[gvRow.RowIndex].Value.ToString()); currentView.ViewMetadataPopupSettings.Add(new ViewMetadataPopupSetting() { Id = Guid.NewGuid(), ListMetadataFieldId = fldId, ViewMetadataId = currentView.Id, Position = Int32.Parse(((System.Web.UI.WebControls.DropDownList)gvRow.FindControl("ddlColumnPosition")).SelectedValue) }); } } } else { currentView.ItemLimit = this.ItemLimit; // get sort FieldId Guid orderFieldId = Guid.Empty; Guid.TryParse(ddlSortColumn.SelectedValue, out orderFieldId); // collect info about ViewFields currentView.ViewMetadataFields.Clear(); List <string> additionalFields = new List <string>(); foreach (GridViewRow gvRow in ViewColumnsGrid.Rows) { // Find checkbox if (((System.Web.UI.WebControls.CheckBox)gvRow.FindControl("chIsSelected")).Checked) { string key = ViewColumnsGrid.DataKeys[gvRow.RowIndex].Value.ToString(); Guid fldId = Guid.Empty; if (Guid.TryParse(key, out fldId)) { ViewMetadataField _viewField = new ViewMetadataField() { Id = Guid.NewGuid(), ViewMetadataId = currentView.Id, ListMetadataFieldId = fldId, DisplayName = this.ListFields.Where(x => x.Id == fldId).FirstOrDefault().FieldName, Position = Int32.Parse(((System.Web.UI.WebControls.DropDownList)gvRow.FindControl("ddlColumnPosition")).SelectedValue), OrderCriteria = (orderFieldId != fldId) ? 0 : (int)this.SortDir }; currentView.ViewMetadataFields.Add(_viewField); } else { additionalFields.Add(key); } } } currentView.ExcludeFields = String.Join(";#", additionalFields); } // UPDATE VIEW new RosterConfigService().SaveView(currentView); // REMOVE IsDefault flag from other views if (chIsDefault.Visible && this.IsDefault) { // chIsDefault.Visible == true means that on PageLoad view was NOT Default this.RemoveDefaultFlagsFromOtherViews(currentView.Id); } // close form Utils.GoBackOnSuccess(this, this.Context); } catch (Exception ex) { errorHolder.Controls.Add(new Label() { Text = ex.Message, ForeColor = System.Drawing.Color.Red }); } }
public static bool IsCalendarView(this ViewMetadata view) { return(view.DisplayType == Microsoft.SharePoint.SPViewCollection.SPViewType.Calendar.ToString()); }
protected override void CreateChildControls() { Controls.Clear(); var portalContext = PortalCrmConfigurationManager.CreatePortalContext(PortalName); var serviceContext = PortalCrmConfigurationManager.CreateServiceContext(PortalName); Entity entitylist; bool updateEntityListReference; if (!TryGetEntityList(portalContext, serviceContext, out entitylist, out updateEntityListReference)) { Visible = false; return; } if (updateEntityListReference) { EntityListReference = entitylist.ToEntityReference(); } if (LanguageCode <= 0) { LanguageCode = this.Context.GetPortalSolutionsDetails().OrganizationBaseLanguageCode; } RegisterClientSideDependencies(this); var registerStartupScript = entitylist.GetAttributeValue <string>("adx_registerstartupscript"); if (!string.IsNullOrWhiteSpace(registerStartupScript)) { var html = Mvc.Html.EntityExtensions.GetHtmlHelper(PortalName, Page.Request.RequestContext, Page.Response); var control = new HtmlGenericControl() { }; var script = html.ScriptAttribute(serviceContext, entitylist, "adx_registerstartupscript"); control.InnerHtml = script.ToString(); Controls.Add(control); } var entityName = entitylist.GetAttributeValue <string>("adx_entityname"); var primaryKeyName = entitylist.GetAttributeValue <string>("adx_primarykeyname"); var view = entitylist.GetAttributeValue <string>("adx_view"); // old comma delimited list of views var viewMetadataJson = entitylist.GetAttributeValue <string>("adx_views"); EnableEntityPermissions = entitylist.GetAttributeValue <bool?>("adx_entitypermissionsenabled").GetValueOrDefault(false); if (string.IsNullOrWhiteSpace(entityName)) { throw new ApplicationException("Entity Name (adx_entityname) attribute on Entity List (adx_entitylist) is null or empty. Please specify the logical name of the entity."); } if (!string.IsNullOrWhiteSpace(entityName) && string.IsNullOrWhiteSpace(primaryKeyName)) { primaryKeyName = MetadataHelper.GetEntityPrimaryKeyAttributeLogicalName(serviceContext, entityName); } if (string.IsNullOrWhiteSpace(primaryKeyName)) { throw new ApplicationException(string.Format("The entity primary key logical name couldn't be determined.", entityName)); } if (string.IsNullOrWhiteSpace(view) && string.IsNullOrWhiteSpace(viewMetadataJson)) { throw new ApplicationException("View selection on Entity List (adx_entitylist) is null or empty. Specify the savedquery views."); } var gridMetadataJson = entitylist.GetAttributeValue <string>("adx_settings"); GridMetadata gridMetadata = null; if (!string.IsNullOrWhiteSpace(gridMetadataJson)) { try { gridMetadata = JsonConvert.DeserializeObject <GridMetadata>(gridMetadataJson, new JsonSerializerSettings { ContractResolver = JsonConfigurationContractResolver.Instance, TypeNameHandling = TypeNameHandling.Objects, Converters = new List <JsonConverter> { new GuidConverter() }, Binder = new ActionSerializationBinder() }); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, e.ToString()); } } var viewConfigurations = new List <ViewConfiguration>(); if (string.IsNullOrWhiteSpace(viewMetadataJson)) { if (string.IsNullOrWhiteSpace(view)) { return; } var viewids = view.Split(','); var viewGuids = viewids.Length < 1 ? null : Array.ConvertAll(viewids, Guid.Parse); if (viewGuids == null || !viewGuids.Any()) { throw new ApplicationException( ResourceManager.GetString("ADX_View_Attribute_On_Entity_List_Contains_Invalid_Data_Exception")); } viewConfigurations = viewGuids.Select( viewGuid => new ViewConfiguration(portalContext, serviceContext, entitylist, entityName, primaryKeyName, viewGuid, gridMetadata, PortalName, LanguageCode, EnableEntityPermissions, PageQueryStringField, FilterQueryStringField, SearchQueryStringField, SortQueryStringField, FilterByUserOptionLabel, ActionLinksColumnWidth, MetadataFilterQueryStringField, DefaultDetailsButtonLabel, ActionLinkDetailsViewTooltipLabel, DefaultCreateButtonLabel, ActionLinkInsertTooltipLabel, DefaultEmptyListText)).ToList(); } else { ViewMetadata viewMetadata = null; try { viewMetadata = JsonConvert.DeserializeObject <ViewMetadata>(viewMetadataJson, new JsonSerializerSettings { ContractResolver = JsonConfigurationContractResolver.Instance, TypeNameHandling = TypeNameHandling.Objects, Binder = new ActionSerializationBinder(), Converters = new List <JsonConverter> { new GuidConverter() } }); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, e.ToString()); } if (viewMetadata != null && viewMetadata.Views != null && viewMetadata.Views.Any()) { foreach (var viewMeta in viewMetadata.Views) { var viewConfiguration = new ViewConfiguration(portalContext, serviceContext, entitylist, entityName, primaryKeyName, viewMeta.ViewId, gridMetadata, PortalName, LanguageCode, EnableEntityPermissions, PageQueryStringField, FilterQueryStringField, SearchQueryStringField, SortQueryStringField, FilterByUserOptionLabel, ActionLinksColumnWidth, MetadataFilterQueryStringField, DefaultDetailsButtonLabel, ActionLinkDetailsViewTooltipLabel, DefaultCreateButtonLabel, ActionLinkInsertTooltipLabel, DefaultEmptyListText); if (viewMeta.DisplayName != null) { var displayName = Localization.GetLocalizedString(viewMeta.DisplayName, LanguageCode); if (!string.IsNullOrWhiteSpace(displayName)) { viewConfiguration.ViewDisplayName = displayName; } } viewConfigurations.Add(viewConfiguration); } } } var crmEntityListView = new CrmEntityListView { EnableEntityPermissions = EnableEntityPermissions, EntityListReference = EntityListReference, ViewConfigurations = viewConfigurations, ListCssClass = ListCssClass, PortalName = PortalName, LanguageCode = LanguageCode, ViewQueryStringParameterName = ViewQueryStringField, IsGallery = IsGallery }; if (gridMetadata != null) { if (gridMetadata.ErrorDialog != null) { crmEntityListView.ErrorModal = new ViewErrorModal { CloseButtonCssClass = gridMetadata.ErrorDialog.CloseButtonCssClass, CloseButtonText = gridMetadata.ErrorDialog.CloseButtonText.GetLocalizedString(LanguageCode), CssClass = gridMetadata.ErrorDialog.CssClass, DismissButtonSrText = gridMetadata.ErrorDialog.DismissButtonSrText.GetLocalizedString(LanguageCode), Body = gridMetadata.ErrorDialog.Body.GetLocalizedString(LanguageCode), Size = gridMetadata.ErrorDialog.Size, Title = gridMetadata.ErrorDialog.Title.GetLocalizedString(LanguageCode), TitleCssClass = gridMetadata.ErrorDialog.TitleCssClass }; } } Controls.Add(crmEntityListView); }
protected void btnSave_Click(object sender, EventArgs e) { try { ViewMetadata newView = new ViewMetadata(); newView.Id = Guid.NewGuid(); newView.ListMetadataId = this.List.Id; newView.Name = txtViewName.Text; newView.IsDefault = this.IsDefault; // Filters if (this.Filters.Any()) { foreach (var filterCrit in this.Filters) { filterCrit.ViewMetadataId = newView.Id; newView.ViewMetadataWhereCriteries.Add(filterCrit); } } if (this.IsCalendarView) { newView.DisplayType = SPViewCollection.SPViewType.Calendar.ToString(); newView.ViewData = this.ViewData; newView.CalendarScope = this.Scope; newView.StaticColourCodingSettings = this.StaticColourCodingSettings; newView.DynamicColourCodingSettings = this.DynamicColourCodingSettings; // collect info about ViewFields for CALENDAR view List <ViewMetadataField> calendarViewFields = this.CalendarViewFields; if (calendarViewFields.Any()) { foreach (var vmf in calendarViewFields) { vmf.ViewMetadataId = newView.Id; newView.ViewMetadataFields.Add(vmf); } } // collect info about Tooltips columns foreach (GridViewRow gvRow in TooltipColumnsGrid.Rows) { if (((System.Web.UI.WebControls.CheckBox)gvRow.FindControl("chIsSelected")).Checked) { Guid fldId = new Guid(TooltipColumnsGrid.DataKeys[gvRow.RowIndex].Value.ToString()); newView.ViewMetadataPopupSettings.Add(new ViewMetadataPopupSetting() { Id = Guid.NewGuid(), ListMetadataFieldId = fldId, ViewMetadataId = newView.Id, Position = Int32.Parse(((System.Web.UI.WebControls.DropDownList)gvRow.FindControl("ddlColumnPosition")).SelectedValue) }); } } } else { newView.DisplayType = SPViewCollection.SPViewType.Grid.ToString(); newView.ItemLimit = this.ItemLimit; // get sort FieldId Guid orderFieldId = Guid.Empty; Guid.TryParse(ddlSortColumn.SelectedValue, out orderFieldId); // collect info about ViewFields List <ViewMetadataField> allViewFields = new List <ViewMetadataField>(); List <string> additionalFields = new List <string>(); foreach (GridViewRow gvRow in ViewColumnsGrid.Rows) { // Find checkbox if (((System.Web.UI.WebControls.CheckBox)gvRow.FindControl("chIsSelected")).Checked) { string key = ViewColumnsGrid.DataKeys[gvRow.RowIndex].Value.ToString(); Guid fldId = Guid.Empty; if (Guid.TryParse(key, out fldId)) { allViewFields.Add(new ViewMetadataField() { Id = Guid.NewGuid(), ListMetadataFieldId = fldId, ViewMetadataId = newView.Id, DisplayName = this.ListFields.Where(x => x.Id == fldId).FirstOrDefault().FieldName, Position = Int32.Parse(((System.Web.UI.WebControls.DropDownList)gvRow.FindControl("ddlColumnPosition")).SelectedValue), OrderCriteria = (orderFieldId != fldId) ? 0 : (int)this.SortDir }); } else { additionalFields.Add(key); } } } newView.ExcludeFields = String.Join(";#", additionalFields); // update positions starting from ONE int pos = 1; foreach (ViewMetadataField wmf in allViewFields.OrderBy(f => f.Position)) { wmf.Position = pos++; newView.ViewMetadataFields.Add(wmf); } } // ADD VIEW new RosterConfigService().SaveView(newView); if (newView.IsDefault) { // REMOVE IsDefault flag from other views this.RemoveDefaultFlagsFromOtherViews(newView.Id); } // close form Utils.GoBackOnSuccess(this, this.Context); } catch (Exception ex) { errorHolder.Controls.Add(new Label() { Text = ex.Message, ForeColor = System.Drawing.Color.Red }); } }
private static DataTable GetDataTableStructure(ViewMetadata view, IEnumerable <DbField> viewFields) { DataTable tbl = new DataTable(); #region Init Columns // ID column DataColumn column_ID = new DataColumn("ID"); column_ID.Caption = "ID"; column_ID.AllowDBNull = false; column_ID.DataType = typeof(String); tbl.Columns.Add(column_ID); foreach (var fld in viewFields) { DataColumn column = new DataColumn(fld.InternalName); column.Caption = fld.DisplayName; column.AllowDBNull = true; switch (fld.Type) { case SPFieldType.DateTime: column.DataType = typeof(DateTime); break; //case SPFieldType.Boolean: // column.DataType = typeof(Boolean); // break; case SPFieldType.Number: column.DataType = typeof(Double); break; case SPFieldType.Lookup: column.DataType = typeof(String); // add extra column with label var fldLookup = (DbFieldLookup)fld; fldLookup.LookupField.Split('$').ToList().ForEach(itemField => { var internalName = string.Format("{0}_{1}", fldLookup.ListId, itemField); var column_LookupLabel = new DataColumn(internalName); column_LookupLabel.Caption = fld.DisplayName + itemField + "_Label"; column_LookupLabel.AllowDBNull = true; column_LookupLabel.DataType = typeof(String); tbl.Columns.Add(column_LookupLabel); }); break; case SPFieldType.User: column.DataType = typeof(String); // add extra column with label var fldUser = (DbFieldUser)fld; fldUser.LookupField.Split('$').ToList().ForEach(itemField => { var internalName = string.Format("{0}_{1}", fldUser.ListId, itemField); var column_UserLabel = new DataColumn(internalName); column_UserLabel.Caption = fld.DisplayName + itemField + "_Label"; column_UserLabel.AllowDBNull = true; column_UserLabel.DataType = typeof(String); tbl.Columns.Add(column_UserLabel); }); break; default: column.DataType = typeof(String); // default column type break; } tbl.Columns.Add(column); } #endregion return(tbl); }
public static List <Tuple <ListMetadataField, CompareType, ConcateOperator, object, string> > GetWhereCriteriaFromFilterExpression(ViewMetadata view, string filterExpression) { var whereCriterias = new List <Tuple <ListMetadataField, CompareType, ConcateOperator, object, string> >(); if (!string.IsNullOrEmpty(filterExpression)) { string[] _conditions = filterExpression.Split(new string[] { " AND " }, StringSplitOptions.None); foreach (string cond in _conditions) { string[] fValues = cond.Split(new string[] { " = " }, StringSplitOptions.None); if (fValues.Length > 1) { var filterField = view.ListMetadata.ListMetadataFields.FirstOrDefault(item => item.InternalName == fValues[0]); object fieldValue = fValues[1].Trim(new char[] { '\'' }); var _dbFieldType = filterField.GetDbField().Type; if (_dbFieldType == SPFieldType.DateTime) { fieldValue = DateTime.Parse(fieldValue.ToString()); } if (_dbFieldType == SPFieldType.Boolean) { fieldValue = (fieldValue.ToString() == "Yes"); } whereCriterias.Add(new Tuple <ListMetadataField, CompareType, ConcateOperator, object, string>(filterField, CompareType.Equal, ConcateOperator.And, fieldValue, null)); } } } return(whereCriterias); }
public AppMetadata Build(Type[] types, IServiceProvider services) { var commands = types .Select(type => new { Type = type, CommandAttribute = type.GetCustomAttribute <CommandAttribute>(), ViewAttribute = type.GetCustomAttribute <ViewAttribute>(), Run = type.GetMethod("Run") }) .Where(aggregate => aggregate.CommandAttribute != null) .Where(aggregate => aggregate.Run != null) .Select(aggregate => new { Type = aggregate.Type, CommandAttribute = aggregate.CommandAttribute, View = new { Type = aggregate.ViewAttribute?.Type, Render = aggregate.ViewAttribute?.Type.GetMethod("Render") }, Run = new { Method = aggregate.Run, ParameterTypes = GetRunMethodParameterTypes(aggregate.Run) } }) .Select(aggregate => { var argumentsMetadata = _argumentMetadataBuilder.Build(aggregate.Run.ParameterTypes.arguments); var optionsMetadata = _optionMetadataBuilder.Build(aggregate.Run.ParameterTypes.options); Func <object> viewFactory = () => { if (aggregate.View.Type == null) { return(null); } return(Activator.CreateInstance(aggregate.View.Type)); }; var viewMetadata = new ViewMetadata(viewFactory); var constructor = aggregate.Type.GetConstructors().Single(); Func <object> commandFactory = () => { var parameters = constructor .GetParameters() .Select(parameter => services.GetService(parameter.ParameterType)) .ToArray(); return(_invoker.Invoke(() => constructor.Invoke(parameters))); }; Func <Token[], object> argumentsFactory = tokens => _argumentParser.Parse(aggregate.Run.ParameterTypes.arguments, tokens); Func <Token[], object> optionsFactory = tokens => _optionParser.Parse(aggregate.Run.ParameterTypes.options, tokens); Func <Token[], object[]> runMethodParametersFactory = tokens => { var parameterTypes = aggregate.Run.ParameterTypes; var parameters = new List <object>(); if (parameterTypes.arguments != null) { var arguments = _argumentParser.Parse(parameterTypes.arguments, tokens); parameters.Add(arguments); } if (parameterTypes.options != null) { var options = _optionParser.Parse(parameterTypes.options, tokens); parameters.Add(options); } return(parameters.ToArray()); }; Func <Token[], Task> run = async tokens => { var runMethod = aggregate.Run.Method; var command = commandFactory(); var runMethodParameters = runMethodParametersFactory(tokens); var runResult = _invoker.Invoke(() => runMethod.Invoke(command, runMethodParameters)); var viewModel = await ExtractResult(runResult); if (!viewMetadata.Exists || aggregate.View.Render == null) { return; } var renderMethodParameters = aggregate.View.Render.GetParameters().Length == 0 ? Array.Empty <object>() : new[] { viewModel }; _invoker.Invoke(() => { aggregate.View.Render.Invoke(viewMetadata.Instance, renderMethodParameters); }); }; return(new CommandMetadata( aggregate.CommandAttribute.Name, aggregate.CommandAttribute.Description, argumentsMetadata, optionsMetadata, viewMetadata, commandFactory, argumentsFactory, optionsFactory, run)); }) .ToArray(); return(new AppMetadata(commands)); }