From 1f3c04f249aad135c4f8e73fbf41b04ddae8e693 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 13 Dec 2018 17:24:13 +0000 Subject: [PATCH] --- server/AyaNova/Controllers/UserController.cs | 16 +-- .../AyaNova/Controllers/WidgetController.cs | 6 +- server/AyaNova/biz/UserBiz.cs | 98 ++++++++++--------- server/AyaNova/biz/WidgetBiz.cs | 11 ++- test/raven-integration/Widget/WidgetLists.cs | 26 ----- 5 files changed, 69 insertions(+), 88 deletions(-) diff --git a/server/AyaNova/Controllers/UserController.cs b/server/AyaNova/Controllers/UserController.cs index 044ec7b4..2cb02dc9 100644 --- a/server/AyaNova/Controllers/UserController.cs +++ b/server/AyaNova/Controllers/UserController.cs @@ -154,21 +154,15 @@ namespace AyaNova.Api.Controllers /// - /// Get User pick list + /// Get User pick list /// /// Required roles: Any /// - /// This list supports querying the Name property - /// include a "q" parameter for string to search for - /// use % for wildcards. - /// - /// e.g. q=%ohn% - /// - /// Query is case insensitive /// - /// Paged id/name collection of Users with paging data + /// Paging, filtering and sorting options + /// Paged id/name collection with paging data [HttpGet("PickList", Name = nameof(UserPickList))] - public async Task UserPickList([FromQuery] string q, [FromQuery] PagingOptions pagingOptions) + public ActionResult UserPickList([FromQuery] PagingOptions pagingOptions) { if (serverState.IsClosed) { @@ -182,7 +176,7 @@ namespace AyaNova.Api.Controllers //Instantiate the business object handler UserBiz biz = UserBiz.GetBiz(ct, HttpContext); - ApiPagedResponse pr = await biz.GetPickListAsync(Url, nameof(UserPickList), pagingOptions, q); + ApiPagedResponse pr = biz.GetPickList(Url, nameof(UserPickList), pagingOptions); return Ok(new ApiOkWithPagingResponse(pr)); } diff --git a/server/AyaNova/Controllers/WidgetController.cs b/server/AyaNova/Controllers/WidgetController.cs index 31eb73a7..e17458ee 100644 --- a/server/AyaNova/Controllers/WidgetController.cs +++ b/server/AyaNova/Controllers/WidgetController.cs @@ -134,13 +134,13 @@ namespace AyaNova.Api.Controllers /// - /// Get widget pick list + /// Get pick list /// /// Required roles: Any /// /// /// Paging, filtering and sorting options - /// Paged id/name collection of widgets with paging data + /// Paged id/name collection with paging data [HttpGet("PickList", Name = nameof(WidgetPickList))] public ActionResult WidgetPickList([FromQuery] PagingOptions pagingOptions) { @@ -156,7 +156,7 @@ namespace AyaNova.Api.Controllers ApiPagedResponse pr = biz.GetPickList(Url, nameof(WidgetPickList), pagingOptions); return Ok(new ApiOkWithPagingResponse(pr)); } - + /// /// Put (update) widget diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index a0a65896..069aa42a 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -172,15 +172,6 @@ namespace AyaNova.Biz pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; - // var items = await ct.User - // .AsNoTracking() - // .OrderBy(m => m.Id) - // .Skip(pagingOptions.Offset.Value) - // .Take(pagingOptions.Limit.Value) - // .ToArrayAsync(); - - // var totalRecordCount = await ct.User.CountAsync(); - // var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); //BUILD THE QUERY //base query @@ -233,52 +224,65 @@ namespace AyaNova.Biz } + + //get picklist (paged) - internal async Task> GetPickListAsync(IUrlHelper Url, string routeName, PagingOptions pagingOptions, string q) + internal ApiPagedResponse GetPickList(IUrlHelper Url, string routeName, PagingOptions pagingOptions) { + // pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; + // pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; + + // NameIdItem[] items; + // int totalRecordCount = 0; + + // if (!string.IsNullOrWhiteSpace(q)) + // { + // items = await ct.User + // .AsNoTracking() + // .Where(m => EF.Functions.ILike(m.Name, q)) + // .OrderBy(m => m.Name) + // .Skip(pagingOptions.Offset.Value) + // .Take(pagingOptions.Limit.Value) + // .Select(m => new NameIdItem() + // { + // Id = m.Id, + // Name = m.Name + // }).ToArrayAsync(); + + // totalRecordCount = await ct.User.Where(m => EF.Functions.ILike(m.Name, q)).CountAsync(); + // } + // else + // { + // items = await ct.User + // .AsNoTracking() + // .OrderBy(m => m.Name) + // .Skip(pagingOptions.Offset.Value) + // .Take(pagingOptions.Limit.Value) + // .Select(m => new NameIdItem() + // { + // Id = m.Id, + // Name = m.Name + // }).ToArrayAsync(); + + // totalRecordCount = await ct.User.CountAsync(); + // } + + + + // var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); + + // ApiPagedResponse pr = new ApiPagedResponse(items, pageLinks); + // return pr; + pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; pagingOptions.Limit = pagingOptions.Limit ?? PagingOptions.DefaultLimit; - NameIdItem[] items; - int totalRecordCount = 0; - if (!string.IsNullOrWhiteSpace(q)) - { - items = await ct.User - .AsNoTracking() - .Where(m => EF.Functions.ILike(m.Name, q)) - .OrderBy(m => m.Name) - .Skip(pagingOptions.Offset.Value) - .Take(pagingOptions.Limit.Value) - .Select(m => new NameIdItem() - { - Id = m.Id, - Name = m.Name - }).ToArrayAsync(); + var ret = PickListFetcher.GetPickList(ct, UserId, pagingOptions, "auser"); - totalRecordCount = await ct.User.Where(m => EF.Functions.ILike(m.Name, q)).CountAsync(); - } - else - { - items = await ct.User - .AsNoTracking() - .OrderBy(m => m.Name) - .Skip(pagingOptions.Offset.Value) - .Take(pagingOptions.Limit.Value) - .Select(m => new NameIdItem() - { - Id = m.Id, - Name = m.Name - }).ToArrayAsync(); + var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, ret.TotalRecordCount).PagingLinksObject(); - totalRecordCount = await ct.User.CountAsync(); - } - - - - var pageLinks = new PaginationLinkBuilder(Url, routeName, null, pagingOptions, totalRecordCount).PagingLinksObject(); - - ApiPagedResponse pr = new ApiPagedResponse(items, pageLinks); + ApiPagedResponse pr = new ApiPagedResponse(ret.Items, pageLinks); return pr; } diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 8c90e45a..db59e57d 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -213,7 +213,16 @@ namespace AyaNova.Biz } - //get picklist (paged) + + + + /// + /// Get PickList + /// + /// + /// + /// + /// internal ApiPagedResponse GetPickList(IUrlHelper Url, string routeName, PagingOptions pagingOptions) { pagingOptions.Offset = pagingOptions.Offset ?? PagingOptions.DefaultOffset; diff --git a/test/raven-integration/Widget/WidgetLists.cs b/test/raven-integration/Widget/WidgetLists.cs index cf079217..c438da63 100644 --- a/test/raven-integration/Widget/WidgetLists.cs +++ b/test/raven-integration/Widget/WidgetLists.cs @@ -113,32 +113,6 @@ namespace raven_integration } - /// - /// - /// - [Fact] - public async void PickListSearchRouteShouldWorkAsExpected() - { - why isn't this failing now? - //CREATE - dynamic d = new JObject(); - d.name = Util.Uniquify("Soft PickListSearchRouteShouldWorkAsExpected"); - d.created = DateTime.Now.ToString(); - d.dollarAmount = 1.11m; - d.active = true; - d.roles = 0; - - ApiResponse r1 = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); - Util.ValidateDataReturnResponseOk(r1); - - //Get all - ApiResponse a = await Util.GetAsync("Widget/picklist?Offset=2&Limit=3&q=%25of%25", await Util.GetTokenAsync("InventoryLimited")); - Util.ValidateDataReturnResponseOk(a); - Util.ValidateHTTPStatusCode(a, 200); - ((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(0); - } - - /// /// Paging test ///