diff --git a/Disco.BI/Properties/AssemblyInfo.cs b/Disco.BI/Properties/AssemblyInfo.cs
index dac682b7..9e264cec 100644
--- a/Disco.BI/Properties/AssemblyInfo.cs
+++ b/Disco.BI/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Client/Properties/AssemblyInfo.cs b/Disco.Client/Properties/AssemblyInfo.cs
index d9228b6f..187f5b48 100644
--- a/Disco.Client/Properties/AssemblyInfo.cs
+++ b/Disco.Client/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs b/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
index b0a07e4d..79b1b2a1 100644
--- a/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
+++ b/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Data/Properties/AssemblyInfo.cs b/Disco.Data/Properties/AssemblyInfo.cs
index 4f5f6a2b..98e468e7 100644
--- a/Disco.Data/Properties/AssemblyInfo.cs
+++ b/Disco.Data/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Models/Properties/AssemblyInfo.cs b/Disco.Models/Properties/AssemblyInfo.cs
index 1636bafb..df8e63d7 100644
--- a/Disco.Models/Properties/AssemblyInfo.cs
+++ b/Disco.Models/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Services/Properties/AssemblyInfo.cs b/Disco.Services/Properties/AssemblyInfo.cs
index 4ae4a1a1..720977b8 100644
--- a/Disco.Services/Properties/AssemblyInfo.cs
+++ b/Disco.Services/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Web.Extensions/Properties/AssemblyInfo.cs b/Disco.Web.Extensions/Properties/AssemblyInfo.cs
index 21ca412f..0114ab64 100644
--- a/Disco.Web.Extensions/Properties/AssemblyInfo.cs
+++ b/Disco.Web.Extensions/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file
diff --git a/Disco.Web/Controllers/SearchController.cs b/Disco.Web/Controllers/SearchController.cs
index afbced8b..e9290e01 100644
--- a/Disco.Web/Controllers/SearchController.cs
+++ b/Disco.Web/Controllers/SearchController.cs
@@ -31,115 +31,189 @@ namespace Disco.Web.Controllers
}
m.Success = true;
- using (dbContext = new DiscoDataContext())
+
+ // Deal with !/@/# Search Shortcuts
+ if (limit == null && term.Length > 0)
{
- if (limit == null)
+ switch (term[0])
{
- if (term.Length < 2 && termInt < 0) // < 2 Characters && Not a Number
- {
- m.Success = false;
- m.ErrorMessage = "A search term of at least two characters is required";
- return View(m);
- }
- m.Devices = BI.DeviceBI.Searching.Search(dbContext, term);
- m.Jobs = BI.JobBI.Searching.Search(dbContext, term, null, true, searchDetails);
- m.Users = BI.UserBI.Searching.Search(dbContext, term);
+ case '!':
+ term = term.Substring(1);
+ limit = "DeviceSerialNumber";
+ break;
+ case '#':
+ term = term.Substring(1);
+ limit = "JobId";
+ if (!int.TryParse(term, out termInt))
+ termInt = -1;
+ break;
+ case '@':
+ term = term.Substring(1);
+ limit = "UserId";
+ break;
}
- else
+ }
+
+ if (limit == null)
+ {
+ if (term.Length < 2 && termInt < 0) // < 2 Characters && Not a Number
{
- switch (limit.ToLower())
- {
- case "devicemodel":
- int deviceModelId;
- if (int.TryParse(term, out deviceModelId))
+ m.Success = false;
+ m.ErrorMessage = "A search term of at least two characters is required";
+ return View(m);
+ }
+ m.Devices = BI.DeviceBI.Searching.Search(dbContext, term);
+ m.Jobs = BI.JobBI.Searching.Search(dbContext, term, null, true, searchDetails);
+ m.Users = BI.UserBI.Searching.Search(dbContext, term);
+ }
+ else
+ {
+ switch (limit.ToLower())
+ {
+ case "devicemodel":
+ int deviceModelId;
+ if (int.TryParse(term, out deviceModelId))
+ {
+ var vm = dbContext.DeviceModels.Find(deviceModelId);
+ if (vm != null)
{
- var vm = dbContext.DeviceModels.Find(deviceModelId);
- if (vm != null)
- {
- m.FriendlyTerm = string.Format("Device Model: {0}", vm.ToString());
- m.Devices = BI.DeviceBI.Searching.SearchDeviceModel(dbContext, vm.Id);
- break;
- }
+ m.FriendlyTerm = string.Format("Device Model: {0}", vm.ToString());
+ m.Devices = BI.DeviceBI.Searching.SearchDeviceModel(dbContext, vm.Id);
+ break;
}
- m.FriendlyTerm = string.Format("Device Model: {0}", term);
- m.Success = false;
- m.ErrorMessage = "Invalid Device Model Id";
- break;
- case "deviceprofile":
- int deviceProfileId;
- if (int.TryParse(term, out deviceProfileId))
+ }
+ m.FriendlyTerm = string.Format("Device Model: {0}", term);
+ m.Success = false;
+ m.ErrorMessage = "Invalid Device Model Id";
+ break;
+ case "deviceprofile":
+ int deviceProfileId;
+ if (int.TryParse(term, out deviceProfileId))
+ {
+ var dp = dbContext.DeviceProfiles.Find(deviceProfileId);
+ if (dp != null)
{
- var dp = dbContext.DeviceProfiles.Find(deviceProfileId);
- if (dp != null)
- {
- m.FriendlyTerm = string.Format("Device Profile: {0}", dp.ToString());
- m.Devices = BI.DeviceBI.Searching.SearchDeviceProfile(dbContext, dp.Id);
- break;
- }
+ m.FriendlyTerm = string.Format("Device Profile: {0}", dp.ToString());
+ m.Devices = BI.DeviceBI.Searching.SearchDeviceProfile(dbContext, dp.Id);
+ break;
}
- m.FriendlyTerm = string.Format("Device Profile: {0}", term);
- m.Success = false;
- m.ErrorMessage = "Invalid Device Profile Id";
- break;
- case "devicebatch":
- int deviceBatchId;
- if (int.TryParse(term, out deviceBatchId))
+ }
+ m.FriendlyTerm = string.Format("Device Profile: {0}", term);
+ m.Success = false;
+ m.ErrorMessage = "Invalid Device Profile Id";
+ break;
+ case "devicebatch":
+ int deviceBatchId;
+ if (int.TryParse(term, out deviceBatchId))
+ {
+ var db = dbContext.DeviceBatches.Find(deviceBatchId);
+ if (db != null)
{
- var db = dbContext.DeviceBatches.Find(deviceBatchId);
- if (db != null)
- {
- m.FriendlyTerm = string.Format("Device Batch: {0}", db.ToString());
- m.Devices = BI.DeviceBI.Searching.SearchDeviceBatch(dbContext, db.Id);
- break;
- }
+ m.FriendlyTerm = string.Format("Device Batch: {0}", db.ToString());
+ m.Devices = BI.DeviceBI.Searching.SearchDeviceBatch(dbContext, db.Id);
+ break;
}
- m.FriendlyTerm = string.Format("Device Batch: {0}", term);
+ }
+ m.FriendlyTerm = string.Format("Device Batch: {0}", term);
+ m.Success = false;
+ m.ErrorMessage = "Invalid Device Batch Id";
+ break;
+ case "devices":
+ if (term.Length < 2)
+ {
m.Success = false;
- m.ErrorMessage = "Invalid Device Batch Id";
- break;
- case "devices":
- if (term.Length < 2)
+ m.ErrorMessage = "A search term of at least two characters is required";
+ return View(m);
+ }
+ m.Devices = BI.DeviceBI.Searching.Search(dbContext, term);
+ if (m.Devices.Count == 1)
+ {
+ return RedirectToAction(MVC.Device.Show(m.Devices[0].SerialNumber));
+ }
+ break;
+ case "jobs":
+ if (term.Length < 2 && termInt < 0)
+ {
+ m.Success = false;
+ m.ErrorMessage = "A search term of at least two characters is required";
+ return View(m);
+ }
+ if (termInt >= 0)
+ { // Term is a Number - Check for JobId
+ if (dbContext.Jobs.Count(j => j.Id == termInt) == 1)
+ {
+ return RedirectToAction(MVC.Job.Show(termInt));
+ }
+ }
+ m.Jobs = BI.JobBI.Searching.Search(dbContext, term, null, true, searchDetails);
+ break;
+ case "users":
+ if (term.Length < 2)
+ {
+ m.Success = false;
+ m.ErrorMessage = "A search term of at least two characters is required";
+ return View(m);
+ }
+ m.Users = BI.UserBI.Searching.Search(dbContext, term);
+ if (m.Users.Count == 1)
+ {
+ return RedirectToAction(MVC.User.Show(m.Users[0].Id));
+ }
+ break;
+ case "deviceserialnumber":
+ var device = dbContext.Devices.FirstOrDefault(d => d.SerialNumber == term);
+ if (device != null)
+ return RedirectToAction(MVC.Device.Show(term));
+ else
+ {
+ m.Success = false;
+ m.ErrorMessage = "Unknown Device Serial Number";
+ return View(m);
+ }
+ case "jobid":
+ if (termInt >= 0)
+ {
+ var job = dbContext.Jobs.FirstOrDefault(d => d.Id == termInt);
+ if (job != null)
+ return RedirectToAction(MVC.Job.Show(termInt));
+ else
{
m.Success = false;
- m.ErrorMessage = "A search term of at least two characters is required";
+ m.ErrorMessage = "Unknown Job Number";
return View(m);
}
- m.Devices = BI.DeviceBI.Searching.Search(dbContext, term);
- if (m.Devices.Count == 1)
+ }
+ else
+ {
+ m.Success = false;
+ m.ErrorMessage = "Invalid Job Number";
+ return View(m);
+ }
+ case "userid":
+ var user = dbContext.Users.FirstOrDefault(u => u.Id == term);
+ if (user != null)
+ return RedirectToAction(MVC.User.Show(term));
+ else
+ {
+ try
{
- return RedirectToAction(MVC.Device.Show(m.Devices[0].SerialNumber));
- }
- break;
- case "jobs":
- if (term.Length < 2 && termInt < 0)
- {
- m.Success = false;
- m.ErrorMessage = "A search term of at least two characters is required";
- return View(m);
- }
- if (termInt >= 0)
- { // Term is a Number - Check for JobId
- if (dbContext.Jobs.Count(j => j.Id == termInt) == 1)
+ user = BI.UserBI.UserCache.GetUser(term, dbContext);
+ if (user != null)
+ return RedirectToAction(MVC.User.Show(term));
+ else
{
- return RedirectToAction(MVC.Job.Show(termInt));
+ m.Success = false;
+ m.ErrorMessage = "Unknown User Id";
+ return View(m);
}
}
- m.Jobs = BI.JobBI.Searching.Search(dbContext, term, null, true, searchDetails);
- break;
- case "users":
- if (term.Length < 2)
+ catch (ArgumentException)
{
m.Success = false;
- m.ErrorMessage = "A search term of at least two characters is required";
+ m.ErrorMessage = "Unknown User Id";
return View(m);
}
- m.Users = BI.UserBI.Searching.Search(dbContext, term);
- if (m.Users.Count == 1)
- {
- return RedirectToAction(MVC.User.Show(m.Users[0].Id));
- }
- break;
- }
+ }
}
}
diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj
index 7ecd0cbd..c05e6ca5 100644
--- a/Disco.Web/Disco.Web.csproj
+++ b/Disco.Web/Disco.Web.csproj
@@ -1785,6 +1785,7 @@
Web.config
+ Designer
RazorGenerator
@@ -1861,7 +1862,7 @@
False
-
+
diff --git a/Disco.Web/Properties/AssemblyInfo.cs b/Disco.Web/Properties/AssemblyInfo.cs
index 10c635f1..c4d1eaa5 100644
--- a/Disco.Web/Properties/AssemblyInfo.cs
+++ b/Disco.Web/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.2.0606.1220")]
-[assembly: AssemblyFileVersion("1.2.0606.1220")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0606.1909")]
+[assembly: AssemblyFileVersion("1.2.0606.1909")]
\ No newline at end of file