/// <summary>
        /// Gets the type of the attributes for ad.
        /// </summary>
        /// <param name="marketingAdTypeId">The marketing ad type id.</param>
        /// <returns></returns>
        private static List <Rock.Web.Cache.AttributeCache> GetAttributesForAdType(int marketingAdTypeId)
        {
            MarketingCampaignAd temp = new MarketingCampaignAd();

            temp.MarketingCampaignAdTypeId = marketingAdTypeId;
            temp.LoadAttributes();
            return(temp.Attributes.Values.ToList());
        }
示例#2
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaignAds control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaignAds_Delete(object sender, RowEventArgs e)
        {
            MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService();
            MarketingCampaignAd        marketingCampaignAd        = marketingCampaignAdService.Get((int)e.RowKeyValue);

            marketingCampaignAdService.Delete(marketingCampaignAd, CurrentPersonId);
            marketingCampaignAdService.Save(marketingCampaignAd, CurrentPersonId);
            BindMarketingCampaignAdsGrid();
        }
        /// <summary>
        /// Handles the SelectedIndexChanged event of the ddlMarketingCampaignAdType 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 ddlMarketingCampaignAdType_SelectedIndexChanged(object sender, EventArgs e)
        {
            MarketingCampaignAd marketingCampaignAd = new MarketingCampaignAd();

            LoadAdAttributes(marketingCampaignAd, false, false);
            Rock.Attribute.Helper.GetEditValues(phAttributes, marketingCampaignAd);

            SetApprovalValues(MarketingCampaignAdStatus.PendingApproval, null);

            LoadAdAttributes(marketingCampaignAd, true, true);
        }
示例#4
0
        /// <summary>
        /// Gs the marketing campaign ads_ show edit.
        /// </summary>
        /// <param name="marketingCampaignAdId">The marketing campaign ad id.</param>
        protected void gMarketingCampaignAds_ShowEdit(int marketingCampaignAdId)
        {
            hfMarketingCampaignAdId.Value = marketingCampaignAdId.ToString();

            btnApproveAd.Visible = IsUserAuthorized("Approve");
            btnDenyAd.Visible    = IsUserAuthorized("Approve");

            MarketingCampaignAd marketingCampaignAd = null;

            if (!marketingCampaignAdId.Equals(0))
            {
                marketingCampaignAd = MarketingCampaignAd.Read(marketingCampaignAdId);
            }
            else
            {
                marketingCampaignAd = new MarketingCampaignAd {
                    Id = 0, MarketingCampaignAdStatus = MarketingCampaignAdStatus.PendingApproval
                };
            }

            if (!marketingCampaignAd.Id.Equals(0))
            {
                lActionTitleAd.Text = ActionTitle.Add("Marketing Ad for " + tbTitle.Text);
            }
            else
            {
                lActionTitleAd.Text = ActionTitle.Edit("Marketing Ad for " + tbTitle.Text);
            }

            ddlMarketingCampaignAdType.SetValue(marketingCampaignAd.MarketingCampaignAdTypeId);
            tbPriority.Text = marketingCampaignAd.Priority.ToString();

            SetApprovalValues(marketingCampaignAd.MarketingCampaignAdStatus, Person.Read(marketingCampaignAd.MarketingCampaignStatusPersonId ?? 0));

            if (marketingCampaignAdId.Equals(0))
            {
                tbAdDateRangeStartDate.SelectedDate = null;
                tbAdDateRangeEndDate.SelectedDate   = null;
            }
            else
            {
                tbAdDateRangeStartDate.SelectedDate = marketingCampaignAd.StartDate;
                tbAdDateRangeEndDate.SelectedDate   = marketingCampaignAd.EndDate;
            }

            tbUrl.Text = marketingCampaignAd.Url;

            LoadAdAttributes(marketingCampaignAd, true, true);

            pnlMarketingCampaignAdEditor.Visible = true;
            pnlDetails.Visible = false;
            pnlList.Visible    = false;
        }
