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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }