示例#1
0
        public void ToPipedStrings_EnumPassed_CorrectStringReturned()
        {
            //A
            const ProcessingOptions processingOptions = ProcessingOptions.ExportType
                                                        | ProcessingOptions.BuyersRemorseMinutes
                                                        | ProcessingOptions.IncludeSupplierIds
                                                        | ProcessingOptions.ReturnOrderAddressesOnly
                                                        | ProcessingOptions.IncludeCustomerTokens
                                                        | ProcessingOptions.OrdersToReturn
                                                        | ProcessingOptions.OrderStatusOverride
                                                        | ProcessingOptions.ItemStatusOverride;

            const AvailableExportTypes availableExportTypes = AvailableExportTypes.Customer;
            const int  buyersRemorse         = 60;
            var        includeSupplierIds    = new[] { 1, 2, 3 };
            var        orderStatusOvveride   = new[] { 1, 2, 3 };
            var        itemStatusOverride    = new[] { 1, 2, 3 };
            const bool returnAddressesOnly   = true;
            const bool includeCustomerTokens = false;
            const int  ordersToReturn        = 100;

            //A
            var pipedStrings = processingOptions.ToPipedStrings(availableExportTypes, buyersRemorse, includeSupplierIds, returnAddressesOnly, includeCustomerTokens, ordersToReturn, orderStatusOvveride, itemStatusOverride);

            //A
            //pipedStrings.Should().Be( "exporttype=Customer|buyersremorseminutes=60|IncludeSupplierIDs=1,2,3|returnorderaddressesonly=true|includecustomertokens=false|OrdersToReturn=100".ToLowerInvariant() );
            pipedStrings.Should().Be("exporttype=Customer|buyersremorseminutes=60|IncludeSupplierIDs=1,2,3|OrdersToReturn=100|returnorderaddressesonly=true|includecustomertokens=false|orderstatusoverride=1,2,3|itemstatusoverride=1,2,3".ToLowerInvariant());
        }
示例#2
0
        public static string ToPipedStrings(this ProcessingOptions source, AvailableExportTypes exportType, int buyersRemorse, int[] includeSupplierIds, bool returnAddressesOnly, bool includeCustomerTokens, int ordersToReturn, int[] orderStatusOverride, int[] itemStatusOverride)
        {
            Func <ProcessingOptions, string> serialiserWithParameters = x =>
            {
                var parameters = string.Empty;

                switch (x)
                {
                case ProcessingOptions.BuyersRemorseMinutes:
                    parameters = "=" + buyersRemorse;
                    break;

                case ProcessingOptions.ExportType:
                    parameters = "=" + exportType;
                    break;

                case ProcessingOptions.IncludeSupplierIds:
                    parameters = ConvertToCommaSeparatedString(includeSupplierIds);
                    break;

                case ProcessingOptions.OrderStatusOverride:
                    parameters = ConvertToCommaSeparatedString(orderStatusOverride);
                    break;

                case ProcessingOptions.ItemStatusOverride:
                    parameters = ConvertToCommaSeparatedString(itemStatusOverride);
                    break;

                case ProcessingOptions.ReturnOrderAddressesOnly:
                    parameters = "=" + returnAddressesOnly.ToString();
                    break;

                case ProcessingOptions.IncludeCustomerTokens:
                    parameters = "=" + includeCustomerTokens.ToString();
                    break;

                case ProcessingOptions.OrdersToReturn:
                    parameters = "=" + ordersToReturn.ToString();
                    break;
                }

                return(x.ToString() + parameters);
            };

            var values = Enum.GetValues(typeof(ProcessingOptions));

            var res = (from object processingOption in values
                       let e = source & ( ProcessingOptions )processingOption
                               where e != 0
                               select serialiserWithParameters(e)
                       ).ToList();

            return(string.Join("|", res).ToLowerInvariant());
        }
示例#3
0
        public async Task <ShopVisibleOrders> GetOrdersToExportAdvancedAsync(ProcessingOptions processingOptions, AvailableExportTypes exportType, bool returnAddressesOnly, bool includeCustomerTokens, int ordersToReturn, int[] orderStatusOverride, int[] itemStatusOverride, int[] includeSupplierIds, int buyersRemorse = 60)
        {
            var orders = new ShopVisibleOrders();

            includeSupplierIds  = includeSupplierIds ?? new int[0];
            orderStatusOverride = orderStatusOverride ?? new int[0];
            itemStatusOverride  = itemStatusOverride ?? new int[0];
            var requestParameters = processingOptions.ToPipedStrings(exportType, buyersRemorse, includeSupplierIds, returnAddressesOnly, includeCustomerTokens, ordersToReturn, orderStatusOverride, itemStatusOverride);

            await ActionPolicies.GetAsync.Do(async() =>
            {
                var xmlnewOrders = await this._client.GetOrdersToExportAdvancedAsync(
                    this._credentials.ClientName,
                    this._credentials.Guid,
                    requestParameters
                    );

                var newOrders = XmlSerializeHelpers.Deserialize <ShopVisibleOrders>(xmlnewOrders.OuterXml);

                if (newOrders.Response.ResponseHasErrors && newOrders.Response.ResponseCode != "SUCCESS")
                {
                    throw new Exception(
                        string.Format(
                            "Sync Orders. Client: {0}, Parameters: ({1}) ErrorDescription: {2}", this._credentials.ClientName,
                            requestParameters, newOrders.Response.ResponseDescription));
                }

                orders.Orders.AddRange(newOrders.Orders);
            });

            return(orders);
        }