using bnhtrade.Core.Data.Amazon.SellingPartnerAPI; using FikaAmazonAPI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace bnhtrade.Core.Data.Amazon.FulFillmentInbound { public class GetShipmentItems { private AmazonConnection amznConn = new SpApiConnection().Connection; public GetShipmentItems() { } public List GetByDateRange(DateTime utcDateTimeAfter, DateTime utcDateTimeBefore) { var result = new List(); // build the request var parameter = new FikaAmazonAPI.Parameter.FulFillmentInbound.ParameterGetShipmentItems(); parameter.MarketplaceId = amznConn.GetCurrentMarketplace.ID; parameter.QueryType = FikaAmazonAPI.Utils.Constants.QueryType.DATE_RANGE; parameter.LastUpdatedAfter = utcDateTimeAfter; parameter.LastUpdatedBefore = utcDateTimeBefore; var apiResult = amznConn.FulFillmentInbound.GetShipmentItems(parameter); AppendNextToken(ref apiResult); return TransposeModel(apiResult); } public List GetByShipmentId(string shipmentId) { var result = new List(); if (string.IsNullOrEmpty(shipmentId)) { return result; } // build the request //var parameter = new FikaAmazonAPI.Parameter.FulFillmentInbound.ParameterGetShipmentItems(); //parameter.MarketplaceId = marketPlaceId; //parameter.QueryType = FikaAmazonAPI.Utils.Constants.QueryType.SHIPMENT; //parameter.ShipmentId = shipmentId; var apiResult = amznConn.FulFillmentInbound.GetShipmentItemsByShipmentId(shipmentId); AppendNextToken(ref apiResult); return TransposeModel(apiResult); } // checks for next-token, if true appends additional data to the ShipmentData private void AppendNextToken(ref FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.InboundShipmentItemList shipmentList) { while (!string.IsNullOrEmpty(shipmentList.NextToken)) { // build the request var parameter = new FikaAmazonAPI.Parameter.FulFillmentInbound.ParameterGetShipmentItems(); parameter.MarketplaceId = amznConn.GetCurrentMarketplace.ID; parameter.QueryType = FikaAmazonAPI.Utils.Constants.QueryType.NEXT_TOKEN; parameter.NextToken = shipmentList.NextToken; var result = amznConn.FulFillmentInbound.GetShipmentItems(parameter); shipmentList.AddRange(result); shipmentList.NextToken = result.NextToken; } } private void AppendNextToken(ref FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.GetShipmentItemsResult shipmentList) { while (!string.IsNullOrEmpty(shipmentList.NextToken)) { // build the request var parameter = new FikaAmazonAPI.Parameter.FulFillmentInbound.ParameterGetShipmentItems(); parameter.MarketplaceId = amznConn.GetCurrentMarketplace.ID; parameter.QueryType = FikaAmazonAPI.Utils.Constants.QueryType.NEXT_TOKEN; parameter.NextToken = shipmentList.NextToken; var result = amznConn.FulFillmentInbound.GetShipmentItems(parameter); shipmentList.ItemData.AddRange(result); shipmentList.NextToken = result.NextToken; } } private List TransposeModel(FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.InboundShipmentItemList shipmentResult) { var returnList = new List(); for (var i = 0; i < shipmentResult.Count; i++) { var item = new Model.AmazonFba.ShipmentItemInfo(); // under new SP-API there are more details to be used, if needed item.AmazonFNSKU = shipmentResult[i].FulfillmentNetworkSKU; item.AmazonShipmentId = shipmentResult[i].ShipmentId; item.QuantityAllocated = shipmentResult[i].QuantityShipped.GetValueOrDefault(); item.QuantityReceived = shipmentResult[i].QuantityReceived.GetValueOrDefault(); item.SKUNumber = shipmentResult[i].SellerSKU; returnList.Add(item); } return returnList; } private List TransposeModel(FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.GetShipmentItemsResult shipmentResult) { var returnList = new List(); for (var i = 0; i < shipmentResult.ItemData.Count; i++) { var item = new Model.AmazonFba.ShipmentItemInfo(); // under new SP-API there are more details to be used, if needed item.AmazonFNSKU = shipmentResult.ItemData[i].FulfillmentNetworkSKU; item.AmazonShipmentId = shipmentResult.ItemData[i].ShipmentId; item.QuantityAllocated = shipmentResult.ItemData[i].QuantityShipped.GetValueOrDefault(); item.QuantityReceived = shipmentResult.ItemData[i].QuantityReceived.GetValueOrDefault(); item.SKUNumber = shipmentResult.ItemData[i].SellerSKU; returnList.Add(item); } return returnList; } } }