Disco.Services.Documents.ManagedGroups.DocumentTemplateDevicesManagedGroup.DetermineMembers C# (CSharp) Méthode

DetermineMembers() public méthode

public DetermineMembers ( DiscoDataContext Database ) : IEnumerable
Database Disco.Data.Repository.DiscoDataContext
Résultat IEnumerable
        public override IEnumerable<string> DetermineMembers(DiscoDataContext Database)
        {
            switch (DocumentTemplateScope)
            {
                case DocumentTemplate.DocumentTemplateScopes.Device:
                    if (Configuration.FilterBeginDate.HasValue)
                    {
                        return Database.Devices
                            .Where(d => d.DeviceDomainId != null && d.DeviceAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
                            .Select(d => d.DeviceDomainId)
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                    else
                    {
                        return Database.Devices
                            .Where(d => d.DeviceDomainId != null && d.DeviceAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .Select(d => d.DeviceDomainId)
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                case DocumentTemplate.DocumentTemplateScopes.Job:
                    if (Configuration.FilterBeginDate.HasValue)
                    {
                        return Database.Jobs
                            .Where(j => j.Device.DeviceDomainId != null && j.JobAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
                            .Select(j => j.Device.DeviceDomainId)
                            .Distinct()
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                    else
                    {
                        return Database.Jobs
                            .Where(j => j.Device.DeviceDomainId != null && j.JobAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .Select(j => j.Device.DeviceDomainId)
                            .Distinct()
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                case DocumentTemplate.DocumentTemplateScopes.User:
                    if (Configuration.FilterBeginDate.HasValue)
                    {
                        return Database.Users
                            .Where(u => u.UserAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
                            .SelectMany(u => u.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null), (u, dua) => dua.Device.DeviceDomainId)
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                    else
                    {
                        return Database.Users
                            .Where(u => u.UserAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .SelectMany(u => u.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null), (u, dua) => dua.Device.DeviceDomainId)
                            .ToList()
                            .Where(ActiveDirectory.IsValidDomainAccountId)
                            .Select(id => id + "$");
                    }
                default:
                    return Enumerable.Empty<string>();
            }
        }