ICollection <POIntertekSKUOutput> ITypeConverter <POO, ICollection <POIntertekSKUOutput> > .Convert(POO source, ICollection <POIntertekSKUOutput> destination, ResolutionContext context) { List <POIntertekSKUOutput> poSkus = new List <POIntertekSKUOutput>(); POProductOutput poIntertekProduct = new POProductOutput(); source.POSkus?.ToList().ForEach(x => { POProductFlagsOutput productFlagsOutput = new POProductFlagsOutput { Sku = x.SKU, IntlSafetyTransitTestRequired = !string.IsNullOrEmpty((x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired)?.FlagValue.ConvertToString())) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired).FlagValue.ConvertToString() : "N", IsChildClothCostume = !string.IsNullOrEmpty(x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume)?.FlagValue.ConvertToString()) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume).FlagValue.ConvertToString() : "N", IsGlassDishAdultJewelry = !string.IsNullOrEmpty(x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry)?.FlagValue.ConvertToString()) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry).FlagValue.ConvertToString() : "N", NonPaintTestingRequired = !string.IsNullOrEmpty(x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired)?.FlagValue.ConvertToString()) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired).FlagValue.ConvertToString() : "N", RandomInspectionRequired = !string.IsNullOrEmpty(x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired)?.FlagValue.ConvertToString()) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired).FlagValue.ConvertToString() : "N", CPSIATestingRequired = !string.IsNullOrEmpty(x.POProduct?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired)?.FlagValue.ConvertToString()) ? x.POProduct.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired).FlagValue.ConvertToString() : "N", }; if (x.POProduct != null) { poIntertekProduct = new POProductOutput { SKU = x.SKU, ClassCode = x.POProduct.Class, DepartmentName = x.POProduct.ClassDescription, ClassName = x.POProduct.ClassDescription, DepartmentCode = x.POProduct.Department, HTSCode = x.POProduct.HTSCode, MasterPackQuantity = x.POProduct.MasterPackQuantity.HasValue ? x.POProduct.MasterPackQuantity.Value.ToString() : "0", ClassShortDesc = x.POProduct.ClassShortDesc, SkuDesc = x.POProduct.SkuDesc, SubClass = x.POProduct.SubClass, SubclassDescription = x.POProduct.SubclassDescription, Country = x.POProduct.CountryOfOrigin, PrepackChildQuantity = (x.POProduct.ProductPrepack != null && x.POProduct.ProductPrepack.Count > 0) ? Convert.ToString(x.POProduct.ProductPrepack.Find(y => y.Prepack == x.PrepackId && y.Sku == x.SKU).Quantity) : string.Empty, PrepackTotalQuantity = (x.POProduct.ProductPrepack != null && x.POProduct.ProductPrepack.Count > 0) ? Convert.ToString(x.POProduct.ProductPrepack.Where(y => y.Prepack == x.PrepackId).Sum(y => y.Quantity)) : "0", ProductFlagsOutput = productFlagsOutput }; } poSkus.Add(new POIntertekSKUOutput { PONumber = x.PONumber.ToString(), BuyQuantity = x.BuyQuantity.HasValue ? x.BuyQuantity.Value.ToString() : "0", CreateDate = x.CreateDate.HasValue ? x.CreateDate.Value.Date.ToString("yyyyMMdd") : string.Empty, DutyCost = x.DutyCost.HasValue ? Math.Round(x.DutyCost.GetValueOrDefault(), 2).ToString() : "0", FirstCost = x.FirstCost.HasValue ? Math.Round(x.FirstCost.GetValueOrDefault(), 2).ToString() : "0", SKU = x.SKU, POProduct = poIntertekProduct, StatusCode = x.StatusCode, DutyPctOfFOB = x.DutyPctOfFOB.HasValue ? Math.Round(x.DutyPctOfFOB.GetValueOrDefault(), 2).ToString() : "0", EstimatedLandedCost = x.EstimatedLandedCost.HasValue ? Math.Round(x.EstimatedLandedCost.GetValueOrDefault(), 2).ToString() : "0", MasterPackCubicFeet = x.MasterPackCubicFeet.HasValue ? Math.Round(x.MasterPackCubicFeet.GetValueOrDefault(), 2).ToString() : "0", PrepackId = x.PrepackId, ApprovalLetter = x.ApprovalLetter.HasValue ? (x.ApprovalLetter.Value == true ? "Y" : "N") : "N" }); }); return(poSkus); }
public async void UpdatePOObject(POIntertekOutput poobject, MMSProductEvent product, POSkus posku) { try { var prodhierarchy = _lookUpService.GetProductHierarchy(product.SubClass).Result; //check if exists if (poobject.POSkus != null && poobject.POSkus.Count > 0 && poobject.POSkus.Exists(y => y.SKU == posku.SKU)) { var poskutobeupdated = poobject.POSkus.Find(y => y.SKU == posku.SKU); poskutobeupdated.POProduct.ClassCode = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Class; poskutobeupdated.POProduct.DepartmentName = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Description; poskutobeupdated.POProduct.ClassName = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Description; poskutobeupdated.POProduct.DepartmentCode = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Department; poskutobeupdated.POProduct.ClassShortDesc = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.ShortDesc; poskutobeupdated.POProduct.HTSCode = product.HTSCode; poskutobeupdated.POProduct.Country = product.ProductVendors.Find(y => y.Sku == product.Sku)?.CountryOfOrigin; poskutobeupdated.POProduct.SkuDesc = product.SkuDesc; poskutobeupdated.POProduct.MasterPackQuantity = product.ProductVendors.Find(y => y.Sku == product.Sku)?.MasterPackQuantity; // Product Flags poskutobeupdated.POProduct.ProductFlagsOutput.IntlSafetyTransitTestRequired = !string.IsNullOrEmpty((product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired)?.FlagValue.ConvertToString())) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.IsChildClothCostume = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.IsGlassDishAdultJewelry = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.NonPaintTestingRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.RandomInspectionRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.CPSIATestingRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired).FlagValue.ConvertToString() : "N"; poskutobeupdated.POProduct.ProductFlagsOutput.Sku = product.Sku; } else { POProductFlagsOutput productFlagsOutput = new POProductFlagsOutput { Sku = product.Sku, IntlSafetyTransitTestRequired = !string.IsNullOrEmpty((product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired)?.FlagValue.ConvertToString())) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IntlSafetyTransitTestRequired).FlagValue.ConvertToString() : "N", IsChildClothCostume = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsChildClothCostume).FlagValue.ConvertToString() : "N", IsGlassDishAdultJewelry = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.IsGlassDishAdultJewelry).FlagValue.ConvertToString() : "N", NonPaintTestingRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.NonPaintTestingRequired).FlagValue.ConvertToString() : "N", RandomInspectionRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.RandomInspectionRequired).FlagValue.ConvertToString() : "N", CPSIATestingRequired = !string.IsNullOrEmpty(product?.ProductFlags?.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired)?.FlagValue.ConvertToString()) ? product.ProductFlags.Find(y => y.FlagKey == ProductFlagSettings.CPSIATestingRequired).FlagValue.ConvertToString() : "N", }; POProductOutput poProductOutput = new POProductOutput { ClassCode = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Class, DepartmentName = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Department, ClassName = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Description, ClassShortDesc = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.ShortDesc, DepartmentCode = prodhierarchy.Find(y => y.SubClass == product.SubClass)?.Department, HTSCode = product.HTSCode, Country = product.ProductVendors?.Find(y => y.Sku == product.Sku)?.CountryOfOrigin, MasterPackQuantity = !string.IsNullOrEmpty(product.ProductVendors?.Find(y => y.Sku == product.Sku)?.MasterPackQuantity) ? product.ProductVendors?.Find(y => y.Sku == product.Sku)?.MasterPackQuantity : "0", SkuDesc = product.SkuDesc, SKU = product.Sku, //Product Flags ProductFlagsOutput = productFlagsOutput }; POIntertekSKUOutput POSkusOutput = new POIntertekSKUOutput { PONumber = posku.PONumber.ToString(), BuyQuantity = posku.BuyQuantity.HasValue? posku.BuyQuantity.Value.ToString():"0", CreateDate = posku.CreateDate.Value.Date.ToString("yyyyMMdd"), DutyCost = posku.DutyCost.HasValue ? Math.Round(posku.DutyCost.GetValueOrDefault(), 2).ToString() :"0", FirstCost = posku.FirstCost.HasValue ? Math.Round(posku.FirstCost.GetValueOrDefault(), 2).ToString() : "0", SKU = posku.SKU, DutyPctOfFOB = posku.DutyPctOfFOB.HasValue? Math.Round(posku.DutyPctOfFOB.GetValueOrDefault(), 2).ToString():"0", EstimatedLandedCost = posku.EstimatedLandedCost.HasValue ? Math.Round(posku.EstimatedLandedCost.GetValueOrDefault(), 2).ToString() : "0", MasterPackCubicFeet = posku.MasterPackCubicFeet.HasValue? Math.Round(posku.MasterPackCubicFeet.GetValueOrDefault(), 2).ToString():"0", PrepackId = posku.PrepackId, ApprovalLetter = posku.ApprovalLetter.HasValue ? (posku.ApprovalLetter.Value == true ? "Y" : "N") : "N", StatusCode = posku.StatusCode, POProduct = poProductOutput, }; if (poobject.POSkus == null) { poobject.POSkus = new System.Collections.Generic.List <POIntertekSKUOutput>(); } poobject.POSkus.Add(POSkusOutput); } } catch (Exception ex) { _logger.LogError(ex, "UpdatePOObject - Failed Updating IntertekPO: {Reason}", ex.Message); } }