mirror of
https://github.com/stokebob/bnhtrade.git
synced 2026-05-18 19:48:23 +00:00
129 lines
5.6 KiB
C#
129 lines
5.6 KiB
C#
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<Model.AmazonFba.ShipmentItemInfo> GetByDateRange(DateTime utcDateTimeAfter, DateTime utcDateTimeBefore)
|
|
{
|
|
var result = new List<Model.AmazonFba.ShipmentItemInfo>();
|
|
|
|
// 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<Model.AmazonFba.ShipmentItemInfo> GetByShipmentId(string shipmentId)
|
|
{
|
|
var result = new List<Model.AmazonFba.ShipmentItemInfo>();
|
|
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<Model.AmazonFba.ShipmentItemInfo> TransposeModel(FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.InboundShipmentItemList shipmentResult)
|
|
{
|
|
var returnList = new List<Model.AmazonFba.ShipmentItemInfo>();
|
|
|
|
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<Model.AmazonFba.ShipmentItemInfo> TransposeModel(FikaAmazonAPI.AmazonSpApiSDK.Models.FulfillmentInbound.GetShipmentItemsResult shipmentResult)
|
|
{
|
|
var returnList = new List<Model.AmazonFba.ShipmentItemInfo>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|