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()); }
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()); }
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); }