Files
bnhtrade/src/bnhtrade.Core/Data/Amazon/FulFillmentInbound/GetShipmentItems.cs
T
2024-04-11 12:26:13 +01:00

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