public static void Initialize(TestContext context)
        {
            var rockContext = new RockContext();

            // Add Followings for Ted Decker.
            var followingService = new FollowingService(rockContext);

            var tedDeckerGuid  = TestGuids.TestPeople.TedDecker.AsGuid();
            var benJonesGuid   = TestGuids.TestPeople.BenJones.AsGuid();
            var billMarbleGuid = TestGuids.TestPeople.BillMarble.AsGuid();

            var personService = new PersonService(rockContext);

            var tedDeckerAliasId = personService.Get(tedDeckerGuid).PrimaryAliasId.GetValueOrDefault();

            var personEntityTypeId = EntityTypeCache.GetId(SystemGuid.EntityType.PERSON).GetValueOrDefault();

            followingService.GetOrAddFollowing(personEntityTypeId, personService.Get(benJonesGuid).Id, tedDeckerAliasId, null);
            followingService.GetOrAddFollowing(personEntityTypeId, personService.Get(billMarbleGuid).Id, tedDeckerAliasId, null);

            rockContext.SaveChanges();

            // Add a Persisted Dataset containing some test people.
            var datasetLava = @"
[
{%- person where:'Guid == `<benJonesGuid>` || Guid == `<billMarbleGuid>` || Guid == `<alishaMarbleGuid>`' iterator:'People' -%}
  {%- for item in People -%}
    {
        `Id`: {{ item.Id | ToJSON }},
        `FirstName`: {{ item.NickName | ToJSON }},
        `LastName`: {{ item.LastName | ToJSON }},
        `FullName`: {{ item.FullName | ToJSON }},
    }
    {%- unless forloop.last -%},{%- endunless -%}
  {%- endfor -%}
{%- endperson -%}
]
";

            datasetLava = datasetLava.Replace("<benJonesGuid>", TestGuids.TestPeople.BenJones)
                          .Replace("<billMarbleGuid>", TestGuids.TestPeople.BillMarble)
                          .Replace("<alishaMarbleGuid>", TestGuids.TestPeople.AlishaMarble);

            // Create a Persisted Dataset.
            const string PersistedDataSetPeopleGuid = "99FF9EFA-D9E3-48DE-AD08-C67389FF688F";

            datasetLava = datasetLava.Replace("`", @"""");

            var ps = new PersistedDatasetService(rockContext);

            var pds = ps.Get(PersistedDataSetPeopleGuid.AsGuid());

            if (pds == null)
            {
                pds = new PersistedDataset();

                pds.Guid = PersistedDataSetPeopleGuid.AsGuid();

                ps.Add(pds);
            }

            pds.Name                = "Persons";
            pds.AccessKey           = "persons";
            pds.Description         = "A persisted dataset created for testing purposes.";
            pds.BuildScriptType     = PersistedDatasetScriptType.Lava;
            pds.BuildScript         = datasetLava;
            pds.EnabledLavaCommands = "RockEntity";
            pds.EntityTypeId        = EntityTypeCache.Get(typeof(Person), createIfNotFound: false, rockContext).Id;

            pds.UpdateResultData();

            rockContext.SaveChanges();
        }
Пример #2
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }

            var rockContext = new RockContext();
            PersistedDatasetService persistedDatasetService = new PersistedDatasetService(rockContext);

            PersistedDataset persistedDataset;

            int persistedDatasetId = hfPersistedDatasetId.Value.AsInteger();

            if (persistedDatasetId == 0)
            {
                persistedDataset = new PersistedDataset();
                persistedDatasetService.Add(persistedDataset);
            }
            else
            {
                persistedDataset = persistedDatasetService.Get(persistedDatasetId);
            }

            var accessKey = tbAccessKey.Text;

            if (accessKey.IsNullOrWhiteSpace())
            {
                nbAccessKeyWarning.Visible = true;
                nbAccessKeyWarning.Text    = "Access Key cannot be blank";
                return;
            }

            var accessKeyAlreadyExistsForDataSet = persistedDatasetService.Queryable().Where(a => a.AccessKey == accessKey && a.Id != persistedDataset.Id).AsNoTracking().FirstOrDefault();

            if (accessKeyAlreadyExistsForDataSet != null)
            {
                nbAccessKeyWarning.Visible = true;
                nbAccessKeyWarning.Text    = string.Format("Access Key must be unique. {0} is using '{1}' as the access key", accessKeyAlreadyExistsForDataSet.Name, accessKey);
                return;
            }

            persistedDataset.Name                = tbName.Text;
            persistedDataset.IsActive            = cbIsActive.Checked;
            persistedDataset.AccessKey           = tbAccessKey.Text;
            persistedDataset.Description         = tbDescription.Text;
            persistedDataset.BuildScript         = ceBuildScript.Text;
            persistedDataset.EnabledLavaCommands = lcpEnabledLavacommands.SelectedLavaCommands.AsDelimited(",");
            var refreshIntervalHours = nbRefreshIntervalHours.Text.AsDoubleOrNull();

            if (refreshIntervalHours.HasValue)
            {
                persistedDataset.RefreshIntervalMinutes = ( int )TimeSpan.FromHours(refreshIntervalHours.Value).TotalMinutes;
            }
            else
            {
                persistedDataset.RefreshIntervalMinutes = null;
            }

            var memoryCacheDurationHours = nbMemoryCacheDurationHours.Text.AsDoubleOrNull();

            if (memoryCacheDurationHours.HasValue)
            {
                persistedDataset.MemoryCacheDurationMS = ( int )TimeSpan.FromHours(memoryCacheDurationHours.Value).TotalMilliseconds;
            }
            else
            {
                persistedDataset.MemoryCacheDurationMS = null;
            }

            persistedDataset.ExpireDateTime     = dtpExpireDateTime.SelectedDate;
            persistedDataset.EntityTypeId       = etpEntityType.SelectedEntityTypeId;
            persistedDataset.AllowManualRefresh = cbAllowManualRefresh.Checked;

            // just in case anything has changed, null out the LastRefreshDateTime and TimeToBuild to mark this as needing to be refreshed the next time the Persisted Dataset job runs
            persistedDataset.LastRefreshDateTime = null;
            persistedDataset.TimeToBuildMS       = null;

            rockContext.SaveChanges();

            NavigateToParentPage();
        }