public IDiamond Map(ISupplier supplierDiamond) { var inv = new T(); supplierDiamond.ExecuteBeforeMapping(); switch (pricePolicy) { case PricePolicy.AsIs: inv.totalprice = supplierDiamond.Price; break; case PricePolicy.MultiplyByWeight: inv.totalprice = supplierDiamond.Price * supplierDiamond.Weight; break; case PricePolicy.MultiplyByWeightAndCalibrate: inv.totalprice = supplierDiamond.Price * supplierDiamond.Weight * priceCalibration; break; case PricePolicy.Calibrate: inv.totalprice = supplierDiamond.Price * priceCalibration; break; default: throw new ArgumentOutOfRangeException(); } inv.inventory_code = supplierDiamond.InventoryCode; inv.supplier_code = supplierDiamond.SupplierCode; inv.clarity = MapOrDefault("clarity", supplierDiamond.Clarity); inv.color = MapOrDefault("color", supplierDiamond.Color); inv.depth = supplierDiamond.DepthPresentage; inv.fluorescence = MapOrDefault("fluorescence", supplierDiamond.Fluorescence); inv.length = supplierDiamond.Length; inv.polish = MapOrDefault("polish", supplierDiamond.Polish); inv.report = MapOrDefault("report", supplierDiamond.Report); inv.shape = MapOrDefault("shape", supplierDiamond.Shape); inv.symmetrical = MapOrDefault("symmetry", supplierDiamond.Symmetry); inv.table = supplierDiamond.Table; inv.width = supplierDiamond.Width; inv.weight = supplierDiamond.Weight; inv.height = supplierDiamond.Height; inv.report_number = supplierDiamond.ReportNumber ?? "0"; inv.crown = 1; inv.culet = 1; inv.grindle = supplierDiamond.Girdle; inv.reportimg = ""; inv.diamondid = supplierDiamond.DiamondID; inv.cut = MapOrDefault("cut", supplierDiamond.Cut); return(inv); }