Disco.Services.Documents.ManagedGroups.DocumentTemplateDevicesManagedGroup.ProcessDeviceAssignmentRepositoryEvent C# (CSharp) Method

ProcessDeviceAssignmentRepositoryEvent() private method

private ProcessDeviceAssignmentRepositoryEvent ( RepositoryMonitorEvent Event ) : void
Event RepositoryMonitorEvent
return void
        private void ProcessDeviceAssignmentRepositoryEvent(RepositoryMonitorEvent Event)
        {
            var device = (Device)Event.Entity;
            var deviceSerialNumber = device.SerialNumber;
            var deviceAccountId = device.DeviceDomainId;

            if (ActiveDirectory.IsValidDomainAccountId(deviceAccountId))
            {
                var deviceCurrentAssignedUserId = device.AssignedUserId;
                var devicePreviousAssignedUserId = Event.GetPreviousPropertyValue<string>("AssignedUserId");

                Event.ExecuteAfterCommit(e =>
                {
                    bool previousUserHasTemplate = false;
                    bool currentUserHasTemplate = false;

                    if (devicePreviousAssignedUserId != null)
                    {
                        if (Configuration.FilterBeginDate.HasValue)
                        {
                            previousUserHasTemplate = e.Database.Users
                                .Where(u => u.UserId == devicePreviousAssignedUserId && u.UserAttachments.Any(ua => ua.DocumentTemplateId == this.DocumentTemplateId && ua.Timestamp >= Configuration.FilterBeginDate))
                                .Any();
                        }
                        else
                        {
                            previousUserHasTemplate = e.Database.Users
                                .Where(u => u.UserId == devicePreviousAssignedUserId && u.UserAttachments.Any(ua => ua.DocumentTemplateId == this.DocumentTemplateId))
                                .Any();
                        }
                    }

                    if (deviceCurrentAssignedUserId != null)
                    {
                        if (Configuration.FilterBeginDate.HasValue)
                        {
                            currentUserHasTemplate = e.Database.Users
                                .Where(u => u.UserId == deviceCurrentAssignedUserId && u.UserAttachments.Any(ua => ua.DocumentTemplateId == this.DocumentTemplateId && ua.Timestamp >= Configuration.FilterBeginDate))
                                .Any();
                        }
                        else
                        {
                            currentUserHasTemplate = e.Database.Users
                                .Where(u => u.UserId == deviceCurrentAssignedUserId && u.UserAttachments.Any(ua => ua.DocumentTemplateId == this.DocumentTemplateId))
                                .Any();
                        }
                    }

                    if (!previousUserHasTemplate && currentUserHasTemplate)
                        AddMember(deviceSerialNumber, (database) => new string[] { deviceAccountId + "$" });
                    else if (previousUserHasTemplate && !currentUserHasTemplate)
                        RemoveMember(deviceSerialNumber, (database) => new string[] { deviceAccountId + "$" });
                });
            }
        }