Update #9: by default, hide decommissioned devices from search
This commit is contained in:
@@ -261,7 +261,7 @@ namespace Disco.Services.Searching
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Devices
|
#region Devices
|
||||||
public static List<DeviceSearchResultItem> SearchDevices(DiscoDataContext Database, string Term, int? LimitCount = ActiveDirectory.DefaultSearchResultLimit, bool SearchDetails = false)
|
public static List<DeviceSearchResultItem> SearchDevices(DiscoDataContext Database, string Term, int? LimitCount = ActiveDirectory.DefaultSearchResultLimit, bool SearchDetails = false, bool includeDecommissioned = false)
|
||||||
{
|
{
|
||||||
IQueryable<Device> query;
|
IQueryable<Device> query;
|
||||||
|
|
||||||
@@ -269,23 +269,28 @@ namespace Disco.Services.Searching
|
|||||||
|
|
||||||
if (SearchDetails)
|
if (SearchDetails)
|
||||||
{
|
{
|
||||||
query = Database.Devices.Where(d =>
|
query = Database.Devices
|
||||||
d.AssetNumber.Contains(Term) ||
|
.Where(d => includeDecommissioned || d.DecommissionedDate == null)
|
||||||
d.DeviceDomainId.Contains(Term) ||
|
.Where(d =>
|
||||||
d.SerialNumber.Contains(Term) ||
|
d.AssetNumber.Contains(Term) ||
|
||||||
d.Location.Contains(Term) ||
|
d.DeviceDomainId.Contains(Term) ||
|
||||||
Term.Contains(d.SerialNumber) ||
|
d.SerialNumber.Contains(Term) ||
|
||||||
d.DeviceDetails.Any(dd => dd.Value.Contains(Term))
|
d.Location.Contains(Term) ||
|
||||||
|
Term.Contains(d.SerialNumber) ||
|
||||||
|
d.DeviceDetails.Any(dd => dd.Value.Contains(Term))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
query = Database.Devices.Where(d =>
|
query = Database.Devices
|
||||||
d.AssetNumber.Contains(Term) ||
|
.Where(d => includeDecommissioned || d.DecommissionedDate == null)
|
||||||
d.DeviceDomainId.Contains(Term) ||
|
.Where(d =>
|
||||||
d.SerialNumber.Contains(Term) ||
|
d.AssetNumber.Contains(Term) ||
|
||||||
d.Location.Contains(Term) ||
|
d.DeviceDomainId.Contains(Term) ||
|
||||||
Term.Contains(d.SerialNumber));
|
d.SerialNumber.Contains(Term) ||
|
||||||
|
d.Location.Contains(Term) ||
|
||||||
|
Term.Contains(d.SerialNumber)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return query
|
return query
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Disco.Web.Controllers
|
|||||||
{
|
{
|
||||||
#region Query
|
#region Query
|
||||||
[DiscoAuthorizeAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search)]
|
[DiscoAuthorizeAny(Claims.Job.Search, Claims.Device.Search, Claims.User.Search)]
|
||||||
public virtual ActionResult Query(string term, string limit = null, bool searchDetails = false)
|
public virtual ActionResult Query(string term, string limit = null, bool searchDetails = false, bool includeDecommissioned = false)
|
||||||
{
|
{
|
||||||
term = term.Trim();
|
term = term.Trim();
|
||||||
int termInt;
|
int termInt;
|
||||||
@@ -66,7 +66,7 @@ namespace Disco.Web.Controllers
|
|||||||
m.Jobs = Services.Searching.Search.SearchJobsTable(Database, term, LimitCount: null, IncludeJobStatus: true, SearchDetails: searchDetails);
|
m.Jobs = Services.Searching.Search.SearchJobsTable(Database, term, LimitCount: null, IncludeJobStatus: true, SearchDetails: searchDetails);
|
||||||
|
|
||||||
if (Authorization.Has(Claims.Device.Search))
|
if (Authorization.Has(Claims.Device.Search))
|
||||||
m.Devices = Services.Searching.Search.SearchDevices(Database, term, LimitCount: null, SearchDetails: searchDetails);
|
m.Devices = Services.Searching.Search.SearchDevices(Database, term, LimitCount: null, SearchDetails: searchDetails, includeDecommissioned: includeDecommissioned);
|
||||||
|
|
||||||
if (Authorization.Has(Claims.User.Search))
|
if (Authorization.Has(Claims.User.Search))
|
||||||
m.Users = Services.Searching.Search.SearchUsers(Database, term, true, LimitCount: null);
|
m.Users = Services.Searching.Search.SearchUsers(Database, term, true, LimitCount: null);
|
||||||
@@ -134,7 +134,7 @@ namespace Disco.Web.Controllers
|
|||||||
m.ErrorMessage = "A search term of at least two characters is required";
|
m.ErrorMessage = "A search term of at least two characters is required";
|
||||||
return View(m);
|
return View(m);
|
||||||
}
|
}
|
||||||
m.Devices = Services.Searching.Search.SearchDevices(Database, term, null, searchDetails);
|
m.Devices = Services.Searching.Search.SearchDevices(Database, term, null, searchDetails, includeDecommissioned);
|
||||||
if (m.Devices.Count == 1)
|
if (m.Devices.Count == 1)
|
||||||
{
|
{
|
||||||
return RedirectToAction(MVC.Device.Show(m.Devices[0].Id));
|
return RedirectToAction(MVC.Device.Show(m.Devices[0].Id));
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ namespace Disco.Web.Controllers
|
|||||||
public readonly string term = "term";
|
public readonly string term = "term";
|
||||||
public readonly string limit = "limit";
|
public readonly string limit = "limit";
|
||||||
public readonly string searchDetails = "searchDetails";
|
public readonly string searchDetails = "searchDetails";
|
||||||
|
public readonly string includeDecommissioned = "includeDecommissioned";
|
||||||
}
|
}
|
||||||
static readonly ViewsClass s_views = new ViewsClass();
|
static readonly ViewsClass s_views = new ViewsClass();
|
||||||
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
|
||||||
@@ -123,16 +124,17 @@ namespace Disco.Web.Controllers
|
|||||||
public T4MVC_SearchController() : base(Dummy.Instance) { }
|
public T4MVC_SearchController() : base(Dummy.Instance) { }
|
||||||
|
|
||||||
[NonAction]
|
[NonAction]
|
||||||
partial void QueryOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string term, string limit, bool searchDetails);
|
partial void QueryOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string term, string limit, bool searchDetails, bool includeDecommissioned);
|
||||||
|
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public override System.Web.Mvc.ActionResult Query(string term, string limit, bool searchDetails)
|
public override System.Web.Mvc.ActionResult Query(string term, string limit, bool searchDetails, bool includeDecommissioned)
|
||||||
{
|
{
|
||||||
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Query);
|
var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Query);
|
||||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "term", term);
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "term", term);
|
||||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "limit", limit);
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "limit", limit);
|
||||||
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "searchDetails", searchDetails);
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "searchDetails", searchDetails);
|
||||||
QueryOverride(callInfo, term, limit, searchDetails);
|
ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "includeDecommissioned", includeDecommissioned);
|
||||||
|
QueryOverride(callInfo, term, limit, searchDetails, includeDecommissioned);
|
||||||
return callInfo;
|
return callInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,10 +14,14 @@
|
|||||||
{
|
{
|
||||||
@Html.Hidden("limit", Model)
|
@Html.Hidden("limit", Model)
|
||||||
if (Model == "jobs" || Model == "devices")
|
if (Model == "jobs" || Model == "devices")
|
||||||
{
|
{
|
||||||
<br />
|
<br />
|
||||||
<input type="checkbox" name="searchDetails" id="searchDetails" value="true" /><label
|
<input type="checkbox" name="searchDetails" id="searchDetails" value="true" /><label for="searchDetails">Search Details</label>
|
||||||
for="searchDetails">Search Details</label>
|
}
|
||||||
|
if (Model == "devices")
|
||||||
|
{
|
||||||
|
<br />
|
||||||
|
<input type="checkbox" name="includeDecommissioned" id="includeDecommissioned" value="true" /><label for="includeDecommissioned">Include Decommissioned</label>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -112,14 +112,14 @@ WriteLiteral("\r\n");
|
|||||||
#line 15 "..\..\Views\Shared\_SearchDialog.cshtml"
|
#line 15 "..\..\Views\Shared\_SearchDialog.cshtml"
|
||||||
|
|
||||||
if (Model == "jobs" || Model == "devices")
|
if (Model == "jobs" || Model == "devices")
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
#line hidden
|
#line hidden
|
||||||
WriteLiteral(" <br />\r\n");
|
WriteLiteral(" <br />\r\n");
|
||||||
|
|
||||||
WriteLiteral(" <input");
|
WriteLiteral(" <input");
|
||||||
|
|
||||||
WriteLiteral(" type=\"checkbox\"");
|
WriteLiteral(" type=\"checkbox\"");
|
||||||
|
|
||||||
@@ -131,10 +131,43 @@ WriteLiteral(" value=\"true\"");
|
|||||||
|
|
||||||
WriteLiteral(" />");
|
WriteLiteral(" />");
|
||||||
|
|
||||||
WriteLiteral("<label\r\n for=\"searchDetails\">Search Details</label>\r\n");
|
WriteLiteral("<label");
|
||||||
|
|
||||||
|
WriteLiteral(" for=\"searchDetails\"");
|
||||||
|
|
||||||
|
WriteLiteral(">Search Details</label>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 21 "..\..\Views\Shared\_SearchDialog.cshtml"
|
#line 20 "..\..\Views\Shared\_SearchDialog.cshtml"
|
||||||
|
}
|
||||||
|
if (Model == "devices")
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
#line default
|
||||||
|
#line hidden
|
||||||
|
WriteLiteral(" <br />\r\n");
|
||||||
|
|
||||||
|
WriteLiteral(" <input");
|
||||||
|
|
||||||
|
WriteLiteral(" type=\"checkbox\"");
|
||||||
|
|
||||||
|
WriteLiteral(" name=\"includeDecommissioned\"");
|
||||||
|
|
||||||
|
WriteLiteral(" id=\"includeDecommissioned\"");
|
||||||
|
|
||||||
|
WriteLiteral(" value=\"true\"");
|
||||||
|
|
||||||
|
WriteLiteral(" />");
|
||||||
|
|
||||||
|
WriteLiteral("<label");
|
||||||
|
|
||||||
|
WriteLiteral(" for=\"includeDecommissioned\"");
|
||||||
|
|
||||||
|
WriteLiteral(">Include Decommissioned</label>\r\n");
|
||||||
|
|
||||||
|
|
||||||
|
#line 25 "..\..\Views\Shared\_SearchDialog.cshtml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +194,7 @@ WriteLiteral(">\r\n $(function () {\r\n $(\'#searchDia
|
|||||||
"watermark(\'Search\').focus();\r\n });\r\n </script>\r\n </div>\r\n");
|
"watermark(\'Search\').focus();\r\n });\r\n </script>\r\n </div>\r\n");
|
||||||
|
|
||||||
|
|
||||||
#line 35 "..\..\Views\Shared\_SearchDialog.cshtml"
|
#line 39 "..\..\Views\Shared\_SearchDialog.cshtml"
|
||||||
}
|
}
|
||||||
|
|
||||||
#line default
|
#line default
|
||||||
|
|||||||
Reference in New Issue
Block a user