示例#5
0
        /// <summary>
        /// Gets the type of the attributes for ad.
        /// </summary>
        /// <param name="marketingAdTypeId">The marketing ad type id.</param>
        /// <returns></returns>
        private static List <Rock.Model.Attribute> GetAttributesForAdType(int marketingAdTypeId)
        {
            MarketingCampaignAd temp = new MarketingCampaignAd();

            temp.MarketingCampaignAdTypeId = marketingAdTypeId;

            Rock.Attribute.Helper.LoadAttributes(temp);
            List <Rock.Web.Cache.AttributeCache> attribs = temp.Attributes.Values.ToList();

            List <Rock.Model.Attribute> result = new List <Rock.Model.Attribute>();

            foreach (var item in attribs)
            {
                var attrib = item.ToModel();
                result.Add(attrib);
            }

            return(result);
        }
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaignAds control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaignAds_Delete( object sender, RowEventArgs e )
        {
            var rockContext = new RockContext();
            MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService( rockContext );

            MarketingCampaignAd marketingCampaignAd = marketingCampaignAdService.Get( e.RowKeyId );
            if ( marketingCampaignAd != null )
            {
                string errorMessage;
                if ( !marketingCampaignAdService.CanDelete( marketingCampaignAd, out errorMessage ) )
                {
                    mdGridWarning.Show( errorMessage, ModalAlertType.Information );
                    return;
                }

                marketingCampaignAdService.Delete( marketingCampaignAd );
                rockContext.SaveChanges();
            }

            BindGrid();
        }
