Skip to content

Commit

Permalink
- (Mobile) Reminder blocks polish.
Browse files Browse the repository at this point in the history
  • Loading branch information
bradencohen committed Jun 6, 2023
1 parent 9423687 commit 83fa2e0
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 31 deletions.
9 changes: 7 additions & 2 deletions Rock/Blocks/Types/Mobile/Reminders/ReminderDashboard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,11 @@ private List<FilteredReminderOptionBag> GetFilteredReminderOptionBags( RockConte
Name = "All",
CssClass = "reminders-all",
IconClass = "fa fa-inbox",
TotalReminderCount = GetTotalRemindersForFilteredType( "", reminders ),
TotalReminderCount = GetTotalRemindersForFilteredType( "all", reminders ),
Parameters = new Dictionary<string, string>
{
["GroupByType"] = true.ToString(),
["CompletionFilter"] = FilterBag.CompletionFilterValue.Incomplete.ToString(),
["CollectionHeader"] = "All"
},
Order = 3
Expand Down Expand Up @@ -283,7 +284,7 @@ private int GetTotalRemindersForFilteredType( string filter, IQueryable<Reminder
if ( filter == "due" )
{
var currentDate = RockDateTime.Now;
reminders = reminders.Where( r => r.ReminderDate <= currentDate );
reminders = reminders.Where( r => r.ReminderDate <= currentDate && !r.IsComplete );
}
// Get the reminders that are upcoming.
else if ( filter == "future" )
Expand All @@ -295,6 +296,10 @@ private int GetTotalRemindersForFilteredType( string filter, IQueryable<Reminder
{
reminders = reminders.Where( r => r.IsComplete );
}
else if( filter == "all" )
{
reminders = reminders.Where( r => !r.IsComplete );
}

return reminders.Count();
}
Expand Down
13 changes: 11 additions & 2 deletions Rock/Blocks/Types/Mobile/Reminders/ReminderEdit.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,14 +199,23 @@ private void CreateReminder( Guid reminderTypeGuid, Guid entityGuid, DateTime re
var reminderService = new ReminderService( rockContext );
var reminderType = new ReminderTypeService( rockContext ).Get( reminderTypeGuid );

IEntity entity = new EntityTypeService( rockContext ).GetEntity( reminderType.EntityTypeId, entityGuid );
if( reminderType == null )
{
return;
}

var entityId = Reflection.GetEntityIdForEntityType( reminderType.EntityType.Id, entityGuid, rockContext );
if( entityId == null )
{
return;
}

//
// Create a new reminder.
//
var reminder = new Reminder
{
EntityId = entity.Id,
EntityId = entityId.Value,
ReminderTypeId = reminderType.Id,
ReminderDate = reminderDate,
Note = note,
Expand Down
29 changes: 21 additions & 8 deletions Rock/Blocks/Types/Mobile/Reminders/ReminderList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,18 @@ private List<ReminderInfoBag> GetReminderBags( Guid personGuid, Guid? entityType
var filteredReminders = FilterRemindersFromFilterBagValues( filter, reminders )
.ToList();


// Order by modified date time if we're limiting to complete reminders.
if( filter.CompletionFilter == FilterBag.CompletionFilterValue.Complete )
if ( filter.CompletionFilter == FilterBag.CompletionFilterValue.Complete )
{
filteredReminders = filteredReminders.OrderByDescending( r => r.ModifiedDateTime )
.ToList();
}
else
{
filteredReminders = filteredReminders.OrderByDescending( r => r.Id )
.ToList();
}

// Convert reminders into reminder bags.
var reminderBags = filteredReminders.Select( r => new ReminderInfoBag
Expand All @@ -160,18 +166,25 @@ private List<ReminderInfoBag> GetReminderBags( Guid personGuid, Guid? entityType
IsComplete = r.IsComplete,
EntityTypeGuid = EntityTypeCache.GetGuid( r.ReminderType.EntityTypeId ).Value,
EntityGuid = Reflection.GetEntityGuidForEntityType( r.ReminderType.EntityType.Id, r.EntityId.ToStringSafe(), true, rockContext ).Value
} )
} );

List<ReminderInfoBag> reminderBagList = new List<ReminderInfoBag>();

// We do this so we can support querying sequential data.
.Skip( startIndex )
.Take( count )
.ToList();
if ( startIndex >= 0 && count > 0 )
{
reminderBags = reminderBags
.Skip( startIndex )
.Take( count );
}

reminderBagList = reminderBags.ToList();

// We need some more data post query (such as a specific photo url generated based on the entity)
// so let's loop over our bags and populate those properties.
reminderBags.ForEach( ( bag ) => PopulateAdditionalPropertiesForReminderInfoBag( bag, personService ) );
reminderBagList.ForEach( ( bag ) => PopulateAdditionalPropertiesForReminderInfoBag( bag, personService ) );

return reminderBags;
return reminderBagList;
}
}

Expand Down Expand Up @@ -236,7 +249,7 @@ private IQueryable<Reminder> FilterRemindersFromFilterBagValues( FilterBag filte
{
reminders = reminders.Where( r => r.IsComplete );
}
else if( filter.CompletionFilter == FilterBag.CompletionFilterValue.Incomplete )
else if ( filter.CompletionFilter == FilterBag.CompletionFilterValue.Incomplete )
{
reminders = reminders.Where( r => !r.IsComplete );
}
Expand Down
19 changes: 0 additions & 19 deletions Rock/Model/Core/EntityType/EntityTypeService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -223,25 +223,6 @@ public IEntity GetEntity( int entityTypeId, int entityId )
return null;
}

/// <summary>
/// Gets an entity by entity type guid and guid..
/// </summary>
/// <param name="entityTypeGuid">The entity type unique identifier.</param>
/// <param name="entityGuid">The entity unique identifier.</param>
/// <returns>IEntity.</returns>
public IEntity GetEntity( Guid entityTypeGuid, Guid entityGuid )
{
var entityTypeId = EntityTypeCache.GetId( entityTypeGuid );
var entityId = Reflection.GetEntityIdForEntityType( entityTypeGuid, entityGuid );

if( entityTypeId == null || entityId == null )
{
return null;
}

return GetEntity( entityTypeId.Value, entityId.Value );
}

/// <summary>
/// Gets an Entity by type and entity Id, without loading the entity into EF ChangeTracking
/// </summary>
Expand Down

0 comments on commit 83fa2e0

Please sign in to comment.