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);
        }
Exemple #5
0
        public virtual IViewMetadataBuilder AddViewMetadata(ViewMetadata metadata)
        {
            if (metadata == null)
            {
                throw new ArgumentNullException(nameof(metadata));
            }

            AllMetadata.Add(metadata);

            return(this);
        }
Exemple #6
0
 /// <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);
        }
Exemple #9
0
        /// <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);
        }
Exemple #12
0
        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);
        }
Exemple #21
0
        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);
        }
Exemple #22
0
        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));
        }