Example #1
0
        /// <summary>
        /// Handles the Click event of the btnEdit 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 btnEdit_Click(object sender, EventArgs e)
        {
            MarketingCampaignService service = new MarketingCampaignService();
            MarketingCampaign        item    = service.Get(hfMarketingCampaignId.ValueAsInt());

            ShowEditDetails(item);
        }
Example #2
0
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        public void ShowDetail(string itemKey, int itemKeyValue)
        {
            if (!itemKey.Equals("marketingCampaignId"))
            {
                return;
            }

            MarketingCampaign marketingCampaign = null;

            if (!itemKeyValue.Equals(0))
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                marketingCampaign = marketingCampaignService.Get(itemKeyValue);
            }
            else
            {
                marketingCampaign = new MarketingCampaign {
                    Id = 0
                };
                marketingCampaign.MarketingCampaignAds       = new List <MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses  = new List <MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if (!IsUserAuthorized("Edit"))
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(MarketingCampaign.FriendlyTypeName);
            }

            if (readOnly)
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails(marketingCampaign);
            }
            else
            {
                btnEdit.Visible = true;
                if (marketingCampaign.Id > 0)
                {
                    ShowReadonlyDetails(marketingCampaign);
                }
                else
                {
                    ShowEditDetails(marketingCampaign);
                }
            }
        }
Example #3
0
        /// <summary>
        /// Shows the edit.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        protected void ShowEdit(int marketingCampaignId)
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            MarketingCampaign        marketingCampaign        = marketingCampaignService.Get(marketingCampaignId);

            MarketingCampaignAudiencesState = new List <MarketingCampaignAudienceDto>();

            if (marketingCampaign == null)
            {
                marketingCampaign = new MarketingCampaign {
                    Id = 0
                };
                marketingCampaign.MarketingCampaignAds       = new List <MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses  = new List <MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();
            tbTitle.Text              = marketingCampaign.Title;
            tbContactEmail.Text       = marketingCampaign.ContactEmail;
            tbContactFullName.Text    = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            ddlContactPerson.SelectedValue = (marketingCampaign.ContactPersonId ?? None.Id).ToString();
            ddlEventGroup.SelectedValue    = (marketingCampaign.EventGroupId ?? None.Id).ToString();

            foreach (var audience in marketingCampaign.MarketingCampaignAudiences)
            {
                MarketingCampaignAudiencesState.Add(new MarketingCampaignAudienceDto(audience));
            }

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select(a => a.CampusId).ToList();

            UpdateReadonlyDetails(marketingCampaign);

            if (marketingCampaign.Id > 0)
            {
                lActionTitle.Text = ActionTitle.Edit(MarketingCampaign.FriendlyTypeName);
                SetEditMode(false);
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add(MarketingCampaign.FriendlyTypeName);
                SetEditMode(true);
            }

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

            BindMarketingCampaignAdsGrid();
            BindMarketingCampaignAudiencesGrid();
        }
Example #4
0
        /// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            SortProperty             sortProperty             = gMarketingCampaigns.SortProperty;

            if (sortProperty != null)
            {
                gMarketingCampaigns.DataSource = marketingCampaignService.Queryable().Sort(sortProperty).ToList();
            }
            else
            {
                gMarketingCampaigns.DataSource = marketingCampaignService.Queryable().OrderBy(p => p.Title).ToList();
            }

            gMarketingCampaigns.DataBind();
        }
Example #5
0
        /// <summary>
        /// Handles the Click event of the btnCancel 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 btnCancel_Click(object sender, EventArgs e)
        {
            SetEditMode(false);

            if (hfMarketingCampaignId.Value.Equals("0"))
            {
                // Cancelling on Add.  Return to Grid
                NavigateToParentPage();
            }
            else
            {
                // Cancelling on Edit.  Return to Details
                MarketingCampaignService service = new MarketingCampaignService();
                MarketingCampaign        item    = service.Get(hfMarketingCampaignId.ValueAsInt());
                ShowReadonlyDetails(item);
            }
        }
