/// <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); }
/// <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> /// 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> /// 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); } }
/// <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(); }
/// <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); }
/// <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(); }
/// <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> /// 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> /// 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> /// 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> /// 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 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) { 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> /// 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; }
/// <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); }