public static List <partsdb> GetDerivedParts(int productIndex) { using (var con = new InventoryMgmtEntities()) { List <productspart> productPartList = con.productsparts.Where(n => n.productid == productIndex).ToList(); List <partsdb> tempList = new List <partsdb>(); for (int i = 0; i < productPartList.Count(); i++) { //Get part based on productPartLists.partID partsdb partTemp = con.partsdbs.Find(productPartList[i].partid); partDerived tempDerivedPart = new partDerived(); tempDerivedPart.zproductpartid = productPartList[i].productpartid; tempDerivedPart.name = partTemp.name; tempDerivedPart.instock = partTemp.instock; tempDerivedPart.max = partTemp.max; tempDerivedPart.min = partTemp.min; tempDerivedPart.partid = partTemp.partid; tempDerivedPart.price = partTemp.price; tempDerivedPart.type = partTemp.type; tempDerivedPart.createdby = partTemp.createdby; tempDerivedPart.details = partTemp.details; tempDerivedPart.lastmodified = partTemp.lastmodified; //partDerived tempDerived = (partDerived)partTemp; //cast operation instead? tempList.Add(tempDerivedPart); } return(tempList); } }
public static bool ModifyProductImproved(productsdb product, List <partsdb> partsList, List <productspart> originalParts) { using (var con = new InventoryMgmtEntities()) { //Update Part Details productsdb productTemp = con.productsdbs.Find(product.productid);; productTemp.name = product.name; productTemp.min = product.min; productTemp.max = product.max; productTemp.instock = product.instock; productTemp.price = product.price; productTemp.lastmodified = DateTime.Now; //Split list into associated parts that already exist and new parts List <partDerived> partDerivedList = new List <partDerived>(); List <partsdb> realParts = new List <partsdb>(); for (int i = 0; i < partsList.Count(); i++) { if (partsList[i].GetType() == typeof(partDerived)) { partDerived tempPart = (partDerived)(object)partsList[i]; partDerivedList.Add(tempPart); } else { realParts.Add(partsList[i]); } } //Take original list and derived part list, where there is a match remove part from partListfinal List <productspart> partListFinal = originalParts; for (int i = 0; i < originalParts.Count(); i++) { for (int j = 0; j < partDerivedList.Count(); j++) { if (originalParts[i].productpartid == partDerivedList[j].zproductpartid) { partListFinal.RemoveAll(u => u.productpartid == (int)partDerivedList[j].zproductpartid); } } var temp = partListFinal; } //Remove all productparts from the db that are in the list partListFinal if (partListFinal.Count() > 0) { for (int k = 0; k < partListFinal.Count(); k++) { productspart tempProductPart = con.productsparts.Find(partListFinal[k].productpartid); con.productsparts.Remove(tempProductPart); } } //Add new associated parts for (int l = 0; l < realParts.Count(); l++) { productspart temp = new productspart(); temp.productid = product.productid; temp.partid = realParts[l].partid; con.productsparts.Add(temp); } con.SaveChanges(); return(true); } }