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

DeviceUserContainAttachment() private method

private DeviceUserContainAttachment ( DiscoDataContext Database, string UserId, string>.List &Devices ) : bool
Database Disco.Data.Repository.DiscoDataContext
UserId string
Devices string>.List
return bool
        private bool DeviceUserContainAttachment(DiscoDataContext Database, string UserId, out List<Tuple<string, string>> Devices)
        {
            Tuple<bool, IEnumerable<Tuple<string, string>>> result;

            if (Configuration.FilterBeginDate.HasValue)
            {
                result = Database.Users
                    .Where(u => u.UserId == UserId)
                    .Select(u => Tuple.Create(
                        u.UserAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate),
                        u.DeviceUserAssignments
                            .Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
                            .Select(dua => new Tuple<string, string>(dua.Device.DeviceDomainId, dua.Device.SerialNumber))))
                    .FirstOrDefault();
            }
            else
            {
                result = Database.Users
                    .Where(u => u.UserId == UserId)
                    .Select(u => Tuple.Create(
                        u.UserAttachments.Any(a => a.DocumentTemplateId == this.DocumentTemplateId),
                        u.DeviceUserAssignments
                            .Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
                            .Select(dua => new Tuple<string, string>(dua.Device.DeviceDomainId, dua.Device.SerialNumber))))
                    .FirstOrDefault();
            }

            if (result == null)
            {
                Devices = null;
                return false;
            }
            else
            {
                Devices = result.Item2
                    .Where(d => ActiveDirectory.IsValidDomainAccountId(d.Item1))
                    .Select(d => Tuple.Create(d.Item1 + "$", d.Item2))
                    .ToList();
                return result.Item1;
            }
        }