public virtual async Task <GetOrdersResponse> GetOrdersAsync(DateTime modifiedFrom, DateTime modifiedTo, Mark mark = null) { try { var frameworkSearchFilterGroups = new List <FrameworkSearchFilterGroup> { new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "updated_At", conditionType = "gt", value = modifiedFrom.ToSoapParameterString() } } }, new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "updated_At", conditionType = "lt", value = modifiedTo.ToSoapParameterString() } } }, }; if (!string.IsNullOrWhiteSpace(this.Store)) { frameworkSearchFilterGroups.Add(new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } }); } var filters = new SalesOrderRepositoryV1GetListRequest { searchCriteria = new FrameworkSearchCriteria() { filterGroups = frameworkSearchFilterGroups.ToArray(), sortOrders = new FrameworkSortOrder[] { new FrameworkSortOrder() { direction = "ASC", field = "Id" } }, } }; var allOrders = await this.GetOrdersByFilter(filters, mark).ConfigureAwait(false); return(new GetOrdersResponse(allOrders)); } catch (Exception exc) { throw new MagentoSoapException($"An error occured during GetOrdersAsync(modifiedFrom:{modifiedFrom},modifiedTo{modifiedTo})", exc); } }
public virtual async Task <GetOrdersResponse> GetOrdersAsync(IEnumerable <string> ordersIds) { var ordersIdsAgregated = string.Empty; try { ordersIdsAgregated = string.Join(",", ordersIds); var frameworkSearchFilterGroups = new List <FrameworkSearchFilterGroup> { new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "increment_id", conditionType = "eq", value = ordersIdsAgregated } } }, }; if (string.IsNullOrWhiteSpace(this.Store)) { frameworkSearchFilterGroups.Add(new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } }); } var filters = new SalesOrderRepositoryV1GetListRequest { searchCriteria = new FrameworkSearchCriteria() { filterGroups = frameworkSearchFilterGroups.ToArray(), sortOrders = new FrameworkSortOrder[] { new FrameworkSortOrder() { direction = "ASC", field = "Id" } }, } }; var allOrders = await this.GetOrdersByFilter(filters, null).ConfigureAwait(false); return(new GetOrdersResponse(allOrders)); } catch (Exception exc) { throw new MagentoSoapException($"An error occured during GetOrdersAsync({ordersIdsAgregated})", exc); } }
private async Task <salesOrderRepositoryV1GetListResponse1> GetOrdersPageByFilter(SalesOrderRepositoryV1GetListRequest filters, Mark mark) { const int maxCheckCount = 2; const int delayBeforeCheck = 1800000; var res = new salesOrderRepositoryV1GetListResponse1(); var privateClient = this._clientFactory.CreateMagentoSalesOrderRepositoryServiceClient(); await ActionPolicies.GetWithMarkAsync(mark).Do(async() => { var statusChecker = new StatusChecker(maxCheckCount); TimerCallback tcb = statusChecker.CheckStatus; privateClient = this._clientFactory.RefreshMagentoSalesOrderRepositoryServiceClient(privateClient); using (var stateTimer = new Timer(tcb, privateClient, 1000, delayBeforeCheck)) res = await privateClient.salesOrderRepositoryV1GetListAsync(filters).ConfigureAwait(false); }).ConfigureAwait(false); return(res); }
private async Task <IEnumerable <SalesDataOrderInterface> > GetOrdersByFilter(SalesOrderRepositoryV1GetListRequest filters, Mark mark) { filters.searchCriteria.currentPage = 1; filters.searchCriteria.currentPageSpecified = true; filters.searchCriteria.pageSize = PageSize; filters.searchCriteria.pageSizeSpecified = true; var firstPage = await this.GetOrdersPageByFilter(filters, mark).ConfigureAwait(false); var firstPageResult = firstPage.salesOrderRepositoryV1GetListResponse.result; var totalOrders = firstPageResult.totalCount; if (totalOrders <= PageSize) { return(firstPageResult.items); } var allOrders = new List <SalesDataOrderInterface>(firstPageResult.items); do { filters.searchCriteria.currentPage++; var nextPage = await this.GetOrdersPageByFilter(filters, mark).ConfigureAwait(false); var nextPageResult = nextPage.salesOrderRepositoryV1GetListResponse.result; if (nextPageResult.items.Length == 0) { break; } allOrders.AddRange(nextPageResult.items); } while(allOrders.Count < totalOrders); return(allOrders); }
public virtual async Task <GetOrdersResponse> GetOrdersAsync(IEnumerable <string> ordersIds) { var ordersIdsAgregated = string.Empty; try { ordersIdsAgregated = string.Join(",", ordersIds); var frameworkSearchFilterGroups = new List <FrameworkSearchFilterGroup> { new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "increment_id", conditionType = "eq", value = ordersIdsAgregated } } }, }; if (string.IsNullOrWhiteSpace(this.Store)) { frameworkSearchFilterGroups.Add(new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } }); } var filters = new SalesOrderRepositoryV1GetListRequest { searchCriteria = new FrameworkSearchCriteria() { currentPage = 1, currentPageSpecified = true, filterGroups = frameworkSearchFilterGroups.ToArray(), sortOrders = new FrameworkSortOrder[] { new FrameworkSortOrder() { direction = "ASC", field = "Id" } }, pageSize = 100, pageSizeSpecified = true, } }; const int maxCheckCount = 2; const int delayBeforeCheck = 1800000; var res = new salesOrderRepositoryV1GetListResponse1(); var privateClient = this._clientFactory.CreateMagentoSalesOrderRepositoryServiceClient(); await ActionPolicies.GetAsync.Do(async() => { var statusChecker = new StatusChecker(maxCheckCount); TimerCallback tcb = statusChecker.CheckStatus; privateClient = this._clientFactory.RefreshMagentoSalesOrderRepositoryServiceClient(privateClient); using (var stateTimer = new Timer(tcb, privateClient, 1000, delayBeforeCheck)) res = await privateClient.salesOrderRepositoryV1GetListAsync(filters).ConfigureAwait(false); }).ConfigureAwait(false); return(new GetOrdersResponse(res)); } catch (Exception exc) { throw new MagentoSoapException($"An error occured during GetOrdersAsync({ordersIdsAgregated})", exc); } }
public virtual async Task <GetOrdersResponse> GetOrdersAsync(DateTime modifiedFrom, DateTime modifiedTo, Mark mark = null) { try { var frameworkSearchFilterGroups = new List <FrameworkSearchFilterGroup> { new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "updated_At", conditionType = "gt", value = modifiedFrom.ToSoapParameterString() } } }, new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "updated_At", conditionType = "lt", value = modifiedTo.ToSoapParameterString() } } }, }; if (!string.IsNullOrWhiteSpace(this.Store)) { frameworkSearchFilterGroups.Add(new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } }); } var filters = new SalesOrderRepositoryV1GetListRequest { searchCriteria = new FrameworkSearchCriteria() { currentPage = 1, currentPageSpecified = true, filterGroups = frameworkSearchFilterGroups.ToArray(), //sortOrders = new[] { new FrameworkSortOrder() { direction = "ASC", field = "Id" } }, crunch for 2.1 pageSize = 100, pageSizeSpecified = true, } }; const int maxCheckCount = 2; const int delayBeforeCheck = 1800000; var res = new salesOrderRepositoryV1GetListResponse1(); var privateClient = this._clientFactory.CreateMagentoSalesOrderRepositoryServiceClient(); await ActionPolicies.GetAsync.Do(async() => { var statusChecker = new StatusChecker(maxCheckCount); TimerCallback tcb = statusChecker.CheckStatus; privateClient = this._clientFactory.RefreshMagentoSalesOrderRepositoryServiceClient(privateClient); using (var stateTimer = new Timer(tcb, privateClient, 1000, delayBeforeCheck)) res = await privateClient.salesOrderRepositoryV1GetListAsync(filters).ConfigureAwait(false); }).ConfigureAwait(false); return(new GetOrdersResponse(res)); } catch (Exception exc) { throw new MagentoSoapException($"An error occured during GetOrdersAsync(modifiedFrom:{modifiedFrom},modifiedTo{modifiedTo})", exc); } }