public int AddPredpriyatieKontaktSave2(PredpriyatieKontaktJSON kontakt) { if (kontakt.IDPred == 0) kontakt.IDPred = Convert.ToInt32(Request.Params["IDPred"]); using (var ugtu_db = new UGTU_DBDataContext()) { if ( kontakt.ValSvyazi!=null || kontakt.idNaznach!=null ) { int? idKL = null; if (kontakt.FIO == null && kontakt.Otdel == null) { idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == null).Select(m => m.IDKontaktL).SingleOrDefault(); } if (kontakt.FIO == null && kontakt.Otdel != null) { idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == kontakt.Otdel).Select(m => m.IDKontaktL).SingleOrDefault(); if (idKL == 0) idKL = null; } if (idKL == null) { KontaktLico KL = new KontaktLico() { idDolznost = AddDolgnost(kontakt.Dolgnost), FIOKontaktLico = kontakt.FIO, Otdel = kontakt.Otdel }; ugtu_db.KontaktLico.InsertOnSubmit(KL); ugtu_db.SubmitChanges(); idKL = KL.IDKontaktL; } if (kontakt.idNaznach != null) { foreach (var idNaz in kontakt.idNaznach) { KontaktLico_NaznachKontaktLico KL_N = new KontaktLico_NaznachKontaktLico() { IDPredpriyatie = kontakt.IDPred, IDKontaktL = (int)idKL, IDNaznachKontaktL = (int)idNaz }; ugtu_db.KontaktLico_NaznachKontaktLico.InsertOnSubmit(KL_N); ugtu_db.SubmitChanges(); } } if (kontakt.idTipSvyazi != null) { for (int i = 0; i < kontakt.idTipSvyazi.Count; i++)//возможна ошибка { KontaktLico_Svyaz KL_S = new KontaktLico_Svyaz() { IDKontaktL = (int)idKL, IDTSvyazi = (int)kontakt.idTipSvyazi[i], Znach = kontakt.ValSvyazi[i], IDPredpriyatie = kontakt.IDPred, }; ugtu_db.KontaktLico_Svyaz.InsertOnSubmit(KL_S); ugtu_db.SubmitChanges(); } } return 1; } else { return 0; } } }
public JsonResult GetKontakt(int idK, int idP) { using (var ugtu_db = new UGTU_DBDataContext()) { PredpriyatieKontaktJSON PKJson = new PredpriyatieKontaktJSON(); var rr = (from KL in ugtu_db.KontaktLico join D in ugtu_db.Dolznost on KL.idDolznost equals D.IDDolznost into g1 from D in g1.DefaultIfEmpty() join KL_N in ugtu_db.KontaktLico_NaznachKontaktLico on KL.IDKontaktL equals KL_N.IDKontaktL into g3 from KL_N in g3.DefaultIfEmpty() join naznKL in ugtu_db.NaznachKontaktLico on KL_N.IDNaznachKontaktL equals naznKL.IDNaznachKontaktL into g4 from naznKL in g4.DefaultIfEmpty() join KL_S in ugtu_db.KontaktLico_Svyaz on KL.IDKontaktL equals KL_S.IDKontaktL into g5 from KL_S in g5.DefaultIfEmpty() join TS in ugtu_db.TipSvyazi on KL_S.IDTSvyazi equals TS.IDTSvyazi into g6 from TS in g6.DefaultIfEmpty() where KL.IDKontaktL==idK select new { idKontakt = KL.IDKontaktL, idPred1 = (int?)KL_N.IDPredpriyatie, idPred2 = (int?)KL_S.IDPredpriyatie, fio = KL.FIOKontaktLico, dolgnost = D.NameDolznost, naznach = naznKL.NameNaznachKontaktLico, otdel = KL.Otdel, tipsvyazi = TS.NameSvyazi, idtipsvyazi = (int?)TS.IDTSvyazi, valsvyazi = KL_S.Znach, idNaznach = (int?)KL_N.IDNaznachKontaktL }).OrderBy(m => m.idKontakt).ToList(); var result = rr.Where(m => m.idPred1 == idP && m.idPred2 == idP).ToList(); result.AddRange(rr.Where(m => m.idPred1 == idP && m.idPred2 == null).ToList()); result.AddRange(rr.Where(m => m.idPred1 == null && m.idPred2 == idP).ToList()); foreach (var kontakts in result.Select(m => m.idKontakt).Distinct()) { PKJson.IDKontakt = result.Where(m => m.idKontakt == kontakts).Select(m => m.idKontakt).FirstOrDefault(); PKJson.FIO = result.Where(m => m.idKontakt == kontakts).Select(m => m.fio).FirstOrDefault(); PKJson.Otdel = result.Where(m => m.idKontakt == kontakts).Select(m => m.otdel).FirstOrDefault(); PKJson.NameDolgnost = result.Where(m => m.idKontakt == kontakts).Select(m => m.dolgnost).FirstOrDefault(); PKJson.NameNaznach = new List<string>(); PKJson.idNaznach = new List<int?>(); foreach (var naznach in result.Where(m => m.idKontakt == kontakts).Select(m => new { naznach = m.naznach, idNaznach = m.idNaznach }).Distinct()) { PKJson.NameNaznach.Add(naznach.naznach); PKJson.idNaznach.Add(naznach.idNaznach); } PKJson.NameTipSvyazi = new List<string>(); PKJson.ValSvyazi = new List<string>(); PKJson.idTipSvyazi = new List<int?>(); foreach (var vals in result.Where(m => m.idKontakt == kontakts).Select(m => new { valsvyazi = m.valsvyazi, tipsvyazi = m.tipsvyazi, idtipsvyazi = m.idtipsvyazi }).Distinct()) { PKJson.ValSvyazi.Add(vals.valsvyazi); PKJson.NameTipSvyazi.Add(vals.tipsvyazi); PKJson.idTipSvyazi.Add(vals.idtipsvyazi); } } return Json(PKJson, JsonRequestBehavior.AllowGet); } }
public int EditKontaktSave(PredpriyatieKontaktJSON kontakt) { using (var ugtu_db = new UGTU_DBDataContext()) { if (kontakt.ValSvyazi != null || kontakt.idNaznach != null) { int idKL = kontakt.IDKontakt; var KL = ugtu_db.KontaktLico.Where(m => m.IDKontaktL == kontakt.IDKontakt).Single(); if (kontakt.FIO != null) { //ФИО if (KL.FIOKontaktLico != null)//если в БД ФИО, редактируем { KL.Otdel = kontakt.Otdel; KL.FIOKontaktLico = kontakt.FIO; KL.idDolznost = AddDolgnost(kontakt.Dolgnost); }else{//добавляем новый KontaktLico KLnew = new KontaktLico() { FIOKontaktLico = kontakt.FIO, Otdel = kontakt.Otdel, idDolznost = kontakt.idDolgnost }; ugtu_db.KontaktLico.InsertOnSubmit(KLnew); ugtu_db.SubmitChanges(); idKL = KLnew.IDKontaktL; } } if (kontakt.FIO == null && kontakt.Otdel != null) { //Отдел if (KL.FIOKontaktLico == null && KL.Otdel != null) //если в БД отдел, доб-ем или берем уже имеющийся { idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == kontakt.Otdel).Select(m => m.IDKontaktL).SingleOrDefault(); if (idKL == 0) { KontaktLico KLnew = new KontaktLico() { Otdel = kontakt.Otdel, idDolznost = kontakt.idDolgnost }; ugtu_db.KontaktLico.InsertOnSubmit(KLnew); ugtu_db.SubmitChanges(); idKL = KLnew.IDKontaktL; } ugtu_db.SubmitChanges(); } if (KL.FIOKontaktLico == null && KL.Otdel == null) //если в БД предприятие, доб-ем или берем уже имеющийся { idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == kontakt.Otdel).Select(m => m.IDKontaktL).SingleOrDefault(); if (idKL == 0) { KontaktLico KLnew = new KontaktLico() { Otdel = kontakt.Otdel, idDolznost = kontakt.idDolgnost }; ugtu_db.KontaktLico.InsertOnSubmit(KLnew); ugtu_db.SubmitChanges(); idKL = KLnew.IDKontaktL; } ugtu_db.SubmitChanges(); } if (KL.FIOKontaktLico != null) //если в БД ФИО { idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == kontakt.Otdel).Select(m => m.IDKontaktL).SingleOrDefault(); if (idKL == 0) { KontaktLico KLnew = new KontaktLico() { Otdel = kontakt.Otdel, idDolznost = kontakt.idDolgnost }; ugtu_db.KontaktLico.InsertOnSubmit(KLnew); ugtu_db.SubmitChanges(); idKL = KLnew.IDKontaktL; } ugtu_db.SubmitChanges(); } } if (kontakt.FIO == null && kontakt.Otdel == null) { //Предприятие idKL = ugtu_db.KontaktLico.Where(m => m.FIOKontaktLico == null && m.Otdel == null).Select(m => m.IDKontaktL).SingleOrDefault(); } //--------------------------------Назначение------------------------------------ var N_KL = ugtu_db.KontaktLico_NaznachKontaktLico.Where(m => m.IDKontaktL == kontakt.IDKontakt && m.IDPredpriyatie == kontakt.IDPred).ToList(); foreach (var naznachKLBD in N_KL) { ugtu_db.KontaktLico_NaznachKontaktLico.DeleteOnSubmit(naznachKLBD); } ugtu_db.SubmitChanges(); if (kontakt.FIO != null || kontakt.Otdel != null) //только для ФИО и отдела (исключаем предприятие) { if (kontakt.idNaznach != null) { foreach (var naznachKL in kontakt.idNaznach) { KontaktLico_NaznachKontaktLico KL_N = new KontaktLico_NaznachKontaktLico() { IDPredpriyatie = kontakt.IDPred, IDKontaktL = idKL, IDNaznachKontaktL = (int)naznachKL }; ugtu_db.KontaktLico_NaznachKontaktLico.InsertOnSubmit(KL_N); } ugtu_db.SubmitChanges(); } } #region Хлам //if (kontakt.idNaznach != null) //{ // foreach (var naznachKL in kontakt.idNaznach) // { // if (!N_KL.Exists(m => m.IDNaznachKontaktL == naznachKL))//если в БД нету, доб-ем // { // KontaktLico_NaznachKontaktLico KL_N = new KontaktLico_NaznachKontaktLico() // { // IDPredpriyatie = kontakt.IDPred, // IDKontaktL = kontakt.IDKontakt, // IDNaznachKontaktL = (int)naznachKL // }; // ugtu_db.KontaktLico_NaznachKontaktLico.InsertOnSubmit(KL_N); // ugtu_db.SubmitChanges(); // } // } // foreach (var naznachKLBD in N_KL) // если в параметрах нету то удаляем. // { // if (!kontakt.idNaznach.Exists(m => m == naznachKLBD.IDNaznachKontaktL)) // { // ugtu_db.KontaktLico_NaznachKontaktLico.DeleteOnSubmit(naznachKLBD); // ugtu_db.SubmitChanges(); // } // } //} //else //очистка БД, в случае пустого списка параметров //{ // foreach (var naznachKLBD in N_KL) // { // if (!kontakt.idNaznach.Exists(m => m == naznachKLBD.IDNaznachKontaktL)) // { // ugtu_db.KontaktLico_NaznachKontaktLico.DeleteOnSubmit(naznachKLBD); // ugtu_db.SubmitChanges(); // } // } //} #endregion //--------------------------------Связи------------------------------------ var S_KL = ugtu_db.KontaktLico_Svyaz.Where(m => m.IDKontaktL == kontakt.IDKontakt && m.IDPredpriyatie == kontakt.IDPred).ToList(); foreach (var svyazKLBD in S_KL) { ugtu_db.KontaktLico_Svyaz.DeleteOnSubmit(svyazKLBD); } ugtu_db.SubmitChanges(); if (kontakt.ValSvyazi != null) { for (int i = 0; i < kontakt.ValSvyazi.Count(); i++) { KontaktLico_Svyaz KL_S = new KontaktLico_Svyaz() { IDKontaktL = idKL, IDTSvyazi = (int)kontakt.idTipSvyazi[i], Znach = kontakt.ValSvyazi[i], IDPredpriyatie = kontakt.IDPred, }; ugtu_db.KontaktLico_Svyaz.InsertOnSubmit(KL_S); } ugtu_db.SubmitChanges(); } #region Хлам //if (kontakt.idTipSvyazi != null) //{ // for (int i = 0; i < kontakt.ValSvyazi.Count();i++ ) // { // if (!S_KL.Exists(m => m.IDTSvyazi == kontakt.idTipSvyazi[i]) && !S_KL.Exists(m => m.Znach == kontakt.ValSvyazi[i]))//если в БД нету, доб-ем // { // KontaktLico_Svyaz KL_S = new KontaktLico_Svyaz() // { // IDKontaktL = kontakt.IDKontakt, // IDTSvyazi = (int)kontakt.idTipSvyazi[i], // Znach = kontakt.ValSvyazi[i], // IDPredpriyatie = kontakt.IDPred, // }; // ugtu_db.KontaktLico_Svyaz.InsertOnSubmit(KL_S); // ugtu_db.SubmitChanges(); // } // else { //если в БД есть, ред-ем // var edit = S_KL.Where(m=>m.) // } // } // foreach (var svyazKLBD in S_KL) // если в параметрах нету то удаляем. // { // if (!kontakt.idTipSvyazi.Exists(m => m == svyazKLBD.IDTSvyazi) && !kontakt.ValSvyazi.Exists(m => m == svyazKLBD.Znach)) // { // ugtu_db.KontaktLico_Svyaz.DeleteOnSubmit(svyazKLBD); // ugtu_db.SubmitChanges(); // } // } //} //else //очистка БД, в случае пустого списка параметров //{ // foreach (var svyazKLBD in S_KL) // { // if (!kontakt.idTipSvyazi.Exists(m => m == svyazKLBD.IDTSvyazi) && !kontakt.ValSvyazi.Exists(m => m == svyazKLBD.Znach)) // { // ugtu_db.KontaktLico_Svyaz.DeleteOnSubmit(svyazKLBD); // ugtu_db.SubmitChanges(); // } // } //} #endregion if (kontakt.FIO == null && KL.FIOKontaktLico!=null) { ugtu_db.KontaktLico.DeleteOnSubmit(KL); ugtu_db.SubmitChanges(); } return 1; } else { return 0; } } }