/// <summary> /// Handles the Delete event of the gMarketingCampaignAdType 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 gMarketingCampaignAdType_Delete( object sender, RowEventArgs e ) { var rockContext = new RockContext(); MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService( rockContext ); MarketingCampaignAdType marketingCampaignAdType = marketingCampaignAdTypeService.Get( (int)e.RowKeyValue ); if ( marketingCampaignAdType != null ) { string errorMessage; if ( !marketingCampaignAdTypeService.CanDelete( marketingCampaignAdType, out errorMessage ) ) { mdGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } marketingCampaignAdTypeService.Delete( marketingCampaignAdType ); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService(); SortProperty sortProperty = gMarketingCampaignAdType.SortProperty; if ( sortProperty != null ) { gMarketingCampaignAdType.DataSource = marketingCampaignAdTypeService.Queryable().Sort( sortProperty ).ToList(); } else { gMarketingCampaignAdType.DataSource = marketingCampaignAdTypeService.Queryable().OrderBy( p => p.Name ).ToList(); } gMarketingCampaignAdType.DataBind(); }
/// <summary> /// Handles the Delete event of the gMarketingCampaignAdType 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 gMarketingCampaignAdType_Delete( object sender, RowEventArgs e ) { RockTransactionScope.WrapTransaction( () => { MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService(); MarketingCampaignAdType marketingCampaignAdType = marketingCampaignAdTypeService.Get( (int)e.RowKeyValue ); if ( marketingCampaignAdType != null ) { string errorMessage; if ( !marketingCampaignAdTypeService.CanDelete( marketingCampaignAdType, out errorMessage ) ) { mdGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } marketingCampaignAdTypeService.Delete( marketingCampaignAdType, CurrentPersonId ); marketingCampaignAdTypeService.Save( marketingCampaignAdType, CurrentPersonId ); } } ); BindGrid(); }
/// <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( "marketingCampaignAdTypeId" ) ) { return; } pnlDetails.Visible = true; MarketingCampaignAdType marketingCampaignAdType = null; var rockContext = new RockContext(); if ( !itemKeyValue.Equals( 0 ) ) { marketingCampaignAdType = new MarketingCampaignAdTypeService( rockContext ).Get( itemKeyValue ); lActionTitle.Text = "Ad Type Detail".FormatAsHtmlTitle(); } else { marketingCampaignAdType = new MarketingCampaignAdType { Id = 0 }; lActionTitle.Text = "Ad Type Detail".FormatAsHtmlTitle(); } LoadDropDowns(); // load data into UI controls AttributesState = new ViewStateList<Attribute>(); hfMarketingCampaignAdTypeId.Value = marketingCampaignAdType.Id.ToString(); tbName.Text = marketingCampaignAdType.Name; ddlDateRangeType.SetValue( (int)marketingCampaignAdType.DateRangeType ); AttributeService attributeService = new AttributeService( rockContext ); string qualifierValue = marketingCampaignAdType.Id.ToString(); var qry = attributeService.GetByEntityTypeId( new MarketingCampaignAd().TypeId ).AsQueryable() .Where( a => a.EntityTypeQualifierColumn.Equals( "MarketingCampaignAdTypeId", StringComparison.OrdinalIgnoreCase ) && a.EntityTypeQualifierValue.Equals( qualifierValue ) ); AttributesState.AddAll( qry.ToList() ); BindMarketingCampaignAdAttributeTypeGrid(); // render UI based on Authorized and IsSystem bool readOnly = false; nbEditModeMessage.Text = string.Empty; if ( !IsUserAuthorized( Authorization.EDIT ) ) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( MarketingCampaignAdType.FriendlyTypeName ); } if ( marketingCampaignAdType.IsSystem ) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlySystem( MarketingCampaignAdType.FriendlyTypeName ); } if ( readOnly ) { lActionTitle.Text = ActionTitle.View( MarketingCampaignAdType.FriendlyTypeName ); btnCancel.Text = "Close"; } tbName.ReadOnly = readOnly; ddlDateRangeType.Enabled = !readOnly; gMarketingCampaignAdAttributeTypes.Enabled = !readOnly; btnSave.Visible = !readOnly; }
/// <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(); MarketingCampaignAdType marketingCampaignAdType; MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService( rockContext ); int marketingCampaignAdTypeId = int.Parse( hfMarketingCampaignAdTypeId.Value ); if ( marketingCampaignAdTypeId == 0 ) { marketingCampaignAdType = new MarketingCampaignAdType(); marketingCampaignAdTypeService.Add( marketingCampaignAdType ); } 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( () => { AttributeService attributeService = new AttributeService( rockContext ); AttributeQualifierService attributeQualifierService = new AttributeQualifierService( rockContext ); CategoryService categoryService = new CategoryService( rockContext ); rockContext.SaveChanges(); // get it back to make sure we have a good Id for it for the Attributes marketingCampaignAdType = marketingCampaignAdTypeService.Get( marketingCampaignAdType.Guid ); var entityTypeId = EntityTypeCache.Read( typeof( MarketingCampaignAd ) ).Id; string qualifierColumn = "MarketingCampaignAdTypeId"; string qualifierValue = marketingCampaignAdType.Id.ToString(); // Get the existing attributes for this entity type and qualifier value var attributes = attributeService.Get( entityTypeId, qualifierColumn, qualifierValue ); // Delete any of those attributes that were removed in the UI var selectedAttributeGuids = AttributesState.Select( a => a.Guid ); foreach ( var attr in attributes.Where( a => !selectedAttributeGuids.Contains( a.Guid ) ) ) { Rock.Web.Cache.AttributeCache.Flush( attr.Id ); attributeService.Delete( attr ); } rockContext.SaveChanges(); // Update the Attributes that were assigned in the UI foreach ( var attributeState in AttributesState ) { Rock.Attribute.Helper.SaveAttributeEdits( attributeState, entityTypeId, qualifierColumn, qualifierValue, rockContext ); } } ); NavigateToParentPage(); }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns() { MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService( new RockContext() ); var adtypes = marketingCampaignAdTypeService.Queryable().OrderBy( a => a.Name ).ToList(); ddlMarketingCampaignAdType.DataSource = adtypes; ddlMarketingCampaignAdType.DataBind(); }
/// <summary> /// Loads the attribute controls. /// </summary> /// <param name="marketingCampaignAd">The marketing campaign ad.</param> /// <param name="createControls">if set to <c>true</c> [create controls].</param> /// <param name="setValues">if set to <c>true</c> [set values].</param> private void LoadAdAttributes( Rock.Attribute.IHasAttributes marketingCampaignAd, bool createControls, bool setValues ) { if ( string.IsNullOrWhiteSpace( ddlMarketingCampaignAdType.SelectedValue ) ) { return; } int marketingAdTypeId = int.Parse( ddlMarketingCampaignAdType.SelectedValue ); MarketingCampaignAdType marketingCampaignAdType = new MarketingCampaignAdTypeService( new RockContext() ).Get( marketingAdTypeId ); drpAdDateRange.Visible = marketingCampaignAdType.DateRangeType.Equals( DateRangeTypeEnum.DateRange ); dpAdSingleDate.Visible = marketingCampaignAdType.DateRangeType.Equals( DateRangeTypeEnum.SingleDate ); List<Rock.Web.Cache.AttributeCache> attributesForAdType = GetAttributesForAdType( marketingAdTypeId ); marketingCampaignAd.Attributes = marketingCampaignAd.Attributes ?? new Dictionary<string, Rock.Web.Cache.AttributeCache>(); marketingCampaignAd.AttributeValues = marketingCampaignAd.AttributeValues ?? new Dictionary<string, List<AttributeValue>>(); foreach ( var attribute in attributesForAdType ) { marketingCampaignAd.Attributes[attribute.Key] = attribute; if ( marketingCampaignAd.AttributeValues.Count( v => v.Key.Equals( attribute.Key ) ) == 0 ) { List<AttributeValue> attributeValues = new List<AttributeValue>(); attributeValues.Add( new AttributeValue { Value = attribute.DefaultValue } ); marketingCampaignAd.AttributeValues.Add( attribute.Key, attributeValues ); } } if ( createControls ) { phAttributes.Controls.Clear(); Rock.Attribute.Helper.AddEditControls( marketingCampaignAd, phAttributes, setValues ); } }
/// <summary> /// Rs the filter_ display filter value. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The e.</param> void rFilter_DisplayFilterValue( object sender, GridFilter.DisplayFilterValueArgs e ) { switch ( e.Key ) { case "Approval Status": int approvalStatusValue = e.Value.AsIntegerOrNull() ?? Rock.Constants.All.Id; if ( approvalStatusValue != Rock.Constants.All.Id ) { e.Value = e.Value.ConvertToEnum<MarketingCampaignAdStatus>().ConvertToString(); } else { e.Value = Rock.Constants.All.Text; } break; case "Priority Range": case "Date Range": string[] values = e.Value.Split( new char[] { ',' }, StringSplitOptions.None ); if ( values.Length == 2 ) { if ( string.IsNullOrWhiteSpace( values[0] ) && string.IsNullOrWhiteSpace( values[1] ) ) { e.Value = Rock.Constants.All.Text; } else if ( string.IsNullOrWhiteSpace( values[0] ) ) { e.Value = "less than " + values[1]; } else if ( string.IsNullOrWhiteSpace( values[1] ) ) { e.Value = "greater than " + values[0]; } else { e.Value = string.Format( "{0} to {1}", values[0], values[1] ); } } break; case "Ad Type": var adType = new MarketingCampaignAdTypeService( new RockContext() ).Get( e.Value.AsInteger() ); if ( adType != null ) { e.Value = adType.Name; } else { e.Value = Rock.Constants.All.Text; } break; } }
/// <summary> /// Binds the filter. /// </summary> private void BindFilter() { ddlApprovalStatus.BindToEnum( typeof( MarketingCampaignAdStatus ) ); ddlApprovalStatus.Items.Insert( 0, Rock.Constants.All.ListItem ); ddlApprovalStatus.SetValue( rFilter.GetUserPreference( "Approval Status" ) ); string priorityRangeValues = rFilter.GetUserPreference( "Priority Range" ); if ( !string.IsNullOrWhiteSpace( priorityRangeValues ) ) { string[] upperLowerValues = priorityRangeValues.Split( new char[] { ',' }, StringSplitOptions.None ); if ( upperLowerValues.Length == 2 ) { pPriorityRange.LowerValue = upperLowerValues[0].AsIntegerOrNull(); pPriorityRange.UpperValue = upperLowerValues[1].AsIntegerOrNull(); } } MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService( new RockContext() ); var adTypeList = marketingCampaignAdTypeService.Queryable().Select( a => new { a.Id, a.Name } ).OrderBy( a => a.Name ).ToList(); foreach ( var adType in adTypeList ) { ddlAdType.Items.Add( new ListItem( adType.Name, adType.Id.ToString() ) ); } ddlAdType.Items.Insert( 0, Rock.Constants.All.ListItem ); ddlAdType.SetValue( rFilter.GetUserPreference( "Ad Type" ) ); string dateRangeValues = rFilter.GetUserPreference( "Date Range" ); if ( !string.IsNullOrWhiteSpace( dateRangeValues ) ) { string[] upperLowerValues = dateRangeValues.Split( new char[] { ',' }, StringSplitOptions.None ); if ( upperLowerValues.Length == 2 ) { string lowerValue = upperLowerValues[0]; if ( !string.IsNullOrWhiteSpace( lowerValue ) ) { pDateRange.LowerValue = DateTime.Parse( lowerValue ); } string upperValue = upperLowerValues[1]; if ( !string.IsNullOrWhiteSpace( upperValue ) ) { pDateRange.UpperValue = DateTime.Parse( upperValue ); } } } }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns() { // Controls on Main Campaign Panel GroupService groupService = new GroupService(); List<Group> groups = groupService.Queryable().Where( a => a.GroupType.Guid.Equals( Rock.SystemGuid.GroupType.GROUPTYPE_EVENTATTENDEES ) ).OrderBy( a => a.Name ).ToList(); groups.Insert( 0, new Group { Id = None.Id, Name = None.Text } ); ddlEventGroup.DataSource = groups; ddlEventGroup.DataBind(); PersonService personService = new PersonService(); List<Person> persons = personService.Queryable().OrderBy( a => a.NickName ).ThenBy( a => a.LastName ).ToList(); persons.Insert( 0, new Person { Id = None.Id, GivenName = None.Text } ); ddlContactPerson.DataSource = persons; ddlContactPerson.DataBind(); CampusService campusService = new CampusService(); cpCampuses.Campuses = campusService.Queryable().OrderBy( a => a.Name ).ToList(); ; // Controls on Ad Child Panel MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService(); var adtypes = marketingCampaignAdTypeService.Queryable().OrderBy( a => a.Name ).ToList(); ddlMarketingCampaignAdType.DataSource = adtypes; ddlMarketingCampaignAdType.DataBind(); }
/// <summary> /// Shows the edit. /// </summary> /// <param name="marketingCampaignAdTypeId">The marketing campaign ad type id.</param> protected void ShowEdit( int marketingCampaignAdTypeId ) { pnlList.Visible = false; pnlDetails.Visible = true; MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService(); MarketingCampaignAdType marketingCampaignAdType = marketingCampaignAdTypeService.Get( marketingCampaignAdTypeId ); bool readOnly = false; AttributesState = new List<Attribute>().ToDto(); if ( marketingCampaignAdType != null ) { hfMarketingCampaignAdTypeId.Value = marketingCampaignAdType.Id.ToString(); tbName.Text = marketingCampaignAdType.Name; ddlDateRangeType.SelectedValue = ( (int)marketingCampaignAdType.DateRangeType ).ToString(); AttributeService attributeService = new AttributeService(); var qry = attributeService.GetByEntityTypeId( new MarketingCampaignAd().TypeId ).AsQueryable() .Where( a => a.EntityTypeQualifierColumn.Equals( "MarketingCampaignAdTypeId", StringComparison.OrdinalIgnoreCase ) && a.EntityTypeQualifierValue.Equals( marketingCampaignAdType.Id.ToString() ) ); AttributesState = qry.ToList().ToDto(); readOnly = marketingCampaignAdType.IsSystem; if ( marketingCampaignAdType.IsSystem ) { lActionTitle.Text = ActionTitle.View( MarketingCampaignAdType.FriendlyTypeName ); btnCancel.Text = "Close"; } else { lActionTitle.Text = ActionTitle.Edit( MarketingCampaignAdType.FriendlyTypeName ); btnCancel.Text = "Cancel"; } } else { lActionTitle.Text = ActionTitle.Add( MarketingCampaignAdType.FriendlyTypeName ); hfMarketingCampaignAdTypeId.Value = 0.ToString(); tbName.Text = string.Empty; } iconIsSystem.Visible = readOnly; btnSave.Visible = !readOnly; BindMarketingCampaignAdAttributeTypeGrid(); }
/// <summary> /// Handles the Delete event of the gMarketingCampaignAdType 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 gMarketingCampaignAdType_Delete( object sender, RowEventArgs e ) { MarketingCampaignAdTypeService marketingCampaignAdTypeService = new MarketingCampaignAdTypeService(); int marketingCampaignAdTypeId = (int)e.RowKeyValue; MarketingCampaignAdType marketingCampaignAdType = marketingCampaignAdTypeService.Get( marketingCampaignAdTypeId ); string errorMessage; if ( !marketingCampaignAdTypeService.CanDelete( marketingCampaignAdType, out errorMessage ) ) { mdGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } if ( CurrentBlock != null ) { marketingCampaignAdTypeService.Delete( marketingCampaignAdType, CurrentPersonId ); marketingCampaignAdTypeService.Save( marketingCampaignAdType, 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 ) { 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 ); // check for duplicates if ( marketingCampaignAdTypeService.Queryable().Count( a => a.Name.Equals( marketingCampaignAdType.Name, StringComparison.OrdinalIgnoreCase ) && !a.Id.Equals( marketingCampaignAdType.Id ) ) > 0 ) { tbName.ShowErrorMessage( WarningMessage.DuplicateFoundMessage( "name", MarketingCampaignAdType.FriendlyTypeName ) ); return; } 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(); var qry = attributeService.GetByEntityTypeId( new MarketingCampaignAd().TypeId ).AsQueryable() .Where( a => a.EntityTypeQualifierColumn.Equals( "MarketingCampaignAdTypeId", StringComparison.OrdinalIgnoreCase ) && a.EntityTypeQualifierValue.Equals( marketingCampaignAdType.Id.ToString() ) ); var deletedAttributes = from attr in qry where !( from d in AttributesState select d.Guid ).Contains( attr.Guid ) select attr; deletedAttributes.ToList().ForEach( a => { var attr = attributeService.Get( a.Guid ); attributeService.Delete( attr, CurrentPersonId ); attributeService.Save( attr, CurrentPersonId ); } ); // add/update the AdTypes that are assigned in the UI foreach ( var attributeState in AttributesState ) { Attribute attribute = qry.FirstOrDefault( a => a.Guid.Equals( attributeState.Guid ) ); if ( attribute == null ) { attribute = attributeState.ToModel(); attributeService.Add( attribute, CurrentPersonId ); } else { attributeState.Id = attribute.Id; attributeState.CopyToModel( attribute ); } attribute.EntityTypeQualifierColumn = "MarketingCampaignAdTypeId"; attribute.EntityTypeQualifierValue = marketingCampaignAdType.Id.ToString(); attribute.EntityTypeId = Rock.Web.Cache.EntityTypeCache.Read( new MarketingCampaignAd().TypeName ).Id; attributeService.Save( attribute, CurrentPersonId ); } } ); BindGrid(); pnlDetails.Visible = false; pnlList.Visible = true; }