public ActionResult ElementSelect(string selection) { int id = 0; try { id = Convert.ToInt32(selection); } catch { } DefectEdit DE = new DefectEdit(); Element E = db.Elements.Where(x => x.Id == id).First(); List <Defect> D = db.Defects.Where(x => x.ElementId == E.Id).Distinct().ToList(); List <DefWork> W = db.DefWorks.Where(x => x.ElementId == E.Id).Distinct().ToList(); return(View(DE)); }
public ActionResult DefectEdit(string selection, string del, string addd, string addw, int xd = 0, int xw = 0) { List <Element> Elements = db.Elements.ToList(); List <SelectListItem> Result = new List <SelectListItem>(); foreach (Element El in Elements) { SelectListItem R = new SelectListItem(); R.Text = El.Name + "(" + El.ElementType + ")"; R.Value = El.Id.ToString(); Result.Add(R); } int id = Elements[0].Id; try { if (selection != null) { id = Convert.ToInt32(selection); } } catch { } if (addd != null) { Defect d = new Defect(); d.Def = addd; d.ElementId = id; db.Defects.Add(d); db.SaveChanges(); } if (addw != null) { DefWork d = new DefWork(); d.Work = addw; d.ElementId = id; db.DefWorks.Add(d); db.SaveChanges(); } DefectEdit DE = new DefectEdit(); Element E = null; try { E = db.Elements.Where(x => x.Id == id).First(); } catch { } if (E != null) { List <Defect> D = new List <Defect>(); try { D = db.Defects.Where(x => x.ElementId == E.Id).Distinct().ToList(); } catch { } List <DefWork> W = new List <DefWork>(); try { W = db.DefWorks.Where(x => x.ElementId == E.Id).Distinct().ToList(); } catch { } //если есть что почистить if (del != null) { del = del.Replace(" ", ""); if (del != "") { List <Defect> DD = new List <Defect>(); try { DD = D.Where(x => x.Def.Contains(del)).ToList(); foreach (Defect c in DD) { D.Remove(c); } db.Defects.RemoveRange(DD); db.SaveChanges(); } catch { } /* List<DefWork> DW = new List<DefWork>(); * try * { * DW = W.Where(x => x.Work.Contains(del)).ToList(); * foreach (DefWork c in DW) * { * W.Remove(c); * } * db.DefWorks.RemoveRange(DW); * db.SaveChanges(); * * } * catch { } */ } } if (xd != 0) { try { Defect DD = db.Defects.Where(x => x.Id == xd).First(); D.Remove(DD); db.Defects.Remove(DD); db.SaveChanges(); } catch (Exception e) { } } if (xw != 0) { try { DefWork DD = db.DefWorks.Where(x => x.Id == xw).First(); W.Remove(DD); db.DefWorks.Remove(DD); db.SaveChanges(); } catch (Exception e) { } } //удаляем дубликаты навсегда List <Defect> NoD = new List <Defect>(); List <DefWork> NoW = new List <DefWork>(); //удаляем дубликаты дефектов foreach (Defect DD in D) { List <Defect> N = new List <Defect>(); try { N = NoD.Where(x => x.Def.Replace(" ", "").ToLower().Equals(DD.Def.Replace(" ", "").ToLower())).ToList(); if (N.Count > 0) { try {//если уже есть такой в последовательности то удаляем db.Defects.Remove(DD); db.SaveChanges(); } catch { } } else { NoD.Add(DD); } } catch { //если нет дубликата то добавляем в не дублированные NoD.Add(DD); } } //удаляем дубликаты работ foreach (DefWork DD in W) { List <DefWork> N = new List <DefWork>(); try { N = NoW.Where(x => x.Work.Replace(" ", "").ToLower().Equals(DD.Work.Replace(" ", "").ToLower())).ToList(); if (N.Count > 0) { try {//если уже есть такой в последовательности то удаляем db.DefWorks.Remove(DD); db.SaveChanges(); } catch { } } else { NoW.Add(DD); } } catch { //если нет дубликата то добавляем в не дублированные NoW.Add(DD); } } D = NoD.OrderBy(x => x.Def).ToList(); W = NoW.OrderBy(x => x.Work).ToList(); DE.Element = E; DE.DefWork = W; DE.Defect = D; } // int ind = Convert.ToInt16(Result.Where(x => x.Value.Equals(id.ToString())).Select(x=>x.Value).First()); // SelectListItem S = Result[ind]; // Result.Remove(S); // Result.Insert(0, S); ViewBag.Name = id; ViewBag.Result = Result; return(View(DE)); }