Bug: EntityFramework does not understand Tuple.Create
This commit is contained in:
@@ -221,22 +221,43 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region Device Scope
|
#region Device Scope
|
||||||
|
private class ContainsAttachmentResult
|
||||||
|
{
|
||||||
|
public string Id;
|
||||||
|
public bool HasAttachment;
|
||||||
|
public string SerialNumber;
|
||||||
|
public IEnumerable<ContainsAttachmentDeviceResult> Devices;
|
||||||
|
}
|
||||||
|
private class ContainsAttachmentDeviceResult
|
||||||
|
{
|
||||||
|
public string Id;
|
||||||
|
public string SerialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
private bool DeviceContainsAttachment(DiscoDataContext Database, string DeviceSerialNumber, out string DeviceAccountId)
|
private bool DeviceContainsAttachment(DiscoDataContext Database, string DeviceSerialNumber, out string DeviceAccountId)
|
||||||
{
|
{
|
||||||
Tuple<string, bool> result;
|
ContainsAttachmentResult result;
|
||||||
|
|
||||||
if (Configuration.FilterBeginDate.HasValue)
|
if (Configuration.FilterBeginDate.HasValue)
|
||||||
{
|
{
|
||||||
result = Database.Devices
|
result = Database.Devices
|
||||||
.Where(d => d.SerialNumber == DeviceSerialNumber && d.DeviceDomainId != null)
|
.Where(d => d.SerialNumber == DeviceSerialNumber && d.DeviceDomainId != null)
|
||||||
.Select(d => Tuple.Create(d.DeviceDomainId, d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate)))
|
.Select(d => new ContainsAttachmentResult()
|
||||||
|
{
|
||||||
|
Id = d.DeviceDomainId,
|
||||||
|
HasAttachment = d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate)
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Database.Devices
|
result = Database.Devices
|
||||||
.Where(d => d.SerialNumber == DeviceSerialNumber && d.DeviceDomainId != null)
|
.Where(d => d.SerialNumber == DeviceSerialNumber && d.DeviceDomainId != null)
|
||||||
.Select(d => Tuple.Create(d.DeviceDomainId, d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId)))
|
.Select(d => new ContainsAttachmentResult()
|
||||||
|
{
|
||||||
|
Id = d.DeviceDomainId,
|
||||||
|
HasAttachment = d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId)
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,14 +268,14 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ActiveDirectory.IsValidDomainAccountId(result.Item1))
|
if (ActiveDirectory.IsValidDomainAccountId(result.Id))
|
||||||
{
|
{
|
||||||
DeviceAccountId = result.Item1 + "$";
|
DeviceAccountId = result.Id + "$";
|
||||||
return result.Item2;
|
return result.HasAttachment;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DeviceAccountId = result.Item1 + "$";
|
DeviceAccountId = result.Id + "$";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -286,26 +307,30 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
#region Job Scope
|
#region Job Scope
|
||||||
private bool JobsContainAttachment(DiscoDataContext Database, int JobId, out string DeviceAccountId, out string DeviceSerialNumber)
|
private bool JobsContainAttachment(DiscoDataContext Database, int JobId, out string DeviceAccountId, out string DeviceSerialNumber)
|
||||||
{
|
{
|
||||||
Tuple<string, string, bool> result;
|
ContainsAttachmentResult result;
|
||||||
|
|
||||||
if (Configuration.FilterBeginDate.HasValue)
|
if (Configuration.FilterBeginDate.HasValue)
|
||||||
{
|
{
|
||||||
result = Database.Jobs
|
result = Database.Jobs
|
||||||
.Where(j => j.Id == JobId && j.Device.DeviceDomainId != null)
|
.Where(j => j.Id == JobId && j.Device.DeviceDomainId != null)
|
||||||
.Select(j => new Tuple<string, string, bool>(
|
.Select(j => new ContainsAttachmentResult()
|
||||||
j.Device.DeviceDomainId,
|
{
|
||||||
j.Device.SerialNumber,
|
Id = j.Device.DeviceDomainId,
|
||||||
j.Device.Jobs.Any(dj => dj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))))
|
SerialNumber = j.Device.SerialNumber,
|
||||||
|
HasAttachment = j.Device.Jobs.Any(dj => dj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Database.Jobs
|
result = Database.Jobs
|
||||||
.Where(j => j.Id == JobId && j.Device.DeviceDomainId != null)
|
.Where(j => j.Id == JobId && j.Device.DeviceDomainId != null)
|
||||||
.Select(j => new Tuple<string, string, bool>(
|
.Select(j => new ContainsAttachmentResult()
|
||||||
j.Device.DeviceDomainId,
|
{
|
||||||
j.Device.SerialNumber,
|
Id = j.Device.DeviceDomainId,
|
||||||
j.Device.Jobs.Any(dj => dj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId))))
|
SerialNumber = j.Device.SerialNumber,
|
||||||
|
HasAttachment = j.Device.Jobs.Any(dj => dj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId))
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,16 +343,16 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ActiveDirectory.IsValidDomainAccountId(result.Item1))
|
if (ActiveDirectory.IsValidDomainAccountId(result.Id))
|
||||||
{
|
{
|
||||||
DeviceAccountId = result.Item1 + "$";
|
DeviceAccountId = result.Id + "$";
|
||||||
DeviceSerialNumber = result.Item2;
|
DeviceSerialNumber = result.SerialNumber;
|
||||||
return result.Item3;
|
return result.HasAttachment;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DeviceAccountId = result.Item1 + "$";
|
DeviceAccountId = result.Id + "$";
|
||||||
DeviceSerialNumber = result.Item2;
|
DeviceSerialNumber = result.SerialNumber;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -365,28 +390,32 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
#region User Scope
|
#region User Scope
|
||||||
private bool DeviceUserContainAttachment(DiscoDataContext Database, string UserId, out List<Tuple<string, string>> Devices)
|
private bool DeviceUserContainAttachment(DiscoDataContext Database, string UserId, out List<Tuple<string, string>> Devices)
|
||||||
{
|
{
|
||||||
Tuple<bool, IEnumerable<Tuple<string, string>>> result;
|
ContainsAttachmentResult result;
|
||||||
|
|
||||||
if (Configuration.FilterBeginDate.HasValue)
|
if (Configuration.FilterBeginDate.HasValue)
|
||||||
{
|
{
|
||||||
result = Database.Users
|
result = Database.Users
|
||||||
.Where(u => u.UserId == UserId)
|
.Where(u => u.UserId == UserId)
|
||||||
.Select(u => Tuple.Create(
|
.Select(u => new ContainsAttachmentResult()
|
||||||
u.UserAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate),
|
{
|
||||||
u.DeviceUserAssignments
|
HasAttachment = u.UserAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate),
|
||||||
|
Devices = u.DeviceUserAssignments
|
||||||
.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
|
.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
|
||||||
.Select(dua => new Tuple<string, string>(dua.Device.DeviceDomainId, dua.Device.SerialNumber))))
|
.Select(dua => new ContainsAttachmentDeviceResult() { Id = dua.Device.DeviceDomainId, SerialNumber = dua.Device.SerialNumber })
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Database.Users
|
result = Database.Users
|
||||||
.Where(u => u.UserId == UserId)
|
.Where(u => u.UserId == UserId)
|
||||||
.Select(u => Tuple.Create(
|
.Select(u => new ContainsAttachmentResult()
|
||||||
u.UserAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId),
|
{
|
||||||
u.DeviceUserAssignments
|
HasAttachment = u.UserAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId),
|
||||||
|
Devices = u.DeviceUserAssignments
|
||||||
.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
|
.Where(dua => !dua.UnassignedDate.HasValue && dua.Device.DeviceDomainId != null)
|
||||||
.Select(dua => new Tuple<string, string>(dua.Device.DeviceDomainId, dua.Device.SerialNumber))))
|
.Select(dua => new ContainsAttachmentDeviceResult() { Id = dua.Device.DeviceDomainId, SerialNumber = dua.Device.SerialNumber })
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,11 +426,11 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Devices = result.Item2
|
Devices = result.Devices
|
||||||
.Where(d => ActiveDirectory.IsValidDomainAccountId(d.Item1))
|
.Where(d => ActiveDirectory.IsValidDomainAccountId(d.Id))
|
||||||
.Select(d => Tuple.Create(d.Item1 + "$", d.Item2))
|
.Select(d => new Tuple<string, string>(d.Id + "$", d.SerialNumber))
|
||||||
.ToList();
|
.ToList();
|
||||||
return result.Item1;
|
return result.HasAttachment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -198,26 +198,36 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region Device Scope
|
#region Device Scope
|
||||||
|
private class ContainsAttachmentResult
|
||||||
|
{
|
||||||
|
public string Id;
|
||||||
|
public bool HasAttachment;
|
||||||
|
}
|
||||||
|
|
||||||
private bool DeviceContainsAttachment(DiscoDataContext Database, string DeviceSerialNumber, out string UserId)
|
private bool DeviceContainsAttachment(DiscoDataContext Database, string DeviceSerialNumber, out string UserId)
|
||||||
{
|
{
|
||||||
Tuple<string, bool> result;
|
ContainsAttachmentResult result;
|
||||||
|
|
||||||
if (Configuration.FilterBeginDate.HasValue)
|
if (Configuration.FilterBeginDate.HasValue)
|
||||||
{
|
{
|
||||||
result = Database.Devices
|
result = Database.Devices
|
||||||
.Where(d => d.SerialNumber == DeviceSerialNumber && d.AssignedUser != null)
|
.Where(d => d.SerialNumber == DeviceSerialNumber && d.AssignedUser != null)
|
||||||
.Select(d => Tuple.Create(
|
.Select(d => new ContainsAttachmentResult()
|
||||||
d.AssignedUserId,
|
{
|
||||||
d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate)))
|
Id = d.AssignedUserId,
|
||||||
|
HasAttachment = d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate)
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Database.Devices
|
result = Database.Devices
|
||||||
.Where(d => d.SerialNumber == DeviceSerialNumber && d.AssignedUser != null)
|
.Where(d => d.SerialNumber == DeviceSerialNumber && d.AssignedUser != null)
|
||||||
.Select(d => Tuple.Create(
|
.Select(d => new ContainsAttachmentResult()
|
||||||
d.AssignedUserId,
|
{
|
||||||
d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId)))
|
Id = d.AssignedUserId,
|
||||||
|
HasAttachment = d.DeviceAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId)
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,8 +238,8 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UserId = result.Item1;
|
UserId = result.Id;
|
||||||
return result.Item2;
|
return result.HasAttachment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,24 +272,28 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
#region Job Scope
|
#region Job Scope
|
||||||
private bool JobsContainAttachment(DiscoDataContext Database, int JobId, out string UserId)
|
private bool JobsContainAttachment(DiscoDataContext Database, int JobId, out string UserId)
|
||||||
{
|
{
|
||||||
Tuple<string, bool> result;
|
ContainsAttachmentResult result;
|
||||||
|
|
||||||
if (Configuration.FilterBeginDate.HasValue)
|
if (Configuration.FilterBeginDate.HasValue)
|
||||||
{
|
{
|
||||||
result = Database.Jobs
|
result = Database.Jobs
|
||||||
.Where(j => j.Id == JobId && j.UserId != null)
|
.Where(j => j.Id == JobId && j.UserId != null)
|
||||||
.Select(j => Tuple.Create(
|
.Select(j => new ContainsAttachmentResult()
|
||||||
j.UserId,
|
{
|
||||||
j.User.Jobs.Any(uj => uj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))))
|
Id = j.UserId,
|
||||||
|
HasAttachment = j.User.Jobs.Any(uj => uj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId && a.Timestamp >= Configuration.FilterBeginDate))
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Database.Jobs
|
result = Database.Jobs
|
||||||
.Where(j => j.Id == JobId && j.UserId != null)
|
.Where(j => j.Id == JobId && j.UserId != null)
|
||||||
.Select(j => Tuple.Create(
|
.Select(j => new ContainsAttachmentResult()
|
||||||
j.UserId,
|
{
|
||||||
j.User.Jobs.Any(uj => uj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId))))
|
Id = j.UserId,
|
||||||
|
HasAttachment = j.User.Jobs.Any(uj => uj.JobAttachments.Any(a => a.DocumentTemplateId == DocumentTemplateId))
|
||||||
|
})
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,8 +304,8 @@ namespace Disco.Services.Documents.ManagedGroups
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UserId = result.Item1;
|
UserId = result.Id;
|
||||||
return result.Item2;
|
return result.HasAttachment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user