示例#7
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaignAds control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaignAds_Delete(object sender, RowEventArgs e)
        {
            RockTransactionScope.WrapTransaction(() =>
            {
                MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService();
                MarketingCampaignAd marketingCampaignAd = marketingCampaignAdService.Get(e.RowKeyId);
                if (marketingCampaignAd != null)
                {
                    string errorMessage;
                    if (!marketingCampaignAdService.CanDelete(marketingCampaignAd, out errorMessage))
                    {
                        mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                        return;
                    }

                    marketingCampaignAdService.Delete(marketingCampaignAd, CurrentPersonId);
                    marketingCampaignAdService.Save(marketingCampaignAd, CurrentPersonId);
                }
            });

            BindGrid();
        }
        /// <summary>
        /// Handles the SelectedIndexChanged event of the ddlMarketingCampaignAdType 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 ddlMarketingCampaignAdType_SelectedIndexChanged( object sender, EventArgs e )
        {
            MarketingCampaignAd marketingCampaignAd = new MarketingCampaignAd();

            LoadAdAttributes( marketingCampaignAd, false, false );
            Rock.Attribute.Helper.GetEditValues( phAttributes, marketingCampaignAd );

            SetApprovalValues( MarketingCampaignAdStatus.PendingApproval, null );

            LoadAdAttributes( marketingCampaignAd, true, true );
        }
        /// <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 )
        {
            int marketingCampaignAdId = int.Parse( hfMarketingCampaignAdId.Value );

            var rockContext = new RockContext();
            MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService( rockContext );

            MarketingCampaignAd marketingCampaignAd;
            if ( marketingCampaignAdId.Equals( 0 ) )
            {
                marketingCampaignAd = new MarketingCampaignAd { Id = 0 };
                marketingCampaignAd.MarketingCampaignId = hfMarketingCampaignId.ValueAsInt();
            }
            else
            {
                marketingCampaignAd = marketingCampaignAdService.Get( marketingCampaignAdId );
            }

            if ( string.IsNullOrWhiteSpace( ddlMarketingCampaignAdType.SelectedValue ) )
            {
                ddlMarketingCampaignAdType.ShowErrorMessage( WarningMessage.CannotBeBlank( ddlMarketingCampaignAdType.Label ) );
                return;
            }

            marketingCampaignAd.MarketingCampaignId = int.Parse( hfMarketingCampaignId.Value );
            marketingCampaignAd.MarketingCampaignAdTypeId = int.Parse( ddlMarketingCampaignAdType.SelectedValue );
            marketingCampaignAd.Priority = tbPriority.Text.AsInteger() ?? 0;
            marketingCampaignAd.MarketingCampaignAdStatus = (MarketingCampaignAdStatus)int.Parse( hfApprovalStatus.Value );
            if ( !string.IsNullOrWhiteSpace( hfApprovalStatusPersonId.Value ) )
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = int.Parse( hfApprovalStatusPersonId.Value );
            }
            else
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = null;
            }

            if (drpAdDateRange.Visible)
            {
                marketingCampaignAd.StartDate = drpAdDateRange.LowerValue ?? DateTime.MinValue;
                marketingCampaignAd.EndDate = drpAdDateRange.UpperValue ?? DateTime.MaxValue;
            }

            if (dpAdSingleDate.Visible)
            {
                marketingCampaignAd.StartDate = dpAdSingleDate.SelectedDate ?? DateTime.MinValue;
                marketingCampaignAd.EndDate = marketingCampaignAd.StartDate;
            }

            marketingCampaignAd.Url = tbUrl.Text;

            LoadAdAttributes( marketingCampaignAd, false, false );
            Rock.Attribute.Helper.GetEditValues( phAttributes, marketingCampaignAd );

            if ( !Page.IsValid )
            {
                return;
            }

            if ( !marketingCampaignAd.IsValid )
            {
                return;
            }

            RockTransactionScope.WrapTransaction( () =>
            {
                if ( marketingCampaignAd.Id.Equals( 0 ) )
                {
                    marketingCampaignAdService.Add( marketingCampaignAd );
                }

                rockContext.SaveChanges();

                marketingCampaignAd.SaveAttributeValues( rockContext );
            } );

            Dictionary<string, string> qryString = new Dictionary<string, string>();
            qryString["marketingCampaignId"] = hfMarketingCampaignId.Value;
            NavigateToParentPage( qryString );
        }
        /// <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)
        {
            int marketingCampaignAdId = int.Parse(hfMarketingCampaignAdId.Value);
            MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService();

            MarketingCampaignAd marketingCampaignAd;

            if (marketingCampaignAdId.Equals(0))
            {
                marketingCampaignAd = new MarketingCampaignAd {
                    Id = 0
                };
                marketingCampaignAd.MarketingCampaignId = hfMarketingCampaignId.ValueAsInt();
            }
            else
            {
                marketingCampaignAd = marketingCampaignAdService.Get(marketingCampaignAdId);
            }

            if (string.IsNullOrWhiteSpace(ddlMarketingCampaignAdType.SelectedValue))
            {
                ddlMarketingCampaignAdType.ShowErrorMessage(WarningMessage.CannotBeBlank(ddlMarketingCampaignAdType.Label));
                return;
            }

            marketingCampaignAd.MarketingCampaignId       = int.Parse(hfMarketingCampaignId.Value);
            marketingCampaignAd.MarketingCampaignAdTypeId = int.Parse(ddlMarketingCampaignAdType.SelectedValue);
            marketingCampaignAd.Priority = tbPriority.Text.AsInteger() ?? 0;
            marketingCampaignAd.MarketingCampaignAdStatus = (MarketingCampaignAdStatus)int.Parse(hfMarketingCampaignAdStatus.Value);
            if (!string.IsNullOrWhiteSpace(hfMarketingCampaignAdStatusPersonId.Value))
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = int.Parse(hfMarketingCampaignAdStatusPersonId.Value);
            }
            else
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = null;
            }

            if (tbAdDateRangeStartDate.SelectedDate == null)
            {
                tbAdDateRangeStartDate.ShowErrorMessage(Rock.Constants.WarningMessage.CannotBeBlank("StartDate"));
                return;
            }

            marketingCampaignAd.StartDate = tbAdDateRangeStartDate.SelectedDate ?? DateTime.MinValue;

            if (tbAdDateRangeEndDate.Visible)
            {
                if (tbAdDateRangeEndDate.SelectedDate == null)
                {
                    tbAdDateRangeEndDate.ShowErrorMessage(Rock.Constants.WarningMessage.CannotBeBlank("EndDate"));
                    return;
                }

                marketingCampaignAd.EndDate = tbAdDateRangeEndDate.SelectedDate ?? DateTime.MaxValue;
            }
            else
            {
                marketingCampaignAd.EndDate = marketingCampaignAd.StartDate;
            }

            if (marketingCampaignAd.EndDate < marketingCampaignAd.StartDate)
            {
                tbAdDateRangeStartDate.ShowErrorMessage(WarningMessage.DateRangeEndDateBeforeStartDate());
            }

            marketingCampaignAd.Url = tbUrl.Text;

            LoadAdAttributes(marketingCampaignAd, false, false);
            Rock.Attribute.Helper.GetEditValues(phAttributes, marketingCampaignAd);

            if (!Page.IsValid)
            {
                return;
            }

            if (!marketingCampaignAd.IsValid)
            {
                return;
            }

            RockTransactionScope.WrapTransaction(() =>
            {
                if (marketingCampaignAd.Id.Equals(0))
                {
                    marketingCampaignAdService.Add(marketingCampaignAd, CurrentPersonId);
                }

                marketingCampaignAdService.Save(marketingCampaignAd, CurrentPersonId);
                Rock.Attribute.Helper.SaveAttributeValues(marketingCampaignAd, CurrentPersonId);
            });

            Dictionary <string, string> qryString = new Dictionary <string, string>();

            qryString["marketingCampaignId"] = hfMarketingCampaignId.Value;
            NavigateToParentPage(qryString);
        }
        /// <summary>
        /// Gets the type of the attributes for ad.
        /// </summary>
        /// <param name="marketingAdTypeId">The marketing ad type id.</param>
        /// <returns></returns>
        private static List<Rock.Model.Attribute> GetAttributesForAdType( int marketingAdTypeId )
        {
            MarketingCampaignAd temp = new MarketingCampaignAd();
            temp.MarketingCampaignAdTypeId = marketingAdTypeId;

            Rock.Attribute.Helper.LoadAttributes( temp );
            List<Rock.Web.Cache.AttributeCache> attribs = temp.Attributes.Values.ToList();

            List<Rock.Model.Attribute> result = new List<Rock.Model.Attribute>();
            foreach ( var item in attribs )
            {
                var attrib = item.ToModel();
                result.Add( attrib );
            }

            return result;
        }
        /// <summary>
        /// Gs the marketing campaign ads_ show edit.
        /// </summary>
        /// <param name="marketingCampaignAdId">The marketing campaign ad id.</param>
        protected void gMarketingCampaignAds_ShowEdit( int marketingCampaignAdId )
        {
            hfMarketingCampaignAdId.Value = marketingCampaignAdId.ToString();

            btnApproveAd.Visible = IsUserAuthorized( "Approve" );
            btnDenyAd.Visible = IsUserAuthorized( "Approve" );

            MarketingCampaignAd marketingCampaignAd = null;

            if ( !marketingCampaignAdId.Equals( 0 ) )
            {
                marketingCampaignAd = MarketingCampaignAd.Read( marketingCampaignAdId );
            }
            else
            {
                marketingCampaignAd = new MarketingCampaignAd { Id = 0, MarketingCampaignAdStatus = MarketingCampaignAdStatus.PendingApproval };
            }

            if ( !marketingCampaignAd.Id.Equals( 0 ) )
            {
                lActionTitleAd.Text = ActionTitle.Add( "Marketing Ad for " + tbTitle.Text );
            }
            else
            {
                lActionTitleAd.Text = ActionTitle.Edit( "Marketing Ad for " + tbTitle.Text );
            }

            ddlMarketingCampaignAdType.SetValue( marketingCampaignAd.MarketingCampaignAdTypeId );
            tbPriority.Text = marketingCampaignAd.Priority.ToString();

            SetApprovalValues( marketingCampaignAd.MarketingCampaignAdStatus, Person.Read( marketingCampaignAd.MarketingCampaignStatusPersonId ?? 0 ) );

            if ( marketingCampaignAdId.Equals( 0 ) )
            {
                tbAdDateRangeStartDate.SelectedDate = null;
                tbAdDateRangeEndDate.SelectedDate = null;
            }
            else
            {
                tbAdDateRangeStartDate.SelectedDate = marketingCampaignAd.StartDate;
                tbAdDateRangeEndDate.SelectedDate = marketingCampaignAd.EndDate;
            }

            tbUrl.Text = marketingCampaignAd.Url;

            LoadAdAttributes( marketingCampaignAd, true, true );

            pnlMarketingCampaignAdEditor.Visible = true;
            pnlDetails.Visible = false;
            pnlList.Visible = false;
        }
        /// <summary>
        /// Handles the Click event of the btnSaveAd 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 btnSaveAd_Click( object sender, EventArgs e )
        {
            int marketingCampaignAdId = int.Parse( hfMarketingCampaignAdId.Value );
            MarketingCampaignAdService marketingCampaignAdService = new MarketingCampaignAdService();

            MarketingCampaignAd marketingCampaignAd;
            if ( marketingCampaignAdId.Equals( 0 ) )
            {
                marketingCampaignAd = new MarketingCampaignAd { Id = 0 };
            }
            else
            {
                marketingCampaignAd = marketingCampaignAdService.Get( marketingCampaignAdId );
            }

            marketingCampaignAd.MarketingCampaignId = int.Parse( hfMarketingCampaignId.Value );
            marketingCampaignAd.MarketingCampaignAdTypeId = int.Parse( ddlMarketingCampaignAdType.SelectedValue );
            marketingCampaignAd.Priority = tbPriority.TextAsInteger() ?? 0;
            marketingCampaignAd.MarketingCampaignAdStatus = (MarketingCampaignAdStatus)int.Parse( hfMarketingCampaignAdStatus.Value );
            if ( !string.IsNullOrWhiteSpace( hfMarketingCampaignAdStatusPersonId.Value ) )
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = int.Parse( hfMarketingCampaignAdStatusPersonId.Value );
            }
            else
            {
                marketingCampaignAd.MarketingCampaignStatusPersonId = null;
            }

            if ( tbAdDateRangeStartDate.SelectedDate == null )
            {
                tbAdDateRangeStartDate.ShowErrorMessage( Rock.Constants.WarningMessage.CannotBeBlank( "StartDate" ) );
                return;
            }

            marketingCampaignAd.StartDate = tbAdDateRangeStartDate.SelectedDate ?? DateTime.MinValue;

            if ( tbAdDateRangeEndDate.Visible )
            {
                if ( tbAdDateRangeEndDate.SelectedDate == null )
                {
                    tbAdDateRangeEndDate.ShowErrorMessage( Rock.Constants.WarningMessage.CannotBeBlank( "EndDate" ) );
                    return;
                }

                marketingCampaignAd.EndDate = tbAdDateRangeEndDate.SelectedDate ?? DateTime.MaxValue;
            }
            else
            {
                marketingCampaignAd.EndDate = marketingCampaignAd.StartDate;
            }

            if ( marketingCampaignAd.EndDate < marketingCampaignAd.StartDate )
            {
                tbAdDateRangeStartDate.ShowErrorMessage( WarningMessage.DateRangeEndDateBeforeStartDate() );
            }

            marketingCampaignAd.Url = tbUrl.Text;

            LoadAdAttributes( marketingCampaignAd, false, false );
            Rock.Attribute.Helper.GetEditValues( phAttributes, marketingCampaignAd );
            Rock.Attribute.Helper.SetErrorIndicators( phAttributes, marketingCampaignAd );

            if ( !Page.IsValid )
            {
                return;
            }

            if ( !marketingCampaignAd.IsValid )
            {
                return;
            }

            RockTransactionScope.WrapTransaction( () =>
                {
                    if ( marketingCampaignAd.Id.Equals( 0 ) )
                    {
                        marketingCampaignAdService.Add( marketingCampaignAd, CurrentPersonId );
                    }

                    marketingCampaignAdService.Save( marketingCampaignAd, CurrentPersonId );
                    Rock.Attribute.Helper.SaveAttributeValues( marketingCampaignAd, CurrentPersonId );
                } );

            pnlMarketingCampaignAdEditor.Visible = false;
            pnlDetails.Visible = true;
            pnlList.Visible = false;

            BindMarketingCampaignAdsGrid();
        }
