private void ProcessRepositoryEvent(RepositoryMonitorEvent Event)
{
var userFlagAssignment = (UserFlagAssignment)Event.Entity;
switch (Event.EventType)
{
case RepositoryMonitorEventType.Added:
if (Configuration.FilterBeginDate.HasValue)
{
if (!userFlagAssignment.RemovedDate.HasValue && userFlagAssignment.AddedDate >= Configuration.FilterBeginDate)
{
AddMember(userFlagAssignment.UserId);
}
}
else
{
if (!userFlagAssignment.RemovedDate.HasValue)
{
AddMember(userFlagAssignment.UserId);
}
}
break;
case RepositoryMonitorEventType.Modified:
if (Configuration.FilterBeginDate.HasValue)
{
if (userFlagAssignment.AddedDate >= Configuration.FilterBeginDate)
{
if (userFlagAssignment.RemovedDate.HasValue)
{
RemoveMember(userFlagAssignment.UserId);
}
else
{
AddMember(userFlagAssignment.UserId);
}
}
}
else
{
if (userFlagAssignment.RemovedDate.HasValue)
{
RemoveMember(userFlagAssignment.UserId);
}
else
{
AddMember(userFlagAssignment.UserId);
}
}
break;
case RepositoryMonitorEventType.Deleted:
string userId = userFlagAssignment.UserId;
// Remove the user if no other (non-removed) assignments exist.
RemoveMember(userId, (database) =>
{
if (Configuration.FilterBeginDate.HasValue)
{
if (database.UserFlagAssignments.Any(a => a.UserFlagId == UserFlagId && a.UserId == userId && !a.RemovedDate.HasValue && a.AddedDate >= Configuration.FilterBeginDate))
{
return null;
}
else
{
return new string[] { userId };
}
}
else
{
if (database.UserFlagAssignments.Any(a => a.UserFlagId == UserFlagId && a.UserId == userId && !a.RemovedDate.HasValue))
{
return null;
}
else
{
return new string[] { userId };
}
}
});
break;
}
}