public virtual async Task <OrderInfoResponse> GetOrderAsync(string incrementId)
        {
            try
            {
                //var frameworkSearchFilterGroups = new List< FrameworkSearchFilterGroup >
                //{
                //	new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "increment_id", conditionType = "eq", value = incrementId } } },
                //};
                //if( string.IsNullOrWhiteSpace( this.Store ) )
                //	frameworkSearchFilterGroups.Add( new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } } );

                var filters = new SalesOrderRepositoryV1GetRequest
                {
                    id = int.Parse(incrementId)
                };

                const int maxCheckCount    = 2;
                const int delayBeforeCheck = 1800000;

                var res = new salesOrderRepositoryV1GetResponse1();

                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))
                        try
                        {
                            res = await privateClient.salesOrderRepositoryV1GetAsync(filters).ConfigureAwait(false);
                        }
                        catch (Exception ex)
                        {
                            if (ex.Message.ToLower() == "requested entity doesn't exist")
                            {
                                res = null;
                                return;
                            }
                            throw;
                        }
                }).ConfigureAwait(false);

                return(res == null ? null : new OrderInfoResponse(res));
            }
            catch (Exception exc)
            {
                throw new MagentoSoapException($"An error occured during GetOrderAsync(incrementId:{incrementId})", exc);
            }
        }
Exemplo n.º 2
0
        public virtual async Task <OrderInfoResponse> GetOrderAsync(string incrementId)
        {
            try
            {
                //var frameworkSearchFilterGroups = new List< FrameworkSearchFilterGroup >
                //{
                //	new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "increment_id", conditionType = "eq", value = incrementId } } },
                //};
                //if( string.IsNullOrWhiteSpace( this.Store ) )
                //	frameworkSearchFilterGroups.Add( new FrameworkSearchFilterGroup() { filters = new[] { new FrameworkFilter() { field = "store_Id", conditionType = "eq", value = this.Store } } } );

                var filters = new SalesOrderRepositoryV1GetRequest
                {
                    id = int.Parse(incrementId)
                };

                const int maxCheckCount    = 2;
                const int delayBeforeCheck = 1800000;

                var res = new salesOrderRepositoryV1GetResponse1();

                var privateClient = this.CreateMagentoSalesOrderRepositoryServiceClient(this.BaseMagentoUrl);

                await ActionPolicies.GetAsync.Do(async() =>
                {
                    var statusChecker = new StatusChecker(maxCheckCount);
                    TimerCallback tcb = statusChecker.CheckStatus;

                    if (privateClient.State != CommunicationState.Opened &&
                        privateClient.State != CommunicationState.Created &&
                        privateClient.State != CommunicationState.Opening)
                    {
                        privateClient = this.CreateMagentoSalesOrderRepositoryServiceClient(this.BaseMagentoUrl);
                    }

                    using (var stateTimer = new Timer(tcb, privateClient, 1000, delayBeforeCheck))
                        res = await privateClient.salesOrderRepositoryV1GetAsync(filters).ConfigureAwait(false);
                }).ConfigureAwait(false);

                return(new OrderInfoResponse(res));
            }
            catch (Exception exc)
            {
                throw new MagentoSoapException(string.Format("An error occured during GetOrderAsync(incrementId:{0})", incrementId), exc);
            }
        }
        public virtual async Task <OrderInfoResponse> GetOrderAsync(string incrementId, Mark mark = null)
        {
            try
            {
                var filters = new SalesOrderRepositoryV1GetRequest
                {
                    id = int.Parse(incrementId)
                };

                const int maxCheckCount    = 2;
                const int delayBeforeCheck = 1800000;

                var res = new salesOrderRepositoryV1GetResponse1();

                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))
                        try
                        {
                            res = await privateClient.salesOrderRepositoryV1GetAsync(filters).ConfigureAwait(false);
                        }
                        catch (Exception ex)
                        {
                            if (ex.Message.ToLower() == "requested entity doesn't exist")
                            {
                                res = null;
                                return;
                            }
                            throw;
                        }
                }).ConfigureAwait(false);

                return(res == null ? null : new OrderInfoResponse(res));
            }
            catch (Exception exc)
            {
                throw new MagentoSoapException($"An error occured during GetOrderAsync(incrementId:{incrementId}) ", exc, mark);
            }
        }