mirror of
https://github.com/stokebob/bnhtrade.git
synced 2026-05-18 19:48:23 +00:00
Feature: Sync MWS Shipment with Database
Various restructuring and misc. features added. Removed reliance on ABrain Amazon MWS NuGet package, added Amazon's own C# lib
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace bnhtrade.Core.Data.Database.SKU
|
||||
{
|
||||
public class GetSKUId
|
||||
{
|
||||
private Dictionary<string, int> SKUIdBySKUNumber { get; set; }
|
||||
private Dictionary<int, string> SKUNumberBySKUId { get; set; }
|
||||
private string SqlConnectionString { get; set; }
|
||||
public GetSKUId(string sqlConnectionString)
|
||||
{
|
||||
// setup sql parameters
|
||||
if (sqlConnectionString.Length == 0)
|
||||
{
|
||||
throw new Exception("Zero length sql connectionstring passed");
|
||||
}
|
||||
SqlConnectionString = sqlConnectionString;
|
||||
|
||||
// set paramters
|
||||
SKUIdBySKUNumber = new Dictionary<string, int>();
|
||||
SKUNumberBySKUId = new Dictionary<int, string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get SKUId by SKU number.
|
||||
/// </summary>
|
||||
/// <param name="skuNumber">SKU Number to lookup Id</param>
|
||||
/// <param name="enableLegacy">If SKUId is can not be retrived, function will attempt to lookup value by sku count.</param>
|
||||
/// <param name="forceRequery">Results are chached, option forces database requery.</param>
|
||||
/// <returns>Database SKUId or Exception if not found.</returns>
|
||||
public int BySKUNumber(string skuNumber, bool enableLegacy = false, bool forceRequery = false)
|
||||
{
|
||||
if (forceRequery == false && SKUIdBySKUNumber.ContainsKey(skuNumber))
|
||||
{
|
||||
return SKUIdBySKUNumber[skuNumber];
|
||||
}
|
||||
|
||||
int skuId = 0;
|
||||
using (SqlConnection conn = new SqlConnection(SqlConnectionString))
|
||||
{
|
||||
conn.Open();
|
||||
using (SqlCommand cmd = new SqlCommand(@"
|
||||
SELECT skuSkuID
|
||||
FROM tblSku
|
||||
WHERE skuSkuNumber=@skuNumber;
|
||||
", conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@skuNumber", skuNumber);
|
||||
|
||||
object obj = cmd.ExecuteScalar();
|
||||
if (!(obj == null) || !(obj == DBNull.Value))
|
||||
{
|
||||
skuId = Convert.ToInt32(obj);
|
||||
}
|
||||
}
|
||||
// if that didn't work, lookup buy sku count
|
||||
if (skuId == 0 && skuNumber.Length == 6 && enableLegacy == true)
|
||||
{
|
||||
int skucount;
|
||||
bool okay = int.TryParse(skuNumber, out skucount);
|
||||
if (okay)
|
||||
{
|
||||
using (SqlCommand cmd = new SqlCommand(
|
||||
"SELECT skuSkuID FROM tblSku WHERE skuSkuCount=@skuCount;"
|
||||
, conn))
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@skuCount", skucount);
|
||||
|
||||
object obj = cmd.ExecuteScalar();
|
||||
if (!(obj == null) || !(obj == DBNull.Value))
|
||||
{
|
||||
skuId = Convert.ToInt32(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// update cache
|
||||
if (skuId > 0)
|
||||
{
|
||||
if (SKUIdBySKUNumber.ContainsKey(skuNumber))
|
||||
{ SKUIdBySKUNumber.Remove(skuNumber); }
|
||||
SKUIdBySKUNumber.Add(skuNumber, skuId);
|
||||
|
||||
if (SKUNumberBySKUId.ContainsKey(skuId))
|
||||
{ SKUNumberBySKUId.Remove(skuId); }
|
||||
SKUNumberBySKUId.Add(skuId, skuNumber);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unable to retrive an SkuID for SKU#" + skuNumber);
|
||||
}
|
||||
|
||||
return skuId;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user