示例#14
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)
        {
            using (new UnitOfWorkScope())
            {
                MarketingCampaignAdType        marketingCampaignAdType;
                MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService();

                int marketingCampaignAdTypeId = int.Parse(hfMarketingCampaignAdTypeId.Value);

                if (marketingCampaignAdTypeId == 0)
                {
                    marketingCampaignAdType = new MarketingCampaignAdType();
                    marketingCampaignAdTypeService.Add(marketingCampaignAdType, CurrentPersonId);
                }
                else
                {
                    marketingCampaignAdType = marketingCampaignAdTypeService.Get(marketingCampaignAdTypeId);
                }

                marketingCampaignAdType.Name          = tbName.Text;
                marketingCampaignAdType.DateRangeType = (DateRangeTypeEnum)int.Parse(ddlDateRangeType.SelectedValue);

                if (!marketingCampaignAdType.IsValid)
                {
                    // Controls will render the error messages
                    return;
                }

                RockTransactionScope.WrapTransaction(() =>
                {
                    marketingCampaignAdTypeService.Save(marketingCampaignAdType, CurrentPersonId);

                    // get it back to make sure we have a good Id for it for the Attributes
                    marketingCampaignAdType = marketingCampaignAdTypeService.Get(marketingCampaignAdType.Guid);

                    // delete AdTypeAttributes that are no longer configured in the UI
                    AttributeService attributeService = new AttributeService();
                    string qualifierValue             = marketingCampaignAdType.Id.ToString();
                    int typeId = new MarketingCampaignAd().TypeId;
                    var qry    = attributeService.GetByEntityTypeId(typeId).AsQueryable()
                                 .Where(a => a.EntityTypeQualifierColumn == "MarketingCampaignAdTypeId" &&
                                        a.EntityTypeQualifierValue.Equals(qualifierValue));

                    var deletedAttributes = from attr in qry.ToList()
                                            where !(from d in AttributesState
                                                    select d.Guid).Contains(attr.Guid)
                                            select attr;

                    deletedAttributes.ToList().ForEach(a =>
                    {
                        var attr = attributeService.Get(a.Guid);
                        if (attr != null)
                        {
                            Rock.Web.Cache.AttributeCache.Flush(attr.Id);
                            attributeService.Delete(attr, CurrentPersonId);
                            attributeService.Save(attr, CurrentPersonId);
                        }
                    });

                    // add/update the AdTypes that are assigned in the UI
                    foreach (var attributeState in AttributesState)
                    {
                        // remove old qualifiers in case they changed
                        var qualifierService = new AttributeQualifierService();
                        foreach (var oldQualifier in qualifierService.GetByAttributeId(attributeState.Id).ToList())
                        {
                            qualifierService.Delete(oldQualifier, CurrentPersonId);
                            qualifierService.Save(oldQualifier, CurrentPersonId);
                        }

                        Attribute attribute = qry.FirstOrDefault(a => a.Guid.Equals(attributeState.Guid));
                        if (attribute == null)
                        {
                            attribute = attributeState.Clone() as Rock.Model.Attribute;
                            attributeService.Add(attribute, CurrentPersonId);
                        }
                        else
                        {
                            attributeState.Id = attribute.Id;
                            attribute.FromDictionary(attributeState.ToDictionary());

                            foreach (var qualifier in attributeState.AttributeQualifiers)
                            {
                                attribute.AttributeQualifiers.Add(qualifier.Clone() as AttributeQualifier);
                            }
                        }

                        attribute.EntityTypeQualifierColumn = "MarketingCampaignAdTypeId";
                        attribute.EntityTypeQualifierValue  = marketingCampaignAdType.Id.ToString();
                        attribute.EntityTypeId = Rock.Web.Cache.EntityTypeCache.Read(typeof(MarketingCampaignAd)).Id;
                        Rock.Web.Cache.AttributeCache.Flush(attribute.Id);
                        attributeService.Save(attribute, CurrentPersonId);
                    }
                });
            }
            NavigateToParentPage();
        }
 /// <summary>
 /// Gets the type of the attributes for ad.
 /// </summary>
 /// <param name="marketingAdTypeId">The marketing ad type id.</param>
 /// <returns></returns>
 private static List<Rock.Web.Cache.AttributeCache> GetAttributesForAdType( int marketingAdTypeId )
 {
     MarketingCampaignAd temp = new MarketingCampaignAd();
     temp.MarketingCampaignAdTypeId = marketingAdTypeId;
     temp.LoadAttributes();
     return temp.Attributes.Values.ToList();
 }
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        public void ShowDetail( string itemKey, int itemKeyValue, int? marketingCampaignId )
        {
            pnlDetails.Visible = false;
            if ( !itemKey.Equals( "marketingCampaignAdId" ) )
            {
                return;
            }

            MarketingCampaignAd marketingCampaignAd = null;

            lbApprove.Visible = IsUserAuthorized( "Approve" );
            lbDeny.Visible = IsUserAuthorized( "Approve" );

            var rockContext = new RockContext();

            if ( !itemKeyValue.Equals( 0 ) )
            {
                marketingCampaignAd = new MarketingCampaignAdService( rockContext ).Get( itemKeyValue );
                marketingCampaignAd.LoadAttributes();
            }
            else
            {
                // only create a new marketing Campaign Ad if the marketingCampaignId was specified
                if ( marketingCampaignId != null )
                {
                    marketingCampaignAd = new MarketingCampaignAd { Id = 0, MarketingCampaignAdStatus = MarketingCampaignAdStatus.PendingApproval };
                    marketingCampaignAd.MarketingCampaignId = marketingCampaignId.Value;
                    marketingCampaignAd.MarketingCampaign = new MarketingCampaignService( rockContext ).Get( marketingCampaignAd.MarketingCampaignId );
                }
            }

            if ( marketingCampaignAd == null )
            {
                return;
            }

            pnlDetails.Visible = true;
            hfMarketingCampaignAdId.Value = marketingCampaignAd.Id.ToString();
            hfMarketingCampaignId.Value = marketingCampaignAd.MarketingCampaignId.ToString();

            if ( marketingCampaignAd.Id.Equals( 0 ) )
            {
                lActionTitleAd.Text = ActionTitle.Add( "Marketing Ad for " + marketingCampaignAd.MarketingCampaign.Title ).FormatAsHtmlTitle();
            }
            else
            {
                lActionTitleAd.Text = ActionTitle.Edit( "Marketing Ad for " + marketingCampaignAd.MarketingCampaign.Title ).FormatAsHtmlTitle();
            }

            LoadDropDowns();
            ddlMarketingCampaignAdType.SetValue( marketingCampaignAd.MarketingCampaignAdTypeId );
            tbPriority.Text = marketingCampaignAd.Priority.ToString();

            SetApprovalValues( marketingCampaignAd.MarketingCampaignAdStatus, new PersonService( rockContext ).Get( marketingCampaignAd.MarketingCampaignStatusPersonId ?? 0 ) );

            if ( itemKeyValue.Equals( 0 ) )
            {
                drpAdDateRange.LowerValue = null;
                drpAdDateRange.UpperValue = null;
                dpAdSingleDate.SelectedDate = null;
            }
            else
            {
                drpAdDateRange.LowerValue = marketingCampaignAd.StartDate;
                drpAdDateRange.UpperValue = marketingCampaignAd.EndDate;
                dpAdSingleDate.SelectedDate = marketingCampaignAd.StartDate;
            }

            tbUrl.Text = marketingCampaignAd.Url;

            LoadAdAttributes( marketingCampaignAd, true, true );

            pnlDetails.Visible = true;
        }
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        public void ShowDetail(string itemKey, int itemKeyValue, int?marketingCampaignId)
        {
            pnlDetails.Visible = false;
            if (!itemKey.Equals("marketingCampaignAdId"))
            {
                return;
            }

            MarketingCampaignAd marketingCampaignAd = null;

            btnApproveAd.Visible = IsUserAuthorized("Approve");
            btnDenyAd.Visible    = IsUserAuthorized("Approve");

            if (!itemKeyValue.Equals(0))
            {
                marketingCampaignAd = new MarketingCampaignAdService().Get(itemKeyValue);
                marketingCampaignAd.LoadAttributes();
            }
            else
            {
                // only create a new marketing Campaign Ad if the marketingCampaignId was specified
                if (marketingCampaignId != null)
                {
                    marketingCampaignAd = new MarketingCampaignAd {
                        Id = 0, MarketingCampaignAdStatus = MarketingCampaignAdStatus.PendingApproval
                    };
                    marketingCampaignAd.MarketingCampaignId = marketingCampaignId.Value;
                    marketingCampaignAd.MarketingCampaign   = new MarketingCampaignService().Get(marketingCampaignAd.MarketingCampaignId);
                }
            }

            if (marketingCampaignAd == null)
            {
                return;
            }

            pnlDetails.Visible            = true;
            hfMarketingCampaignAdId.Value = marketingCampaignAd.Id.ToString();
            hfMarketingCampaignId.Value   = marketingCampaignAd.MarketingCampaignId.ToString();

            if (marketingCampaignAd.Id.Equals(0))
            {
                lActionTitleAd.Text = ActionTitle.Add("Marketing Ad for " + marketingCampaignAd.MarketingCampaign.Title);
            }
            else
            {
                lActionTitleAd.Text = ActionTitle.Edit("Marketing Ad for " + marketingCampaignAd.MarketingCampaign.Title);
            }

            LoadDropDowns();
            ddlMarketingCampaignAdType.SetValue(marketingCampaignAd.MarketingCampaignAdTypeId);
            tbPriority.Text = marketingCampaignAd.Priority.ToString();

            SetApprovalValues(marketingCampaignAd.MarketingCampaignAdStatus, new PersonService().Get(marketingCampaignAd.MarketingCampaignStatusPersonId ?? 0));

            if (itemKeyValue.Equals(0))
            {
                tbAdDateRangeStartDate.SelectedDate = null;
                tbAdDateRangeEndDate.SelectedDate   = null;
            }
            else
            {
                tbAdDateRangeStartDate.SelectedDate = marketingCampaignAd.StartDate;
                tbAdDateRangeEndDate.SelectedDate   = marketingCampaignAd.EndDate;
            }

            tbUrl.Text = marketingCampaignAd.Url;

            LoadAdAttributes(marketingCampaignAd, true, true);

            pnlDetails.Visible = true;
        }