private bool validateGasketAgainstMaterialSize(gGasketCL g) { string sSql = " SELECT ms.materialLength * 1000 materialLengthMm, ms.materialWidth * 1000 materialWidthMm " + " FROM gMaterialThickn mt " + " join gMaterialSize ms on mt.materialSizeId = ms.materialSizeId " + " where mt.materialThicknId = :materialThicknId "; string dummy = ""; NxParameterCollection pc = new NxParameterCollection(); pc.Add("materialThicknId", g.materialThicknId); DataTable dt = cdb.getData(sSql, ref dummy, pc); if (dt.Rows.Count > 0) { Decimal materialLength = Convert.ToDecimal(dt.Rows[0]["materialLengthMm"]); Decimal materialWidth = Convert.ToDecimal(dt.Rows[0]["materialWidthMm"]); if (g.outerDiam > materialLength || g.innerDiam > materialWidth) { return(false); } } else { return(false); } return(true); }
private void setParameters(NxParameterCollection np, gGasketCL g, ReparatorCL rep) { DateTime now = DateTime.Now; np.Add("gasketId", g.gasketId); np.Add("gasketTypeId", g.gasketTypeId); np.Add("materialThicknId", g.materialThicknId); np.Add("outerDiam", g.outerDiam); np.Add("innerDiam", g.innerDiam); np.Add("reusableMaterial", g.reusableMaterial); np.Add("cuttingMargin", g.cuttingMargin); np.Add("standardPriceProduct", g.standardPriceProduct); np.Add("handlingTime", g.handlingTime); np.Add("Type2SecHoleCount", g.Type2SecHoleCount); np.Add("Type2SecHoleDiam", g.Type2SecHoleDiam); np.Add("price", g.price); np.Add("note", g.note); np.Add("description", g.description); np.Add("reg", rep.AnvID); np.Add("regdate", now); }
/// <summary> /// Returns all gaskets or just one /// If gasketId = 0 all registered gasket will be returned /// if gasketId > 0 then the gasket with that primary key /// will be returned. /// If a gasket id is provided and this gasket don't exists /// then the errorCode will return -100 and the calling program /// needs to take the correct action. /// </summary> /// <param name="ident"></param> /// <param name="gasketId"></param> /// <returns></returns> /// 2018-08-17 kjbo public List <gGasketCL> getGasket(string ident, int gasketId) { List <gGasketCL> gasketList = new List <gGasketCL>(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { gGasketCL gasket = new gGasketCL(); gasket.ErrCode = -10; gasket.ErrMessage = "Ogiltigt login"; gasketList.Add(gasket); return(gasketList); } string sSql = " select g.gasketId, g.gasketTypeId, g.materialThicknId, g.outerDiam, g.innerDiam, g.reusableMaterial, g.cuttingMargin, " + " g.standardPriceProduct, g.handlingTime, g.price, g.note, g.description " + ", coalesce(g.Type2SecHoleCount,0) Type2SecHoleCount, coalesce(g.Type2SecHoleDiam,0) Type2SecHoleDiam " + " , gt.\"description\" materialThicknName " + " , gs.\"description\" materialSizeName " + " , gm.material materialName " + " , gtp.gasketType gasketTypeName " + ", gt.buyPrice / ((gs.materialLength * 1000) * (gs.materialWidth * 1000)) materialCostMm2 " + ", gt.SellPrice / gt.buyPrice materialMarginPercent " + ", (gt.cuttingTime * 1000) / 60 cuttingSpeedMmSek " + " from gGasket g " + " join gMaterialThickn gt on g.materialThicknId = gt.materialThicknId " + " join gMaterialSize gs on gt.materialSizeId = gs.materialSizeId " + " join gMaterial gm on gs.materialId = gm.materialId " + " join gGasketType gtp on g.gasketTypeId = gtp.gasketTypeId "; if (gasketId > 0) { sSql += " where gasketId = :gasketId "; } NxParameterCollection pc = new NxParameterCollection(); if (gasketId > 0) { pc.Add("gasketId", gasketId); } string errText = ""; DataTable dt = cdb.getData(sSql, ref errText, pc); int errCode = -100; if (errText != "") { gGasketCL gasket = new gGasketCL(); if (errText.Length > 2000) { errText = errText.Substring(1, 2000); } gasket.ErrCode = errCode; gasket.ErrMessage = errText; gasketList.Add(gasket); return(gasketList); } if (gasketId > 0 && dt.Rows.Count == 0) { gGasketCL gasket = new gGasketCL(); gasket.ErrCode = -100; gasket.ErrMessage = "Det finns ingen packning med id " + gasketId.ToString(); gasketList.Add(gasket); return(gasketList); } foreach (DataRow dr in dt.Rows) { gGasketCL gasket = new gGasketCL(); gasket.gasketId = Convert.ToInt32(dr["gasketId"]); gasket.gasketTypeId = Convert.ToInt32(dr["gasketTypeId"]); gasket.materialThicknId = Convert.ToInt32(dr["materialThicknId"]); gasket.outerDiam = Convert.ToDecimal(dr["outerDiam"]); gasket.innerDiam = Convert.ToDecimal(dr["innerDiam"]); gasket.reusableMaterial = Convert.ToDecimal(dr["reusableMaterial"]); gasket.cuttingMargin = Convert.ToDecimal(dr["cuttingMargin"]); gasket.standardPriceProduct = Convert.ToBoolean(dr["standardPriceProduct"]); gasket.handlingTime = Convert.ToDecimal(dr["handlingTime"]); gasket.Type2SecHoleCount = Convert.ToInt32(dr["Type2SecHoleCount"]); gasket.Type2SecHoleDiam = Convert.ToDecimal(dr["Type2SecHoleDiam"]); gasket.price = Convert.ToDecimal(dr["price"]); gasket.note = dr["note"].ToString(); gasket.description = dr["description"].ToString(); gasket.materialName = dr["materialName"].ToString(); gasket.materialSizeName = dr["materialSizeName"].ToString(); gasket.materialThicknName = dr["materialThicknName"].ToString(); gasket.gasketTypeName = dr["gasketTypeName"].ToString(); gasket.materialCostMm2 = Convert.ToDouble(dr["materialCostMm2"]); gasket.materialMarginPercent = Convert.ToDouble(dr["materialMarginPercent"]); gasket.cuttingSpeedMmSek = Convert.ToDouble(dr["cuttingSpeedMmSek"]); if (gasket.gasketTypeId == 1 || gasket.gasketTypeId == 2) { gasket.cuttingLengthOuterMm = Convert.ToDouble(gasket.outerDiam) * Math.PI; gasket.cuttingLengthInnerMm = Convert.ToDouble(gasket.innerDiam) * Math.PI; Double dArea = Convert.ToDouble((gasket.outerDiam + (gasket.cuttingMargin * 2)) * (gasket.outerDiam + (gasket.cuttingMargin * 2))); Double reusable = Convert.ToDouble(1 - (gasket.reusableMaterial / 100)); gasket.materialArea = dArea * reusable; } // 2018-08-30 // Add time to cut the exra holes when typeId = 2 if (gasket.gasketTypeId == 2) { gasket.cuttingLengthOuterMm += (Convert.ToDouble(gasket.Type2SecHoleDiam) * Math.PI) * gasket.Type2SecHoleCount; } gasket.ErrCode = 0; gasket.ErrMessage = ""; gasketList.Add(gasket); } return(gasketList); }
/// <summary> /// Validates and saves a gasket to the database /// Always check ErrCode and ErrMessage for errors /// Returns the new created gasket /// </summary> /// <param name="ident"></param> /// <param name="gasket"></param> /// <returns></returns> /// 2018-08-17 KJBO public gGasketCL saveGasket(string ident, gGasketCL gasket) { gGasketCL gasketRet = new gGasketCL(); CReparator cr = new CReparator(); int identOK = cr.checkIdent(ident); if (identOK == -1) { gasketRet.ErrCode = -10; gasketRet.ErrMessage = "Ogiltigt login"; return(gasketRet); } // If there is only one type of gasket // then this value will be set to the // gasket type field. int gasketTypeId = getGasketTypeId(); if (gasketTypeId > 0) { gasket.gasketTypeId = 1; } if (gasket.gasketTypeId <= 0) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningstyp måste väljas"; return(gasketRet); } if (gasket.materialThicknId <= 0) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningsmaterial måste väljas"; return(gasketRet); } if (!validateGasketAgainstMaterialSize(gasket)) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Packningens ytterdiameter är större än valt material"; return(gasketRet); } if (gasket.outerDiam <= 0 || gasket.outerDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Ytterdiameter måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } if (gasket.innerDiam <= 0 || gasket.innerDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Innerdiameter måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } if (gasket.innerDiam > gasket.outerDiam) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Ytterdiameter måste vara större än innerdiameter"; return(gasketRet); } if (gasket.reusableMaterial < 0 || gasket.reusableMaterial >= 100) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Återanvändbart material har felaktig procentsats"; return(gasketRet); } if (gasket.cuttingMargin < 0 || gasket.cuttingMargin > 100) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktig skärmarginal"; return(gasketRet); } if (gasket.handlingTime < 0 || gasket.handlingTime > 10000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktig hanteringstid"; return(gasketRet); } if (gasket.price < 0 || gasket.price > 1000000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Felaktigt pris"; return(gasketRet); } if (gasket.gasketTypeId == 2) { if (gasket.Type2SecHoleCount < 1) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Antal yttre hål felaktigt angivet"; return(gasketRet); } Decimal materialLeft = gasket.outerDiam - gasket.innerDiam; materialLeft = materialLeft / 2; //materialLeft -= gasket.cuttingMargin * 2; if (gasket.Type2SecHoleDiam > materialLeft) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Diameter på yttre hål måste vara mindre än " + materialLeft.ToString() + " mm."; return(gasketRet); } if (gasket.Type2SecHoleDiam <= 0 || gasket.Type2SecHoleDiam > 100000) { gasketRet.ErrCode = -1; gasketRet.ErrMessage = "Diameter på yttre hål måste vara större än 0 (och mindre än 100000)"; return(gasketRet); } } string errTxt = ""; string sSql = ""; if (gasket.gasketId == 0) { sSql = getInsertSql(); } else { sSql = getUpdateSql(); } NxParameterCollection np = new NxParameterCollection(); ReparatorCL rep = cr.getReparator(ident); setParameters(np, gasket, rep); errTxt = ""; int iRc = cdb.updateData(sSql, ref errTxt, np); if (errTxt != "") { if (errTxt.Length > 2000) { errTxt = errTxt.Substring(1, 2000); } gasketRet.ErrCode = -100; gasketRet.ErrMessage = errTxt; return(gasketRet); } if (gasket.gasketId == 0) { gasket.gasketId = getLastId(); } List <gGasketCL> gasketList = getGasket(ident, gasket.gasketId); return(gasketList[0]); }