/// <summary>
        /// Creates the test step program.
        /// There are 2 step statuses: 1 complete and 1 in-progress
        /// There are 4 step types:
        ///     1) Allow multiple with an auto-complete dataview
        ///     2) Allow multiple without an autocomplete dataview
        ///     3) No multiple with an auto-complete dataview
        ///     4) No multiple with no auto-complete dataview
        /// </summary>
        private static void CreateTestStepProgram()
        {
            var rockContext        = new RockContext();
            var stepProgramService = new StepProgramService(rockContext);

            var dataViewService = new DataViewService(rockContext);
            var dataView        = dataViewService.Queryable().FirstOrDefault(dv => dv.ForeignKey == ForeignKey);

            var stepProgram = new StepProgram
            {
                Name         = "Test",
                ForeignKey   = ForeignKey,
                StepStatuses = new List <StepStatus> {
                    new StepStatus
                    {
                        ForeignKey       = ForeignKey,
                        Name             = "Complete",
                        IsCompleteStatus = true
                    },
                    new StepStatus
                    {
                        ForeignKey       = ForeignKey,
                        Name             = "In-progress",
                        IsCompleteStatus = false
                    }
                },
                StepTypes = new List <StepType>
                {
                    new StepType
                    {
                        Name                 = "Test: AllowMultiple with DataView",
                        ForeignKey           = ForeignKey,
                        AllowMultiple        = true,
                        AutoCompleteDataView = dataView
                    },
                    new StepType
                    {
                        Name          = "Test: AllowMultiple without DataView",
                        ForeignKey    = ForeignKey,
                        AllowMultiple = true
                    },
                    new StepType
                    {
                        Name                 = "Test: No multiple with DataView",
                        ForeignKey           = ForeignKey,
                        AllowMultiple        = false,
                        AutoCompleteDataView = dataView
                    },
                    new StepType
                    {
                        Name          = "Test: No multiple and no dataview",
                        ForeignKey    = ForeignKey,
                        AllowMultiple = false
                    }
                }
            };

            stepProgramService.Add(stepProgram);
            rockContext.SaveChanges();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Add or update a DataView.
        /// </summary>
        /// <param name="dataContext"></param>
        /// <param name="dataView"></param>
        public void AddOrUpdateDataView(RockContext dataContext, DataView dataView)
        {
            var dataViewService = new DataViewService(dataContext);

            var existingDataView = dataViewService.Queryable().FirstOrDefault(x => x.Guid == dataView.Guid);

            if (existingDataView == null)
            {
                dataViewService.Add(dataView);

                existingDataView = dataView;
            }
            else
            {
                existingDataView.CopyPropertiesFrom(dataView);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        protected void LoadDropDowns()
        {
            var rockContext        = new RockContext();
            var dataViewService    = new DataViewService(rockContext);
            var entityTypeIdPerson = EntityTypeCache.GetId <Rock.Model.Person>() ?? 0;
            var dataViewQry        = dataViewService.Queryable().Where(a => a.EntityTypeId == entityTypeIdPerson).OrderBy(a => a.Name).Select(a => new { a.Name, a.Guid });

            ddlBlockConfigDataView.Items.Clear();
            ddlBlockConfigDataView.Items.Add(new ListItem());

            ddlUserDataView.Items.Clear();
            ddlUserDataView.Items.Add(new ListItem());

            foreach (var dataView in dataViewQry.ToList())
            {
                ddlBlockConfigDataView.Items.Add(new ListItem(dataView.Name, dataView.Guid.ToString()));
                ddlUserDataView.Items.Add(new ListItem(dataView.Name, dataView.Guid.ToString()));
            }
        }
        /// <summary>
        /// Delete the test data
        /// </summary>
        private static void DeleteTestData()
        {
            var rockContext = new RockContext();

            var stepProgramService = new StepProgramService(rockContext);
            var stepProgramQuery   = stepProgramService.Queryable().Where(sp => sp.ForeignKey == ForeignKey);

            stepProgramService.DeleteRange(stepProgramQuery);
            rockContext.SaveChanges();

            var dataViewFilterService = new DataViewFilterService(rockContext);
            var dvfQuery = dataViewFilterService.Queryable().Where(dvf => dvf.DataView.ForeignKey == ForeignKey || dvf.ForeignKey == ForeignKey);

            dataViewFilterService.DeleteRange(dvfQuery);
            rockContext.SaveChanges();

            var dataViewService = new DataViewService(rockContext);
            var dvQuery         = dataViewService.Queryable().Where(dv => dv.ForeignKey == ForeignKey);

            dataViewService.DeleteRange(dvQuery);
            rockContext.SaveChanges();

            var personSearchKeyService = new PersonSearchKeyService(rockContext);
            var personSearchKeyQuery   = personSearchKeyService.Queryable().Where(psk => psk.PersonAlias.Person.ForeignKey == ForeignKey);

            personSearchKeyService.DeleteRange(personSearchKeyQuery);

            var personAliasService = new PersonAliasService(rockContext);
            var personAliasQuery   = personAliasService.Queryable().Where(pa => pa.Person.ForeignKey == ForeignKey || pa.ForeignKey == ForeignKey);

            personAliasService.DeleteRange(personAliasQuery);
            rockContext.SaveChanges();

            var personService = new PersonService(rockContext);
            var personQuery   = personService.Queryable().Where(p => p.ForeignKey == ForeignKey);

            personService.DeleteRange(personQuery);
            rockContext.SaveChanges();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="dataView">The data view.</param>
        private void ShowReadonlyDetails(DataView dataView)
        {
            SetEditMode(false);
            hfDataViewId.SetValue(dataView.Id);
            lReadOnlyTitle.Text = dataView.Name.FormatAsHtmlTitle();
            hlblDataViewId.Text = "Id: " + dataView.Id.ToString();
            if (dataView.Id == default(int) || string.IsNullOrWhiteSpace(GetAttributeValue("ReportDetailPage")))
            {
                lbViewCreateReport.Visible = false;
            }

            lDescription.Text = dataView.Description.ConvertMarkdownToHtml();

            DescriptionList descriptionListMain = new DescriptionList();

            if (dataView.EntityType != null)
            {
                descriptionListMain.Add("Applies To", dataView.EntityType.FriendlyName);
            }

            if (dataView.Category != null)
            {
                descriptionListMain.Add("Category", dataView.Category.Name);
            }

            if (dataView.TransformEntityType != null)
            {
                descriptionListMain.Add("Post-filter Transformation", dataView.TransformEntityType.FriendlyName);
            }

            lblMainDetails.Text = descriptionListMain.Html;

            DescriptionList descriptionListFilters = new DescriptionList();

            if (dataView.DataViewFilter != null && dataView.EntityTypeId.HasValue)
            {
                var entityTypeCache = EntityTypeCache.Get(dataView.EntityTypeId.Value);
                if (entityTypeCache != null)
                {
                    var entityTypeType = entityTypeCache.GetEntityType();
                    if (entityTypeType != null)
                    {
                        descriptionListFilters.Add("Filter", dataView.DataViewFilter.ToString(entityTypeType));
                    }
                }
            }

            lFilters.Text = descriptionListFilters.Html;

            DescriptionList descriptionListPersisted = new DescriptionList();

            hlblPersisted.Visible = dataView.PersistedScheduleIntervalMinutes.HasValue && dataView.PersistedLastRefreshDateTime.HasValue;
            if (hlblPersisted.Visible)
            {
                hlblPersisted.Text = string.Format("Persisted {0}", dataView.PersistedLastRefreshDateTime.ToElapsedString());
            }

            lPersisted.Text = descriptionListPersisted.Html;

            DescriptionList descriptionListDataviews = new DescriptionList();
            var             dataViewFilterEntityId   = EntityTypeCache.Get(typeof(Rock.Reporting.DataFilter.OtherDataViewFilter)).Id;

            var             rockContext     = new RockContext();
            DataViewService dataViewService = new DataViewService(rockContext);

            var dataViews = dataViewService.Queryable().AsNoTracking()
                            .Where(d => d.DataViewFilter.ChildFilters
                                   .Any(f => f.Selection == dataView.Id.ToString() &&
                                        f.EntityTypeId == dataViewFilterEntityId))
                            .OrderBy(d => d.Name);

            StringBuilder sbDataViews        = new StringBuilder();
            var           dataViewDetailPage = GetAttributeValue("DataViewDetailPage");

            foreach (var dataview in dataViews)
            {
                if (!string.IsNullOrWhiteSpace(dataViewDetailPage))
                {
                    sbDataViews.Append("<a href=\"" + LinkedPageUrl("DataViewDetailPage", new Dictionary <string, string>()
                    {
                        { "DataViewId", dataview.Id.ToString() }
                    }) + "\">" + dataview.Name + "</a><br/>");
                }
                else
                {
                    sbDataViews.Append(dataview.Name + "<br/>");
                }
            }

            descriptionListDataviews.Add("Data Views", sbDataViews);
            lDataViews.Text = descriptionListDataviews.Html;

            DescriptionList descriptionListReports = new DescriptionList();
            StringBuilder   sbReports = new StringBuilder();

            ReportService reportService    = new ReportService(rockContext);
            var           reports          = reportService.Queryable().AsNoTracking().Where(r => r.DataViewId == dataView.Id).OrderBy(r => r.Name);
            var           reportDetailPage = GetAttributeValue("ReportDetailPage");

            foreach (var report in reports)
            {
                if (!string.IsNullOrWhiteSpace(reportDetailPage))
                {
                    sbReports.Append("<a href=\"" + LinkedPageUrl("ReportDetailPage", new Dictionary <string, string>()
                    {
                        { "ReportId", report.Id.ToString() }
                    }) + "\">" + report.Name + "</a><br/>");
                }
                else
                {
                    sbReports.Append(report.Name + "<br/>");
                }
            }

            descriptionListReports.Add("Reports", sbReports);
            lReports.Text = descriptionListReports.Html;

            // Group-Roles using DataView in Group Sync
            DescriptionList descriptionListGroupSync = new DescriptionList();
            StringBuilder   sbGroups = new StringBuilder();

            GroupSyncService groupSyncService = new GroupSyncService(rockContext);
            var groupSyncs = groupSyncService
                             .Queryable()
                             .Where(a => a.SyncDataViewId == dataView.Id)
                             .ToList();

            var groupDetailPage = GetAttributeValue("GroupDetailPage");

            if (groupSyncs.Count() > 0)
            {
                foreach (var groupSync in groupSyncs)
                {
                    string groupAndRole = string.Format("{0} - {1}", groupSync.Group.Name, groupSync.GroupTypeRole.Name);

                    if (!string.IsNullOrWhiteSpace(groupDetailPage))
                    {
                        sbGroups.Append("<a href=\"" + LinkedPageUrl("GroupDetailPage", new Dictionary <string, string>()
                        {
                            { "GroupId", groupSync.Group.Id.ToString() }
                        }) + "\">" + groupAndRole + "</a><br/>");
                    }
                    else
                    {
                        sbGroups.Append(string.Format("{0}<br/>", groupAndRole));
                    }
                }

                descriptionListGroupSync.Add("Groups", sbGroups);
                lGroups.Text = descriptionListGroupSync.Html;
            }

            ShowReport(dataView);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="dataView">The data view.</param>
        private void ShowReadonlyDetails(DataView dataView)
        {
            SetEditMode(false);
            hfDataViewId.SetValue(dataView.Id);
            lReadOnlyTitle.Text = dataView.Name.FormatAsHtmlTitle();

            lDescription.Text = dataView.Description;

            DescriptionList descriptionListMain = new DescriptionList();

            if (dataView.EntityType != null)
            {
                descriptionListMain.Add("Applies To", dataView.EntityType.FriendlyName);
            }

            if (dataView.Category != null)
            {
                descriptionListMain.Add("Category", dataView.Category.Name);
            }

            if (dataView.TransformEntityType != null)
            {
                descriptionListMain.Add("Post-filter Transformation", dataView.TransformEntityType.FriendlyName);
            }

            lblMainDetails.Text = descriptionListMain.Html;

            DescriptionList descriptionListFilters = new DescriptionList();

            if (dataView.DataViewFilter != null && dataView.EntityTypeId.HasValue)
            {
                var entityTypeCache = EntityTypeCache.Read(dataView.EntityTypeId.Value);
                if (entityTypeCache != null)
                {
                    var entityTypeType = entityTypeCache.GetEntityType();
                    if (entityTypeType != null)
                    {
                        descriptionListFilters.Add("Filter", dataView.DataViewFilter.ToString(entityTypeType));
                    }
                }
            }

            lFilters.Text = descriptionListFilters.Html;

            DescriptionList descriptionListDataviews = new DescriptionList();
            var             dataViewFilterEntityId   = EntityTypeCache.Read(typeof(Rock.Reporting.DataFilter.OtherDataViewFilter)).Id;

            var             rockContext     = new RockContext();
            DataViewService dataViewService = new DataViewService(rockContext);

            var dataViews = dataViewService.Queryable()
                            .Where(d => d.DataViewFilter.ChildFilters
                                   .Any(f => f.Selection == dataView.Id.ToString() &&
                                        f.EntityTypeId == dataViewFilterEntityId));

            StringBuilder sbDataViews        = new StringBuilder();
            var           dataViewDetailPage = GetAttributeValue("DataViewDetailPage");

            foreach (var dataview in dataViews)
            {
                if (!string.IsNullOrWhiteSpace(dataViewDetailPage))
                {
                    sbDataViews.Append("<a href=\"" + LinkedPageUrl("DataViewDetailPage", new Dictionary <string, string>()
                    {
                        { "DataViewId", dataview.Id.ToString() }
                    }) + "\">" + dataview.Name + "</a><br/>");
                }
                else
                {
                    sbDataViews.Append(dataview.Name + "<br/>");
                }
            }

            descriptionListDataviews.Add("Data Views", sbDataViews);
            lDataViews.Text = descriptionListDataviews.Html;

            DescriptionList descriptionListReports = new DescriptionList();
            StringBuilder   sbReports = new StringBuilder();

            ReportService reportService    = new ReportService(rockContext);
            var           reports          = reportService.Queryable().Where(r => r.DataViewId == dataView.Id);
            var           reportDetailPage = GetAttributeValue("ReportDetailPage");

            foreach (var report in reports)
            {
                if (!string.IsNullOrWhiteSpace(reportDetailPage))
                {
                    sbReports.Append("<a href=\"" + LinkedPageUrl("ReportDetailPage", new Dictionary <string, string>()
                    {
                        { "ReportId", report.Id.ToString() }
                    }) + "\">" + report.Name + "</a><br/>");
                }
                else
                {
                    sbReports.Append(report.Name + "<br/>");
                }
            }

            descriptionListReports.Add("Reports", sbReports);
            lReports.Text = descriptionListReports.Html;

            ShowReport(dataView);
        }