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