Example #6
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            int marketingCampaignId             = (int)e.RowKeyValue;
            MarketingCampaign marketingCampaign = marketingCampaignService.Get(marketingCampaignId);

            string errorMessage;

            if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
            {
                mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                return;
            }

            if (CurrentBlock != null)
            {
                marketingCampaignService.Delete(marketingCampaign, CurrentPersonId);
                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            }

            BindGrid();
        }
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete( object sender, RowEventArgs e )
        {
            var rockContext = new RockContext();
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService( rockContext );

            MarketingCampaign marketingCampaign = marketingCampaignService.Get( (int)e.RowKeyValue );

            if ( marketingCampaign != null )
            {
                string errorMessage;
                if ( !marketingCampaignService.CanDelete( marketingCampaign, out errorMessage ) )
                {
                    mdGridWarning.Show( errorMessage, ModalAlertType.Information );
                    return;
                }

                marketingCampaignService.Delete( marketingCampaign );
                rockContext.SaveChanges();
            }

            BindGrid();
        }
Example #8
0
        /// <summary>
        /// Returns breadcrumbs specific to the block that should be added to navigation
        /// </summary>
        /// <param name="pageReference">The page reference.</param>
        /// <returns></returns>
        public override List <BreadCrumb> GetBreadCrumbs(PageReference pageReference)
        {
            var breadCrumbs = new List <BreadCrumb>();

            int id = int.MinValue;

            if (int.TryParse(PageParameter(pageReference, "marketingCampaignId"), out id))
            {
                var service = new MarketingCampaignService();
                var item    = service.Get(id);
                if (item != null)
                {
                    breadCrumbs.Add(new BreadCrumb(item.Title, pageReference));
                }
                else
                {
                    breadCrumbs.Add(new BreadCrumb("New Marketing Campaign", pageReference));
                }
            }

            return(breadCrumbs);
        }
Example #9
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            var rockContext = new RockContext();
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService(rockContext);

            MarketingCampaign marketingCampaign = marketingCampaignService.Get((int)e.RowKeyValue);

            if (marketingCampaign != null)
            {
                string errorMessage;
                if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
                {
                    mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                    return;
                }

                marketingCampaignService.Delete(marketingCampaign);
                rockContext.SaveChanges();
            }

            BindGrid();
        }
Example #10
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            RockTransactionScope.WrapTransaction(() =>
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                MarketingCampaign marketingCampaign = marketingCampaignService.Get((int)e.RowKeyValue);

                if (marketingCampaign != null)
                {
                    string errorMessage;
                    if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
                    {
                        mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                        return;
                    }

                    marketingCampaignService.Delete(marketingCampaign, CurrentPersonId);
                    marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
                }
            });

            BindGrid();
        }
