public CustomerResult Post(ExportToExcelInput input) { string startDate = input.StartDate; string endDate = input.EndDate; string customerNumber = input.CustomerNumber; int size = input.Size == 0 ? 100 : input.Size; int page = input.Page; string threadID = !(string.IsNullOrEmpty(input.ThreadId)) ? input.ThreadId : ""; string poNumber = !(string.IsNullOrEmpty(input.PONumber)) ? input.PONumber : ""; serviceCaller.size = size; serviceCaller.from = page; CustomerResult result = new CustomerResult(); var lstResult = new List <GetCustomerResult>(); var pos = serviceCaller.GetPOS(input); var poNumbersSource = JsonConvert.DeserializeObject <PurchaseOrderResult>(pos.Result); var poNumbers = poNumbersSource.hits.hits.Where(x => x._source.ThreadID != null).Select(x => x._source.ThreadID).ToList(); result.Total = poNumbersSource.hits.total; var response = serviceCaller.SearchForGivenInput(startDate, endDate, customerNumber, poNumbers, threadID: threadID); var objResult = JsonConvert.DeserializeObject <PurchaseOrderResult>(response.Result); if (objResult != null && objResult.hits != null & objResult.hits.hits != null) { //int total = objResult.hits.total; //response = serviceCaller.SearchForGivenInput(startDate, endDate, customerNumber, poNumbers, total); //objResult = JsonConvert.DeserializeObject<PurchaseOrderResult>(response.Result); if (objResult != null && objResult.hits != null & objResult.hits.hits != null) { var group = (from p in objResult.hits.hits.ToList() //where string.IsNullOrEmpty(id) || p._source.Identity.Contains(id) group p by new { ThreadID = p._source.ThreadID } into g select new { ThreadId = g.Key.ThreadID, POResult = g.ToList() }).ToList(); foreach (var item in group) { var lstOfSteps = purchaseOrderStatusRetriever.GetSteps(item.POResult.ToList()); var po = item.POResult.Where(x => !string.IsNullOrEmpty(x._source.PONumber)).Count() > 0 ? item.POResult.Where(x => !string.IsNullOrEmpty(x._source.PONumber)).FirstOrDefault()._source.PONumber : ""; var identity = item.POResult.Where(x => x._source != null && x._source.Identity != null).FirstOrDefault(); lstResult.Add(new GetCustomerResult { ProfileID = identity != null ? identity._source.Identity : "", lstOfSteps = lstOfSteps, PONumber = po, ThreadID = item.ThreadId }); } //result.Total = objResult.hits.total; result.lst = lstResult; } } return(result); }
public PurchaseOrdersWithTotal Post(ExportToExcelInput input) { //var response = serviceCaller.GetPOS(input,new List<string> { "PONumber"}); //var objResult = JsonConvert.DeserializeObject<PurchaseOrderResult>(response.Result); //if (objResult != null && objResult.hits != null & objResult.hits.hits != null) //{ // return objResult.hits.hits.Where(x => !string.IsNullOrEmpty(x._source.PONumber)).Select(x => x._source.PONumber).ToList(); //} //else // return new List<string>(); serviceCaller.size = input.Size; serviceCaller.from = input.Page; PurchaseOrdersWithTotal result = new PurchaseOrdersWithTotal(); int total; result.lst = GetList(input.StartDate, input.EndDate, input.CustomerNumber, out total); result.total = total; return(result); }
public ExcelResult Post(ExportToExcelInput input) { try { string startDate = input.StartDate; string endDate = input.EndDate; string customerNumber = input.CustomerNumber; int size = input.Size == 0 ? 100 : input.Size; int page = input.Page; string threadID = !(string.IsNullOrEmpty(input.ThreadId)) ? input.ThreadId : ""; string poNumber = !(string.IsNullOrEmpty(input.PONumber)) ? input.PONumber : ""; serviceCaller.size = size; serviceCaller.from = page; ExcelResult result = new ExcelResult(); var lstResult = new List <GetExcelResult>(); var pos = serviceCaller.GetPOS(input); var poNumbersSource = JsonConvert.DeserializeObject <PurchaseOrderResult>(pos.Result); var poNumbers = poNumbersSource.hits.hits.Where(x => x._source.ThreadID != null).Select(x => x._source.ThreadID).ToList(); result.Total = poNumbersSource.hits.total; var response = serviceCaller.SearchForGivenInput(startDate, endDate, customerNumber, poNumbers, threadID: threadID); var objResult = JsonConvert.DeserializeObject <PurchaseOrderResult>(response.Result); if (objResult != null && objResult.hits != null & objResult.hits.hits != null) { //int total = objResult.hits.total; //response = serviceCaller.SearchForGivenInput(startDate, endDate, customerNumber, poNumbers, total); //objResult = JsonConvert.DeserializeObject<PurchaseOrderResult>(response.Result); if (objResult != null && objResult.hits != null & objResult.hits.hits != null) { var group = (from p in objResult.hits.hits.ToList() //where string.IsNullOrEmpty(id) || p._source.Identity.Contains(id) group p by new { p._source.ThreadID, p._source.PONumber } into g select new { ThreadId = g.Key.ThreadID, PONumber = g.Key.PONumber, POResult = g.ToList() }).ToList(); foreach (var item in group) { if (!string.IsNullOrEmpty(input.PONumber)) { if (!item.PONumber.Equals(input.PONumber, StringComparison.OrdinalIgnoreCase)) { break; } } var selectedSendPurchaseOrder = item.POResult.Where(x => x._type == CONSTANTS.sendPurchaseOrderstatus).ToList(); var date = item.POResult.Max(x => x._source.Date); if (selectedSendPurchaseOrder != null && selectedSendPurchaseOrder.Count > 0) { foreach (var sendPO in selectedSendPurchaseOrder) { var lstOfSteps = purchaseOrderStatusRetriever.GetStepsForExcel(item.POResult.ToList(), sendPO); lstResult.Add(new GetExcelResult { lstOfSteps = lstOfSteps, PONumber = item.PONumber, ThreadID = item.ThreadId, Date = date }); } } else { var lstOfSteps = purchaseOrderStatusRetriever.GetStepsForExcel(item.POResult.ToList(), null); lstResult.Add(new GetExcelResult { lstOfSteps = lstOfSteps, PONumber = item.PONumber, ThreadID = item.ThreadId, Date = date }); } } //result.Total = objResult.hits.total; result.lst = lstResult; } } return(result); } catch (Exception ex) { return(new ExcelResult { Message = ex.Message + Environment.NewLine + ex.StackTrace }); //System.IO.File.AppendAllText(@"E:\inetpub\wwwroot\b2bdiceapiprod\bin\\ErrorText.txt", ex.Message + DateTime.Now + Environment.NewLine); // throw; } }
public async Task <string> GetPOS(ExportToExcelInput input, List <string> searchFor = null) { string startDate = input.StartDate; string endDate = input.EndDate; string customerNumber = input.CustomerNumber; int size = input.Size; int page = input.Page; string threadID = input.ThreadId; string poNumber = input.PONumber; string sortcolumn = !string.IsNullOrEmpty(input.SortColumn) ? input.SortColumn.ToLower() : ""; string result = string.Empty; var uri = GetURI(CONSTANTS.submittedpodetails); var httpClient = new HttpClient(); object query; var phrasePrefix = !string.IsNullOrEmpty(customerNumber) || !string.IsNullOrEmpty(threadID) || !string.IsNullOrEmpty(poNumber); var must_not = new List <object> { new { match = new { Transaction = "Punchout" } } }; object sort; switch (sortcolumn) { case "threaid": sort = new SortFieldWithThreadId { ThreadID = input.SortOrder }; break; case "ponumber": sort = new SortFieldWithPONumber { PONumber = input.SortOrder }; break; default: sort = new SortField { Date = new OrderDate { order = "desc" } }; break; } var must = new List <object>(); var should = new List <object>(); if (!string.IsNullOrEmpty(customerNumber)) { must.Add(new { match_phrase_prefix = new matchIdentity { Identity = customerNumber } }); } if (!string.IsNullOrEmpty(threadID)) { must.Add(new { match = new { ThreadID = threadID } }); } if (!string.IsNullOrEmpty(poNumber)) { must.Add(new { match_phrase_prefix = new matchPONumber { PONumber = poNumber } }); } must.Add(new { range = new range { Date = new Date { gte = startDate, lte = endDate, time_zone = "+00:00" } } }); if (phrasePrefix) { query = new queryWithBoolMust { boole = new booleWithMust { should = should, must = must // must_not = must_not } }; } else { query = new querywithmustnotbool { boole = new boolWithMustNot { must = must, must_not = must_not } }; } var response = httpClient.PostAsJsonAsync(uri, new { _source = (searchFor != null) ? searchFor : new List <string> { "ThreadID", "ThreadId" }, sort = new { Date = new { order = "desc" } }, from = page, size = size, query = query }).Result; //will throw an exception if not successful response.EnsureSuccessStatusCode(); result = await response.Content.ReadAsStringAsync(); return(result); }