Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions Purchasing.Core/Services/AggieEnterpriseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public interface IAggieEnterpriseService
Task<AeResultStatus> LookupOrderStatus(string requestId);

Task<Commodity[]> GetPurchasingCategories();
Task<Commodity[]> SearchCommodities(string query);
Task<UnitOfMeasure[]> GetUnitOfMeasures();

Task<List<IdAndName>> SearchSupplier(string query);
Expand Down Expand Up @@ -413,6 +414,43 @@ public async Task<Commodity[]> GetPurchasingCategories()
}).ToArray();
}

public async Task<Commodity[]> SearchCommodities(string query)
{
var _aggieClient = GetClient();

var filter = new ScmPurchasingCategoryFilterInput();
filter.SearchCommon = new SearchCommonInputs();
filter.SearchCommon.Limit = 20;
filter.Name = new StringFilterInput { Contains = query.Trim().Replace(" ", "%") };

var filter2 = new ScmPurchasingCategoryFilterInput();
filter2.SearchCommon = new SearchCommonInputs();
filter2.SearchCommon.Limit = 1;
filter2.Code = new StringFilterInput { Eq = query.Trim() };


var result = await _aggieClient.ScmPurchasingCategorySearch.ExecuteAsync(filter);
var result2 = await _aggieClient.ScmPurchasingCategorySearch.ExecuteAsync(filter2);

var data = result.ReadData();
var data2 = result2.ReadData();

var temp1 = data.ScmPurchasingCategorySearch.Data.Select(a => new Commodity
{
Id = a.Code,
Name = a.Name,
IsActive = a.Enabled && DateTime.UtcNow.ToPacificTime().IsActiveDate(a.StartDateActive, a.EndDateActive)
}).ToArray();

var temp2 = data2.ScmPurchasingCategorySearch.Data.Select(a => new Commodity
{
Id = a.Code,
Name = a.Name,
IsActive = a.Enabled && DateTime.UtcNow.ToPacificTime().IsActiveDate(a.StartDateActive, a.EndDateActive)
}).ToArray();

return temp1.Where(a => a.IsActive).Union(temp2.Where(a => a.IsActive)).Distinct().ToArray();
}

/// <summary>
/// Potentially we could cache this lookup, but it should really only be a SIT2 test thing....
Expand Down
14 changes: 13 additions & 1 deletion Purchasing.Core/Services/IndexSearchService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,19 @@ public IList<IdAndName> SearchCommodities(string searchTerm)
var results = _client.Search<Commodity>(
s => s.Index(index).Query(q => q.QueryString(qs => qs.Query(searchTerm))));

return results.Hits.Select(h => new IdAndName(h.Source.Id, h.Source.Name)).ToList();
//Do a fuzzy search on the name field
var results1 = _client.Search<Commodity>(
a => a.Index(index).Query(q => q.Fuzzy(f => f.Value(searchTerm).Field("name"))));

//join the results with distinct values
var temp = results.Hits.Select(h => new IdAndName(h.Source.Id, h.Source.Name)).ToList();
var temp2 = results1.Hits.Select(h => new IdAndName(h.Source.Id, h.Source.Name)).ToList();
//join temp and temp2 into a distinct list based on Id
var combinedResults = temp.Concat(temp2).GroupBy(x => x.Id).Select(x => x.First()).ToList(); //union wasn't working for some reason

return combinedResults;

//return results.Hits.Select(h => new IdAndName(h.Source.Id, h.Source.Name)).ToList();
}

public IList<IdAndName> SearchVendors(string searchTerm)
Expand Down
9 changes: 6 additions & 3 deletions Purchasing.Mvc/Controllers/AjaxController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ namespace Purchasing.Mvc.Controllers
public class AjaxController : ApplicationController
{
private readonly ISearchService _searchService;
private readonly IAggieEnterpriseService _aggieEnterpriseService;

public AjaxController(ISearchService searchService)
public AjaxController(ISearchService searchService, IAggieEnterpriseService aggieEnterpriseService)
{
_searchService = searchService;
_aggieEnterpriseService = aggieEnterpriseService;
}

/// <summary>
Expand All @@ -41,9 +43,10 @@ public JsonNetResult SearchBuilding(string term)
/// </summary>
/// <param name="searchTerm"></param>
/// <returns></returns>
public JsonResult SearchCommodityCodes(string searchTerm)
public JsonResult SearchCommodityCodes(string searchTerm)
{
var results = _searchService.SearchCommodities(searchTerm).Select(a => new IdAndName(a.Id, a.Name));
//var results = _searchService.SearchCommodities(searchTerm).Select(a => new IdAndName(a.Id, a.Name));
var results = _aggieEnterpriseService.SearchCommodities(searchTerm).GetAwaiter().GetResult().Select(a => new IdAndName(a.Id, a.Name)).ToList();

return Json(results);
}
Expand Down