Example #11
0
        /// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            SortProperty             sortProperty             = gMarketingCampaigns.SortProperty;
            var qry = marketingCampaignService.Queryable().Select(a =>
                                                                  new
            {
                a.Id,
                a.Title,
                EventGroupName = a.EventGroup.Name,
                a.ContactFullName
            });

            if (sortProperty != null)
            {
                gMarketingCampaigns.DataSource = qry.Sort(sortProperty).ToList();
            }
            else
            {
                gMarketingCampaigns.DataSource = qry.OrderBy(p => p.Title).ToList();
            }

            gMarketingCampaigns.DataBind();
        }
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign identifier.</param>
        public void ShowDetail( int marketingCampaignId )
        {
            MarketingCampaign marketingCampaign = null;

            if ( !marketingCampaignId.Equals( 0 ) )
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService( new RockContext() );
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            if (marketingCampaign == null)
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if ( !IsUserAuthorized( Authorization.EDIT ) )
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( MarketingCampaign.FriendlyTypeName );
            }

            if ( readOnly )
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails( marketingCampaign );
            }
            else
            {
                btnEdit.Visible = true;
                if ( marketingCampaign.Id > 0 )
                {
                    ShowReadonlyDetails( marketingCampaign );
                }
                else
                {
                    ShowEditDetails( marketingCampaign );
                }
            }
        }
        /// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService( new RockContext() );
            SortProperty sortProperty = gMarketingCampaigns.SortProperty;
            var qry = marketingCampaignService.Queryable().Select( a =>
                new
                {
                    a.Id,
                    a.Title,
                    EventGroupName = a.EventGroup.Name,
                    a.ContactFullName
                } );

            if ( sortProperty != null )
            {
                gMarketingCampaigns.DataSource = qry.Sort( sortProperty ).ToList();
            }
            else
            {
                gMarketingCampaigns.DataSource = qry.OrderBy( p => p.Title ).ToList();
            }

            gMarketingCampaigns.DataBind();
        }
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        public void ShowDetail( string itemKey, int itemKeyValue )
        {
            if ( !itemKey.Equals( "marketingCampaignId" ) )
            {
                return;
            }

            MarketingCampaign marketingCampaign = null;

            if ( !itemKeyValue.Equals( 0 ) )
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                marketingCampaign = marketingCampaignService.Get( itemKeyValue );
            }
            else
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if ( !IsUserAuthorized( "Edit" ) )
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( MarketingCampaign.FriendlyTypeName );
            }

            if ( readOnly )
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails( marketingCampaign );
            }
            else
            {
                btnEdit.Visible = true;
                if ( marketingCampaign.Id > 0 )
                {
                    ShowReadonlyDetails( marketingCampaign );
                }
                else
                {
                    ShowEditDetails( marketingCampaign );
                }
            }
        }
        /// <summary>
        /// Binds the grid.
        /// </summary>
        private void BindGrid()
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            SortProperty sortProperty = gMarketingCampaigns.SortProperty;

            if ( sortProperty != null )
            {
                gMarketingCampaigns.DataSource = marketingCampaignService.Queryable().Sort( sortProperty ).ToList();
            }
            else
            {
                gMarketingCampaigns.DataSource = marketingCampaignService.Queryable().OrderBy( p => p.Title ).ToList();
            }

            gMarketingCampaigns.DataBind();
        }
        /// <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 )
        {
            MarketingCampaign marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse( hfMarketingCampaignId.Value );

            if ( marketingCampaignId == 0 )
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add( marketingCampaign, CurrentPersonId );
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            marketingCampaign.Title = tbTitle.Text;
            if ( ddlContactPerson.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = int.Parse( ddlContactPerson.SelectedValue );
            }

            marketingCampaign.ContactEmail = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName = tbContactFullName.Text;

            if ( ddlEventGroup.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse( ddlEventGroup.SelectedValue );
            }

            // check for duplicates
            if ( marketingCampaignService.Queryable().Count( a => a.Title.Equals( marketingCampaign.Title, StringComparison.OrdinalIgnoreCase ) && !a.Id.Equals( marketingCampaign.Id ) ) > 0 )
            {
                tbTitle.ShowErrorMessage( WarningMessage.DuplicateFoundMessage( "title", MarketingCampaign.FriendlyTypeName ) );
                return;
            }

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

            RockTransactionScope.WrapTransaction( () =>
            {
                #region Save MarketingCampaignAudiences to db

                // Update MarketingCampaignAudiences with UI values
                if ( marketingCampaign.MarketingCampaignAudiences == null )
                {
                    marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !( from audienceStateItem in MarketingCampaignAudiencesState
                                                select audienceStateItem.AudienceTypeValueId ).Contains( audienceInDB.AudienceTypeValueId )
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach( a =>
                {
                    var aud = marketingCampaignAudienceService.Get( a.Guid );
                    marketingCampaignAudienceService.Delete( aud, CurrentPersonId );
                    marketingCampaignAudienceService.Save( aud, CurrentPersonId );
                } );

                // add or update the Audiences that are assigned in the UI
                foreach ( var item in MarketingCampaignAudiencesState )
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault( a => a.AudienceTypeValueId.Equals( item.AudienceTypeValueId ) );
                    if ( marketingCampaignAudience == null )
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add( marketingCampaignAudience );
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary = item.IsPrimary;
                }

                #endregion

                #region Save MarketingCampaignCampuses to db

                // Update MarketingCampaignCampuses with UI values
                if ( marketingCampaign.MarketingCampaignCampuses == null )
                {
                    marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !( cpCampuses.SelectedCampusIds ).Contains( mcc.CampusId )
                                      select mcc;

                deletedCampuses.ToList().ForEach( a =>
                {
                    var c = marketingCampaignCampusService.Get( a.Guid );
                    marketingCampaignCampusService.Delete( c, CurrentPersonId );
                    marketingCampaignCampusService.Save( c, CurrentPersonId );
                } );

                // add or update the Campuses that are assigned in the UI
                foreach ( int campusId in cpCampuses.SelectedCampusIds )
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault( a => a.CampusId.Equals( campusId ) );
                    if ( marketingCampaignCampus == null )
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add( marketingCampaignCampus );
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                #endregion

                marketingCampaignService.Save( marketingCampaign, CurrentPersonId );
            } );

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // refresh from db using new service context since the above child items were saved outside of the marketingCampaign object
            marketingCampaign = MarketingCampaign.Read( marketingCampaign.Id );
            UpdateReadonlyDetails( marketingCampaign );

            SetEditMode( false );
            pnlDetails.Visible = true;
            pnlList.Visible = false;
        }
Example #17
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)
        {
            MarketingCampaign        marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse(hfMarketingCampaignId.Value);

            if (marketingCampaignId == 0)
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add(marketingCampaign, CurrentPersonId);
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get(marketingCampaignId);
            }

            marketingCampaign.Title = tbTitle.Text;
            if (ddlContactPerson.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = int.Parse(ddlContactPerson.SelectedValue);
            }

            marketingCampaign.ContactEmail       = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName    = tbContactFullName.Text;

            if (ddlEventGroup.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse(ddlEventGroup.SelectedValue);
            }

            // check for duplicates
            if (marketingCampaignService.Queryable().Count(a => a.Title.Equals(marketingCampaign.Title, StringComparison.OrdinalIgnoreCase) && !a.Id.Equals(marketingCampaign.Id)) > 0)
            {
                tbTitle.ShowErrorMessage(WarningMessage.DuplicateFoundMessage("title", MarketingCampaign.FriendlyTypeName));
                return;
            }

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

            RockTransactionScope.WrapTransaction(() =>
            {
                #region Save MarketingCampaignAudiences to db

                // Update MarketingCampaignAudiences with UI values
                if (marketingCampaign.MarketingCampaignAudiences == null)
                {
                    marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !(from audienceStateItem in MarketingCampaignAudiencesState
                                               select audienceStateItem.AudienceTypeValueId).Contains(audienceInDB.AudienceTypeValueId)
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach(a =>
                {
                    var aud = marketingCampaignAudienceService.Get(a.Guid);
                    marketingCampaignAudienceService.Delete(aud, CurrentPersonId);
                    marketingCampaignAudienceService.Save(aud, CurrentPersonId);
                });

                // add or update the Audiences that are assigned in the UI
                foreach (var item in MarketingCampaignAudiencesState)
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault(a => a.AudienceTypeValueId.Equals(item.AudienceTypeValueId));
                    if (marketingCampaignAudience == null)
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add(marketingCampaignAudience);
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary           = item.IsPrimary;
                }

                #endregion

                #region Save MarketingCampaignCampuses to db

                // Update MarketingCampaignCampuses with UI values
                if (marketingCampaign.MarketingCampaignCampuses == null)
                {
                    marketingCampaign.MarketingCampaignCampuses = new List <MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !(cpCampuses.SelectedCampusIds).Contains(mcc.CampusId)
                                      select mcc;

                deletedCampuses.ToList().ForEach(a =>
                {
                    var c = marketingCampaignCampusService.Get(a.Guid);
                    marketingCampaignCampusService.Delete(c, CurrentPersonId);
                    marketingCampaignCampusService.Save(c, CurrentPersonId);
                });

                // add or update the Campuses that are assigned in the UI
                foreach (int campusId in cpCampuses.SelectedCampusIds)
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault(a => a.CampusId.Equals(campusId));
                    if (marketingCampaignCampus == null)
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add(marketingCampaignCampus);
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                #endregion

                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            });

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // refresh from db using new service context since the above child items were saved outside of the marketingCampaign object
            marketingCampaign = MarketingCampaign.Read(marketingCampaign.Id);
            UpdateReadonlyDetails(marketingCampaign);

            SetEditMode(false);
            pnlDetails.Visible = true;
            pnlList.Visible    = false;
        }
        /// <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 )
        {
            var rockContext = new RockContext();

            MarketingCampaign marketingCampaign;

            MarketingCampaignService marketingCampaignService = new MarketingCampaignService( rockContext );

            int marketingCampaignId = int.Parse( hfMarketingCampaignId.Value );

            if ( marketingCampaignId == 0 )
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add( marketingCampaign );
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            marketingCampaign.Title = tbTitle.Text;
            if ( ppContactPerson.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = ppContactPerson.PersonId;
            }

            marketingCampaign.ContactEmail = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName = tbContactFullName.Text;

            if ( ddlEventGroup.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse( ddlEventGroup.SelectedValue );
            }

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

            rockContext.WrapTransaction( () =>
            {
                /* Save MarketingCampaignAudiences to db */
                if ( marketingCampaign.MarketingCampaignAudiences == null )
                {
                    marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService( rockContext );
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !( from audienceStateItem in MarketingCampaignAudiencesState
                                                select audienceStateItem.AudienceTypeValueId ).Contains( audienceInDB.AudienceTypeValueId )
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach( a =>
                {
                    var aud = marketingCampaignAudienceService.Get( a.Guid );
                    marketingCampaignAudienceService.Delete( aud );
                } );

                rockContext.SaveChanges();

                // add or update the Audiences that are assigned in the UI
                foreach ( var item in MarketingCampaignAudiencesState )
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault( a => a.AudienceTypeValueId.Equals( item.AudienceTypeValueId ) );
                    if ( marketingCampaignAudience == null )
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add( marketingCampaignAudience );
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary = item.IsPrimary;
                }

                /* Save MarketingCampaignCampuses to db */

                // Update MarketingCampaignCampuses with UI values
                if ( marketingCampaign.MarketingCampaignCampuses == null )
                {
                    marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService( rockContext );
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !cpCampuses.SelectedCampusIds.Contains( mcc.CampusId )
                                      select mcc;

                deletedCampuses.ToList().ForEach( a =>
                {
                    var c = marketingCampaignCampusService.Get( a.Guid );
                    marketingCampaignCampusService.Delete( c );
                } );

                rockContext.SaveChanges();

                // add or update the Campuses that are assigned in the UI
                foreach ( int campusId in cpCampuses.SelectedCampusIds )
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault( a => a.CampusId.Equals( campusId ) );
                    if ( marketingCampaignCampus == null )
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add( marketingCampaignCampus );
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                rockContext.SaveChanges();
            } );

            var qryParams = new Dictionary<string, string>();
            qryParams["marketingCampaignId"] = marketingCampaign.Id.ToString();
            NavigateToPage( RockPage.Guid, qryParams );
        }
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete( object sender, RowEventArgs e )
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            int marketingCampaignId = (int)e.RowKeyValue;
            MarketingCampaign marketingCampaign = marketingCampaignService.Get( marketingCampaignId );

            string errorMessage;
            if ( !marketingCampaignService.CanDelete( marketingCampaign, out errorMessage ) )
            {
                mdGridWarning.Show( errorMessage, ModalAlertType.Information );
                return;
            }

            if ( CurrentBlock != null )
            {
                marketingCampaignService.Delete( marketingCampaign, CurrentPersonId );
                marketingCampaignService.Save( marketingCampaign, CurrentPersonId );
            }

            BindGrid();
        }
        /// <summary>
        /// Handles the Click event of the btnCancel 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 btnCancel_Click( object sender, EventArgs e )
        {
            SetEditMode( false );

            if ( hfMarketingCampaignId.Value.Equals( "0" ) )
            {
                // Cancelling on Add.  Return to Grid
                NavigateToParentPage();
            }
            else
            {
                // Cancelling on Edit.  Return to Details
                MarketingCampaignService service = new MarketingCampaignService( new RockContext() );
                MarketingCampaign item = service.Get( hfMarketingCampaignId.ValueAsInt() );
                ShowReadonlyDetails( item );
            }
        }
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns 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 gMarketingCampaigns_Delete( object sender, RowEventArgs e )
        {
            RockTransactionScope.WrapTransaction( () =>
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                MarketingCampaign marketingCampaign = marketingCampaignService.Get( (int)e.RowKeyValue );

                if ( marketingCampaign != null )
                {
                    string errorMessage;
                    if ( !marketingCampaignService.CanDelete( marketingCampaign, out errorMessage ) )
                    {
                        mdGridWarning.Show( errorMessage, ModalAlertType.Information );
                        return;
                    }

                    marketingCampaignService.Delete( marketingCampaign, CurrentPersonId );
                    marketingCampaignService.Save( marketingCampaign, CurrentPersonId );
                }
            } );

            BindGrid();
        }
 /// <summary>
 /// Handles the Click event of the btnEdit 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 btnEdit_Click( object sender, EventArgs e )
 {
     MarketingCampaignService service = new MarketingCampaignService( new RockContext() );
     MarketingCampaign item = service.Get( hfMarketingCampaignId.ValueAsInt() );
     ShowEditDetails( item );
 }
        /// <summary>
        /// Shows the edit.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        protected void ShowEdit( int marketingCampaignId )
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            MarketingCampaign marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            MarketingCampaignAudiencesState = new List<MarketingCampaignAudienceDto>();

            if ( marketingCampaign == null )
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();
            tbTitle.Text = marketingCampaign.Title;
            tbContactEmail.Text = marketingCampaign.ContactEmail;
            tbContactFullName.Text = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            ddlContactPerson.SelectedValue = ( marketingCampaign.ContactPersonId ?? None.Id ).ToString();
            ddlEventGroup.SelectedValue = ( marketingCampaign.EventGroupId ?? None.Id ).ToString();

            foreach ( var audience in marketingCampaign.MarketingCampaignAudiences )
            {
                MarketingCampaignAudiencesState.Add( new MarketingCampaignAudienceDto( audience ) );
            }

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select( a => a.CampusId ).ToList();

            UpdateReadonlyDetails( marketingCampaign );

            if ( marketingCampaign.Id > 0 )
            {
                lActionTitle.Text = ActionTitle.Edit( MarketingCampaign.FriendlyTypeName );
                SetEditMode( false );
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add( MarketingCampaign.FriendlyTypeName );
                SetEditMode( true );
            }

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

            BindMarketingCampaignAdsGrid();
            BindMarketingCampaignAudiencesGrid();
        }
        /// <summary>
        /// Returns breadcrumbs specific to the block that should be added to navigation
        /// </summary>
        /// <param name="pageReference">The page reference.</param>
        /// <returns></returns>
        public override List<BreadCrumb> GetBreadCrumbs( PageReference pageReference )
        {
            var breadCrumbs = new List<BreadCrumb>();

            int id = int.MinValue;
            if ( int.TryParse( PageParameter( pageReference, "marketingCampaignId" ), out id ) )
            {
                var service = new MarketingCampaignService( new RockContext() );
                var item = service.Get( id );
                if ( item != null )
                {
                    breadCrumbs.Add( new BreadCrumb( item.Title, pageReference ) );
                }
                else
                {
                    breadCrumbs.Add( new BreadCrumb( "New Marketing Campaign", pageReference ) );
                }
            }

            return breadCrumbs;
        }
