Disco.Services.Users.UserFlags.UserFlagUsersManagedGroup.ProcessRepositoryEvent C# (CSharp) Method

ProcessRepositoryEvent() private method

private ProcessRepositoryEvent ( RepositoryMonitorEvent Event ) : void
Event RepositoryMonitorEvent
return void
        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;
            }
        }