Disco.Services.Documents.ManagedGroups.DocumentTemplateUsersManagedGroup.DetermineMembers C# (CSharp) Method

DetermineMembers() public method

public DetermineMembers ( DiscoDataContext Database ) : IEnumerable
Database Disco.Data.Repository.DiscoDataContext
return IEnumerable
        public override IEnumerable<string> DetermineMembers(DiscoDataContext Database)
        {
            switch (DocumentTemplateScope)
            {
                case DocumentTemplate.DocumentTemplateScopes.Device:
                    if (Configuration.FilterBeginDate.HasValue)
                    {
                        return Database.Devices
                            .Where(d => d.AssignedUserId != null && d.DeviceAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
                            .Select(d => d.AssignedUserId);
                    }
                    else
                    {
                        return Database.Devices
                            .Where(d => d.AssignedUserId != null && d.DeviceAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .Select(d => d.AssignedUserId);
                    }
                case DocumentTemplate.DocumentTemplateScopes.Job:
                    if (Configuration.FilterBeginDate.HasValue)
                    {
                        return Database.Jobs
                            .Where(j => j.UserId != null && j.JobAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
                            .Select(j => j.UserId)
                            .Distinct();
                    }
                    else
                    {
                        return Database.Jobs
                            .Where(j => j.UserId != null && j.JobAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .Select(j => j.UserId)
                            .Distinct();
                    }
                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))
                            .Select(u => u.UserId);
                    }
                    else
                    {
                        return Database.Users
                            .Where(u => u.UserAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId))
                            .Select(u => u.UserId);
                    }
                default:
                    return Enumerable.Empty<string>();
            }
        }