本文整理汇总了C#中Rock.Model.CategoryService类的典型用法代码示例。如果您正苦于以下问题:C# CategoryService类的具体用法?C# CategoryService怎么用?C# CategoryService使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
CategoryService类属于Rock.Model命名空间,在下文中一共展示了CategoryService类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetByCategoryIds
/// <summary>
/// Returns a collection of active <see cref="Rock.Model.PrayerRequest">PrayerRequests</see> that
/// are in a specified <see cref="Rock.Model.Category"/> or any of its subcategories.
/// </summary>
/// <param name="categoryIds">A <see cref="System.Collections.Generic.List{Int32}"/> of
/// the <see cref="Rock.Model.Category"/> IDs to retrieve PrayerRequests for.</param>
/// <param name="onlyApproved">set false to include un-approved requests.</param>
/// <param name="onlyUnexpired">set false to include expired requests.</param>
/// <returns>An enumerable collection of <see cref="Rock.Model.PrayerRequest"/> that
/// are in the specified <see cref="Rock.Model.Category"/> or any of its subcategories.</returns>
public IEnumerable<PrayerRequest> GetByCategoryIds( List<int> categoryIds, bool onlyApproved = true, bool onlyUnexpired = true )
{
PrayerRequest prayerRequest = new PrayerRequest();
Type type = prayerRequest.GetType();
var prayerRequestEntityTypeId = Rock.Web.Cache.EntityTypeCache.GetId( type );
// Get all PrayerRequest category Ids that are the **parent or child** of the given categoryIds.
CategoryService categoryService = new CategoryService( (RockContext)Context );
IEnumerable<int> expandedCategoryIds = categoryService.GetByEntityTypeId( prayerRequestEntityTypeId )
.Where( c => categoryIds.Contains( c.Id ) || categoryIds.Contains( c.ParentCategoryId ?? -1 ) )
.Select( a => a.Id );
// Now find the active PrayerRequests that have any of those category Ids.
var list = Queryable( "RequestedByPersonAlias.Person" ).Where( p => p.IsActive == true && expandedCategoryIds.Contains( p.CategoryId ?? -1 ) );
if ( onlyApproved )
{
list = list.Where( p => p.IsApproved == true );
}
if ( onlyUnexpired )
{
list = list.Where( p => RockDateTime.Today <= p.ExpirationDate );
}
return list;
}
示例2: FormatValue
/// <summary>
/// Returns the field's current value(s)
/// </summary>
/// <param name="parentControl">The parent control.</param>
/// <param name="value">Information about the value</param>
/// <param name="configurationValues">The configuration values.</param>
/// <param name="condensed">Flag indicating if the value should be condensed (i.e. for use in a grid column)</param>
/// <returns></returns>
public override string FormatValue( Control parentControl, string value, Dictionary<string, ConfigurationValue> configurationValues, bool condensed )
{
string formattedValue = string.Empty;
if ( !string.IsNullOrWhiteSpace( value ) )
{
var guids = value.SplitDelimitedValues();
var categories = new CategoryService( new RockContext() ).Queryable().Where( a => guids.Contains( a.Guid.ToString() ) );
if ( categories.Any() )
{
formattedValue = string.Join( ", ", ( from category in categories select category.Name ).ToArray() );
}
}
return base.FormatValue( parentControl, formattedValue, null, condensed );
}
示例3: gfFilter_DisplayFilterValue
/// <summary>
/// Handles displaying the stored filter values.
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The e as DisplayFilterValueArgs (hint: e.Key and e.Value).</param>
protected void gfFilter_DisplayFilterValue( object sender, GridFilter.DisplayFilterValueArgs e )
{
switch ( e.Key )
{
case "Prayer Category":
int categoryId = e.Value.AsIntegerOrNull() ?? All.Id;
if ( categoryId == All.Id )
{
e.Value = "All";
}
else
{
var service = new CategoryService( new RockContext() );
var category = service.Get( categoryId );
if ( category != null )
{
e.Value = category.Name;
}
}
break;
}
}
示例4: MapNotes
/// <summary>
/// Maps the notes.
/// </summary>
/// <param name="tableData">The table data.</param>
public void MapNotes( IQueryable<Row> tableData )
{
var lookupContext = new RockContext();
var categoryService = new CategoryService( lookupContext );
var personService = new PersonService( lookupContext );
var noteTypes = new NoteTypeService( lookupContext ).Queryable().AsNoTracking().ToList();
var personalNoteType = noteTypes.FirstOrDefault( nt => nt.Guid == new Guid( Rock.SystemGuid.NoteType.PERSON_TIMELINE_NOTE ) );
var importedUsers = new UserLoginService( lookupContext ).Queryable().AsNoTracking()
.Where( u => u.ForeignId != null )
.ToDictionary( t => t.ForeignId, t => t.PersonId );
var noteList = new List<Note>();
int completed = 0;
int totalRows = tableData.Count();
int percentage = ( totalRows - 1 ) / 100 + 1;
ReportProgress( 0, string.Format( "Verifying note import ({0:N0} found).", totalRows ) );
foreach ( var row in tableData.Where( r => r != null ) )
{
string text = row["Note_Text"] as string;
int? individualId = row["Individual_ID"] as int?;
int? householdId = row["Household_ID"] as int?;
var noteTypeActive = row["NoteTypeActive"] as Boolean?;
bool noteArchived = false;
if ( row.Columns.FirstOrDefault( v => v.Name.Equals( "IsInactive" ) ) != null )
{
/* =====================================================================
* the NoteArchived column *should* work, but OrcaMDF won't read it...
* instead check for a manually added column: IsInactive int null
* var noteActive = row["NoteArchived"] as Boolean?;
* if ( noteActive == null ) throw new NullReferenceException();
/* ===================================================================== */
var rowInactiveValue = row["IsInactive"] as int?;
noteArchived = rowInactiveValue.Equals( 1 );
}
var personKeys = GetPersonKeys( individualId, householdId );
if ( personKeys != null && !string.IsNullOrWhiteSpace( text ) && noteTypeActive == true && !noteArchived )
{
DateTime? dateCreated = row["NoteCreated"] as DateTime?;
string noteType = row["Note_Type_Name"] as string;
var note = new Note();
note.CreatedDateTime = dateCreated;
note.EntityId = personKeys.PersonId;
// These replace methods don't like being chained together
text = Regex.Replace( text, @"\t|\ ", " " );
text = text.Replace( "-", "-" );
text = text.Replace( "<", "<" );
text = text.Replace( ">", ">" );
text = text.Replace( "&", "&" );
text = text.Replace( """, @"""" );
text = text.Replace( "
", string.Empty );
note.Text = text.Trim();
int? userId = row["NoteCreatedByUserID"] as int?;
if ( userId != null && importedUsers.ContainsKey( userId ) )
{
var userKeys = ImportedPeople.FirstOrDefault( p => p.PersonId == (int)importedUsers[userId] );
if ( userKeys != null )
{
note.CreatedByPersonAliasId = userKeys.PersonAliasId;
}
}
int? matchingNoteTypeId = null;
if ( !noteType.StartsWith( "General", StringComparison.InvariantCultureIgnoreCase ) )
{
matchingNoteTypeId = noteTypes.Where( nt => nt.Name == noteType ).Select( i => (int?)i.Id ).FirstOrDefault();
}
else
{
matchingNoteTypeId = personalNoteType.Id;
}
if ( matchingNoteTypeId != null )
{
note.NoteTypeId = (int)matchingNoteTypeId;
}
else
{
// create the note type
var newNoteType = new NoteType();
newNoteType.EntityTypeId = personalNoteType.EntityTypeId;
newNoteType.EntityTypeQualifierColumn = string.Empty;
newNoteType.EntityTypeQualifierValue = string.Empty;
newNoteType.UserSelectable = true;
newNoteType.IsSystem = false;
newNoteType.Name = noteType;
newNoteType.Order = 0;
//.........这里部分代码省略.........
示例5: btnSave_Click
/// <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 )
{
GroupType groupType;
var rockContext = new RockContext();
GroupTypeService groupTypeService = new GroupTypeService( rockContext );
GroupTypeRoleService groupTypeRoleService = new GroupTypeRoleService( rockContext );
AttributeService attributeService = new AttributeService( rockContext );
AttributeQualifierService qualifierService = new AttributeQualifierService( rockContext );
CategoryService categoryService = new CategoryService( rockContext );
GroupScheduleExclusionService scheduleExclusionService = new GroupScheduleExclusionService( rockContext );
int groupTypeId = int.Parse( hfGroupTypeId.Value );
if ( groupTypeId == 0 )
{
groupType = new GroupType();
groupTypeService.Add( groupType );
}
else
{
groupType = groupTypeService.Get( groupTypeId );
// selected roles
var selectedRoleGuids = GroupTypeRolesState.Select( r => r.Guid );
foreach ( var role in groupType.Roles.Where( r => !selectedRoleGuids.Contains( r.Guid ) ).ToList() )
{
groupType.Roles.Remove( role );
groupTypeRoleService.Delete( role );
}
}
foreach ( var roleState in GroupTypeRolesState )
{
GroupTypeRole role = groupType.Roles.Where( r => r.Guid == roleState.Guid ).FirstOrDefault();
if ( role == null )
{
role = new GroupTypeRole();
groupType.Roles.Add( role );
}
else
{
roleState.Id = role.Id;
roleState.Guid = role.Guid;
}
role.CopyPropertiesFrom( roleState );
}
ScheduleType allowedScheduleTypes = ScheduleType.None;
foreach( ListItem li in cblScheduleTypes.Items )
{
if ( li.Selected )
{
allowedScheduleTypes = allowedScheduleTypes | (ScheduleType)li.Value.AsInteger();
}
}
GroupLocationPickerMode locationSelectionMode = GroupLocationPickerMode.None;
foreach ( ListItem li in cblLocationSelectionModes.Items )
{
if ( li.Selected )
{
locationSelectionMode = locationSelectionMode | (GroupLocationPickerMode)li.Value.AsInteger();
}
}
groupType.Name = tbName.Text;
groupType.Description = tbDescription.Text;
groupType.GroupTerm = tbGroupTerm.Text;
groupType.GroupMemberTerm = tbGroupMemberTerm.Text;
groupType.ShowInGroupList = cbShowInGroupList.Checked;
groupType.ShowInNavigation = cbShowInNavigation.Checked;
groupType.IconCssClass = tbIconCssClass.Text;
groupType.TakesAttendance = cbTakesAttendance.Checked;
groupType.SendAttendanceReminder = cbSendAttendanceReminder.Checked;
groupType.AttendanceRule = ddlAttendanceRule.SelectedValueAsEnum<AttendanceRule>();
groupType.AttendancePrintTo = ddlPrintTo.SelectedValueAsEnum<PrintTo>();
groupType.AllowedScheduleTypes = allowedScheduleTypes;
groupType.LocationSelectionMode = locationSelectionMode;
groupType.GroupTypePurposeValueId = ddlGroupTypePurpose.SelectedValueAsInt();
groupType.AllowMultipleLocations = cbAllowMultipleLocations.Checked;
groupType.InheritedGroupTypeId = gtpInheritedGroupType.SelectedGroupTypeId;
groupType.EnableLocationSchedules = cbEnableLocationSchedules.Checked;
groupType.ChildGroupTypes = new List<GroupType>();
groupType.ChildGroupTypes.Clear();
foreach ( var item in ChildGroupTypesDictionary )
{
var childGroupType = groupTypeService.Get( item.Key );
if ( childGroupType != null )
{
groupType.ChildGroupTypes.Add( childGroupType );
}
}
//.........这里部分代码省略.........
示例6: BindCommentsGrid
/// <summary>
/// Binds the comments grid.
/// </summary>
private void BindCommentsGrid()
{
var rockContext = new RockContext();
var noteTypeService = new NoteTypeService( rockContext );
var noteType = noteTypeService.Get( Rock.SystemGuid.NoteType.PRAYER_COMMENT.AsGuid() );
var noteService = new NoteService( rockContext );
var prayerComments = noteService.GetByNoteTypeId( noteType.Id );
SortProperty sortProperty = gPrayerComments.SortProperty;
// Filter by Category. First see if there is a Block Setting, otherwise use the Grid Filter
CategoryCache categoryFilter = null;
var blockCategoryGuid = GetAttributeValue( "PrayerRequestCategory" ).AsGuidOrNull();
if ( blockCategoryGuid.HasValue )
{
categoryFilter = CategoryCache.Read( blockCategoryGuid.Value );
}
if ( categoryFilter == null && catpPrayerCategoryFilter.Visible )
{
int? filterCategoryId = catpPrayerCategoryFilter.SelectedValue.AsIntegerOrNull();
if ( filterCategoryId.HasValue )
{
categoryFilter = CategoryCache.Read( filterCategoryId.Value );
}
}
if ( categoryFilter != null )
{
// if filtered by category, only show comments for prayer requests in that category or any of its decendent categories
var categoryService = new CategoryService( rockContext );
var categories = new CategoryService( rockContext ).GetAllDescendents( categoryFilter.Guid ).Select( a => a.Id ).ToList();
var prayerRequestQry = new PrayerRequestService( rockContext ).Queryable().Where( a => a.CategoryId.HasValue &&
( a.Category.Guid == categoryFilter.Guid || categories.Contains( a.CategoryId.Value ) ) )
.Select( a => a.Id );
prayerComments = prayerComments.Where( a => a.EntityId.HasValue && prayerRequestQry.Contains( a.EntityId.Value ) );
}
// Filter by Date Range
if ( drpDateRange.LowerValue.HasValue )
{
DateTime startDate = drpDateRange.LowerValue.Value.Date;
prayerComments = prayerComments.Where( a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value >= startDate );
}
if ( drpDateRange.UpperValue.HasValue )
{
// Add one day in order to include everything up to the end of the selected datetime.
var endDate = drpDateRange.UpperValue.Value.AddDays( 1 );
prayerComments = prayerComments.Where( a => a.CreatedDateTime.HasValue && a.CreatedDateTime.Value < endDate );
}
// Sort by the given property otherwise sort by the EnteredDate
if ( sortProperty != null )
{
gPrayerComments.DataSource = prayerComments.Sort( sortProperty ).ToList();
}
else
{
gPrayerComments.DataSource = prayerComments.OrderByDescending( n => n.CreatedDateTime ).ToList();
}
gPrayerComments.DataBind();
}
示例7: GetUnorderedCategories
private IQueryable<Category> GetUnorderedCategories()
{
string selectedValue = rFilter.GetUserPreference( "EntityType" );
var attributeEntityTypeId = EntityTypeCache.Read( typeof( Rock.Model.Attribute ) ).Id;
var queryable = new CategoryService( new RockContext() ).Queryable()
.Where( c => c.EntityTypeId == attributeEntityTypeId );
if ( !string.IsNullOrWhiteSpace( selectedValue ) )
{
if ( selectedValue == "0" )
{
queryable = queryable
.Where( c =>
c.EntityTypeQualifierColumn == "EntityTypeId" &&
c.EntityTypeQualifierValue == null );
}
else
{
queryable = queryable
.Where( c =>
c.EntityTypeQualifierColumn == "EntityTypeId" &&
c.EntityTypeQualifierValue == selectedValue );
}
}
return queryable;
}
示例8: rGrid_Delete
/// <summary>
/// Handles the Delete event of the rGrid 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 rGrid_Delete( object sender, RowEventArgs e )
{
var rockContext = new RockContext();
var service = new CategoryService( rockContext );
var category = service.Get( (int)rGrid.DataKeys[e.RowIndex]["id"] );
if ( category != null )
{
string errorMessage = string.Empty;
if ( service.CanDelete( category, out errorMessage ) )
{
service.Delete( category );
rockContext.SaveChanges();
}
else
{
nbMessage.Text = errorMessage;
nbMessage.Visible = true;
}
}
BindGrid();
}
示例9: GetUnorderedCategories
private IQueryable<Category> GetUnorderedCategories()
{
var queryable = new CategoryService().Queryable().Where( c => c.EntityTypeId == _entityTypeId );
if (_parentCategoryId.HasValue)
{
queryable = queryable.Where( c => c.ParentCategoryId == _parentCategoryId );
}
else
{
queryable = queryable.Where( c => c.ParentCategoryId == null );
}
return queryable;
}
示例10: mdDetails_SaveClick
/// <summary>
/// Handles the SaveClick event of the modalDetails 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 mdDetails_SaveClick( object sender, EventArgs e )
{
int categoryId = 0;
if ( hfIdValue.Value != string.Empty && !int.TryParse( hfIdValue.Value, out categoryId ) )
{
categoryId = 0;
}
var service = new CategoryService();
Category category = null;
if ( categoryId != 0 )
{
category = service.Get( categoryId );
}
if ( category == null )
{
category = new Category();
category.EntityTypeId = _entityTypeId;
var lastCategory = GetUnorderedCategories()
.OrderByDescending( c => c.Order ).FirstOrDefault();
category.Order = lastCategory != null ? lastCategory.Order + 1 : 0;
service.Add( category, CurrentPersonId );
}
category.Name = tbName.Text;
category.Description = tbDescription.Text;
category.ParentCategoryId = catpParentCategory.SelectedValueAsInt();
category.IconCssClass = tbIconCssClass.Text;
List<int> orphanedBinaryFileIdList = new List<int>();
if ( category.IsValid )
{
RockTransactionScope.WrapTransaction( () =>
{
service.Save( category, CurrentPersonId );
BinaryFileService binaryFileService = new BinaryFileService();
foreach ( int binaryFileId in orphanedBinaryFileIdList )
{
var binaryFile = binaryFileService.Get( binaryFileId );
if ( binaryFile != null )
{
// marked the old images as IsTemporary so they will get cleaned up later
binaryFile.IsTemporary = true;
binaryFileService.Save( binaryFile, CurrentPersonId );
}
}
} );
hfIdValue.Value = string.Empty;
mdDetails.Hide();
BindGrid();
}
}
示例11: gCategories_Delete
/// <summary>
/// Handles the Delete event of the gCategories 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 gCategories_Delete( object sender, RowEventArgs e )
{
var service = new CategoryService();
var category = service.Get( (int)gCategories.DataKeys[e.RowIndex]["id"] );
if ( category != null )
{
string errorMessage = string.Empty;
if ( service.CanDelete( category, out errorMessage ) )
{
service.Delete( category, CurrentPersonId );
service.Save( category, CurrentPersonId );
}
else
{
nbMessage.Text = errorMessage;
nbMessage.Visible = true;
}
}
BindGrid();
}
示例12: ShowDetail
/// <summary>
/// Shows the detail.
/// </summary>
/// <param name="categoryId">The category identifier.</param>
/// <param name="parentCategoryId">The parent category id.</param>
public void ShowDetail( int categoryId, int? parentCategoryId )
{
pnlDetails.Visible = false;
var categoryService = new CategoryService( new RockContext() );
Category category = null;
if ( !categoryId.Equals( 0 ) )
{
category = categoryService.Get( categoryId );
}
if ( category == null )
{
category = new Category { Id = 0, IsSystem = false, ParentCategoryId = parentCategoryId};
// fetch the ParentCategory (if there is one) so that security can check it
category.ParentCategory = categoryService.Get( parentCategoryId ?? 0 );
category.EntityTypeId = entityTypeId;
category.EntityTypeQualifierColumn = entityTypeQualifierProperty;
category.EntityTypeQualifierValue = entityTypeQualifierValue;
}
if (category.EntityTypeId != entityTypeId || !category.IsAuthorized( Authorization.VIEW, CurrentPerson ) )
{
pnlDetails.Visible = false;
return;
}
pnlDetails.Visible = true;
hfCategoryId.Value = category.Id.ToString();
// render UI based on Authorized and IsSystem
bool readOnly = false;
nbEditModeMessage.Text = string.Empty;
// if the person is Authorized to EDIT the category, or has EDIT for the block
var canEdit = category.IsAuthorized( Authorization.EDIT, CurrentPerson ) || this.IsUserAuthorized(Authorization.EDIT);
if ( !canEdit )
{
readOnly = true;
nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( Category.FriendlyTypeName );
}
if ( category.IsSystem )
{
readOnly = true;
nbEditModeMessage.Text = EditModeMessage.ReadOnlySystem( Category.FriendlyTypeName );
}
btnSecurity.Visible = category.IsAuthorized( Authorization.ADMINISTRATE, CurrentPerson );
btnSecurity.Title = category.Name;
btnSecurity.EntityId = category.Id;
if ( readOnly )
{
btnEdit.Visible = false;
btnDelete.Visible = false;
ShowReadonlyDetails( category );
}
else
{
btnEdit.Visible = true;
string errorMessage = string.Empty;
btnDelete.Visible = true;
btnDelete.Enabled = categoryService.CanDelete(category, out errorMessage);
btnDelete.ToolTip = btnDelete.Enabled ? string.Empty : errorMessage;
if ( category.Id > 0 )
{
ShowReadonlyDetails( category );
}
else
{
ShowEditDetails( category );
}
}
if ( btnDelete.Visible && btnDelete.Enabled )
{
btnDelete.Attributes["onclick"] = string.Format( "javascript: return Rock.dialogs.confirmDelete(event, '{0}');", Category.FriendlyTypeName.ToLower() );
}
}
示例13: btnSave_Click
/// <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 )
{
Category category;
var rockContext = new RockContext();
CategoryService categoryService = new CategoryService( rockContext );
int categoryId = hfCategoryId.ValueAsInt();
if ( categoryId == 0 )
{
category = new Category();
category.IsSystem = false;
category.EntityTypeId = entityTypeId;
category.EntityTypeQualifierColumn = entityTypeQualifierProperty;
category.EntityTypeQualifierValue = entityTypeQualifierValue;
category.Order = 0;
categoryService.Add( category );
}
else
{
category = categoryService.Get( categoryId );
}
category.Name = tbName.Text;
category.ParentCategoryId = cpParentCategory.SelectedValueAsInt();
category.IconCssClass = tbIconCssClass.Text;
category.HighlightColor = tbHighlightColor.Text;
List<int> orphanedBinaryFileIdList = new List<int>();
if ( !Page.IsValid )
{
return;
}
if ( !category.IsValid )
{
// Controls will render the error messages
return;
}
BinaryFileService binaryFileService = new BinaryFileService( rockContext );
foreach ( int binaryFileId in orphanedBinaryFileIdList )
{
var binaryFile = binaryFileService.Get( binaryFileId );
if ( binaryFile != null )
{
// marked the old images as IsTemporary so they will get cleaned up later
binaryFile.IsTemporary = true;
}
}
rockContext.SaveChanges();
CategoryCache.Flush( category.Id );
var qryParams = new Dictionary<string, string>();
qryParams["CategoryId"] = category.Id.ToString();
NavigateToPage( RockPage.Guid, qryParams );
}
示例14: btnEdit_Click
/// <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 )
{
CategoryService service = new CategoryService( new RockContext() );
Category category = service.Get( hfCategoryId.ValueAsInt() );
ShowEditDetails( category );
}
示例15: btnDelete_Click
/// <summary>
/// Handles the Click event of the btnDelete 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 btnDelete_Click( object sender, EventArgs e )
{
int? parentCategoryId = null;
var rockContext = new RockContext();
var categoryService = new CategoryService( rockContext );
var category = categoryService.Get( int.Parse( hfCategoryId.Value ) );
if ( category != null )
{
string errorMessage;
if ( !categoryService.CanDelete( category, out errorMessage ) )
{
ShowReadonlyDetails( category );
mdDeleteWarning.Show( errorMessage, ModalAlertType.Information );
}
else
{
parentCategoryId = category.ParentCategoryId;
CategoryCache.Flush( category.Id );
categoryService.Delete( category );
rockContext.SaveChanges();
// reload page, selecting the deleted category's parent
var qryParams = new Dictionary<string, string>();
if ( parentCategoryId != null )
{
qryParams["CategoryId"] = parentCategoryId.ToString();
}
NavigateToPage( RockPage.Guid, qryParams );
}
}
}