Example #25
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)
        {
            MarketingCampaign        marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse(hfMarketingCampaignId.Value);

            if (marketingCampaignId == 0)
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add(marketingCampaign, CurrentPersonId);
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get(marketingCampaignId);
            }

            marketingCampaign.Title = tbTitle.Text;
            if (ppContactPerson.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = ppContactPerson.PersonId;
            }

            marketingCampaign.ContactEmail       = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName    = tbContactFullName.Text;

            if (ddlEventGroup.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse(ddlEventGroup.SelectedValue);
            }

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

            RockTransactionScope.WrapTransaction(() =>
            {
                /* Save MarketingCampaignAudiences to db */
                if (marketingCampaign.MarketingCampaignAudiences == null)
                {
                    marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !(from audienceStateItem in MarketingCampaignAudiencesState
                                               select audienceStateItem.AudienceTypeValueId).Contains(audienceInDB.AudienceTypeValueId)
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach(a =>
                {
                    var aud = marketingCampaignAudienceService.Get(a.Guid);
                    marketingCampaignAudienceService.Delete(aud, CurrentPersonId);
                    marketingCampaignAudienceService.Save(aud, CurrentPersonId);
                });

                // add or update the Audiences that are assigned in the UI
                foreach (var item in MarketingCampaignAudiencesState)
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault(a => a.AudienceTypeValueId.Equals(item.AudienceTypeValueId));
                    if (marketingCampaignAudience == null)
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add(marketingCampaignAudience);
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary           = item.IsPrimary;
                }

                /* Save MarketingCampaignCampuses to db */

                // Update MarketingCampaignCampuses with UI values
                if (marketingCampaign.MarketingCampaignCampuses == null)
                {
                    marketingCampaign.MarketingCampaignCampuses = new List <MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !cpCampuses.SelectedCampusIds.Contains(mcc.CampusId)
                                      select mcc;

                deletedCampuses.ToList().ForEach(a =>
                {
                    var c = marketingCampaignCampusService.Get(a.Guid);
                    marketingCampaignCampusService.Delete(c, CurrentPersonId);
                    marketingCampaignCampusService.Save(c, CurrentPersonId);
                });

                // add or update the Campuses that are assigned in the UI
                foreach (int campusId in cpCampuses.SelectedCampusIds)
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault(a => a.CampusId.Equals(campusId));
                    if (marketingCampaignCampus == null)
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add(marketingCampaignCampus);
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            });


            var qryParams = new Dictionary <string, string>();

            qryParams["marketingCampaignId"] = marketingCampaign.Id.ToString();
            NavigateToPage(RockPage.Guid, qryParams);
        }