public async Task <IHttpActionResult> DeleteDirServiceJobNomen(int id) { //Удаляем, если исключение "FK", то ставим пометку на удаление и сообщаем об этом клиенту //... #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции //Получаем Куку System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"]; // Проверяем Логин и Пароль Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true)); if (!field.Access) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10))); } //Изменяем строку соединения db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true)); //Права (1 - Write, 2 - Read, 3 - No Access) int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirServiceJobNomens")); if (iRight != 1) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)))); } //Разные Функции function.NumberDecimalSeparator(); //Получам настройки Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1); #endregion #region Удаление try { //Получаем Sub-бы (нужны поледние 5-ть) int?Sub = await Task.Run(() => DirServiceJobNomenID_Sub_Find(id)); int ID0 = 0, ID1 = 0, ID2 = 0, ID3 = 0, ID4 = 0; if (Sub != null && Sub > 0) { ArrayList Subs = await Task.Run(() => DirServiceJobNomenSubFind(Sub)); if (Subs.Count > 0) { if (Subs.Count > 0) { ID0 = Convert.ToInt32(Subs[0]); } if (Subs.Count > 1) { ID1 = Convert.ToInt32(Subs[1]); } if (Subs.Count > 2) { ID2 = Convert.ToInt32(Subs[2]); } if (Subs.Count > 3) { ID3 = Convert.ToInt32(Subs[3]); } if (Subs.Count > 4) { ID4 = Convert.ToInt32(Subs[4]); } } } DirServiceJobNomen dirServiceJobNomen = await db.DirServiceJobNomens.FindAsync(id); if (dirServiceJobNomen == null) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg99))); } if (!dirServiceJobNomen.Del) { // === Удаляем === === === === === #region 6. JourDisp *** *** *** *** *** *** *** *** *** * Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp(); sysJourDisp.DirDispOperationID = 5; //Удаление записи sysJourDisp.DirEmployeeID = field.DirEmployeeID; sysJourDisp.ListObjectID = ListObjectID; sysJourDisp.TableFieldID = dirServiceJobNomen.DirServiceJobNomenID; sysJourDisp.Description = ""; try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { } #endregion //1. Удаляем try { db.DirServiceJobNomens.Remove(dirServiceJobNomen); await db.SaveChangesAsync(); dynamic collectionWrapper = new { ID = dirServiceJobNomen.DirServiceJobNomenID, ID0 = ID0, ID1 = ID1, ID2 = ID2, ID3 = ID3, ID4 = ID4, Msg = Classes.Language.Sklad.Language.msg19 }; return(Ok(returnServer.Return(true, collectionWrapper))); } catch (Exception ex) { if (function.ExceptionFkExist(ex)) { //2. Исключение - пометка на удаление dirServiceJobNomen.Del = true; db.Entry(dirServiceJobNomen).State = EntityState.Modified; await db.SaveChangesAsync(); dynamic collectionWrapper = new { ID = dirServiceJobNomen.DirServiceJobNomenID, ID0 = ID0, ID1 = ID1, ID2 = ID2, ID3 = ID3, ID4 = ID4, Msg = Classes.Language.Sklad.Language.msg96 //"Помечено на удаление, так как запись задействована в других объектах сервиса (напр. в документах)." }; return(Ok(returnServer.Return(true, collectionWrapper))); } else { return(Ok(returnServer.Return(false, exceptionEntry.Return(ex)))); } } } else { // === Снимаем пометку на удаление === === === === === dirServiceJobNomen.Del = false; db.Entry(dirServiceJobNomen).State = EntityState.Modified; await db.SaveChangesAsync(); dynamic collectionWrapper = new { ID = dirServiceJobNomen.DirServiceJobNomenID, ID0 = ID0, ID1 = ID1, ID2 = ID2, ID3 = ID3, ID4 = ID4, Msg = Classes.Language.Sklad.Language.msg97 //"Пометка на удаление снята." }; return(Ok(returnServer.Return(true, collectionWrapper))); //return Ok(returnServer.Return(true, "")); } } catch (Exception ex) { return(Ok(returnServer.Return(false, exceptionEntry.Return(ex)))); } #endregion }
public async Task <IHttpActionResult> PostDirServiceJobNomen(DirServiceJobNomen dirServiceJobNomen) { #region Проверяем Логин и Пароль + Изменяем строку соединения + Права + Разные Функции //Получаем Куку System.Web.HttpCookie authCookie = System.Web.HttpContext.Current.Request.Cookies["CookieIPOL"]; // Проверяем Логин и Пароль Classes.Account.Login.Field field = await Task.Run(() => login.Return(authCookie, true)); if (!field.Access) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg10))); } //Изменяем строку соединения db = new DbConnectionSklad(connectionString.Return(field.DirCustomersID, null, true)); //Права (1 - Write, 2 - Read, 3 - No Access) int iRight = await Task.Run(() => accessRight.Access(connectionString.Return(field.DirCustomersID, null, true), field.DirEmployeeID, "RightDirServiceJobNomens")); if (iRight != 1) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg57(0)))); } //Разные Функции function.NumberDecimalSeparator(); //Получам настройки Models.Sklad.Sys.SysSetting sysSetting = await db.SysSettings.FindAsync(1); #endregion #region Проверки if (!ModelState.IsValid) { return(Ok(returnServer.Return(false, Classes.Language.Sklad.Language.msg91))); //return BadRequest(ModelState); } //Подстановки - некоторые поля надо заполнить, если они не заполены dirServiceJobNomen.Substitute(); #endregion #region Сохранение try { //Используем метод, что бы было всё в одном потоке db.Entry(dirServiceJobNomen).State = EntityState.Added; await Task.Run(() => db.SaveChangesAsync()); #region 6. JourDisp *** *** *** *** *** *** *** *** *** * Models.Sklad.Sys.SysJourDisp sysJourDisp = new Models.Sklad.Sys.SysJourDisp(); sysJourDisp.DirDispOperationID = 4; //Добавление записи sysJourDisp.DirEmployeeID = field.DirEmployeeID; sysJourDisp.ListObjectID = ListObjectID; sysJourDisp.TableFieldID = dirServiceJobNomen.DirServiceJobNomenID; sysJourDisp.Description = ""; try { sysJourDispsController.mPutPostSysJourDisps(db, sysJourDisp, EntityState.Added); } catch (Exception ex) { } #endregion //Получаем Sub-бы (нужны поледние 5-ть) ArrayList Subs = await Task.Run(() => DirServiceJobNomenSubFind(dirServiceJobNomen.Sub)); int ID0 = 0, ID1 = 0, ID2 = 0, ID3 = 0, ID4 = 0; if (Subs.Count > 0) { if (Subs.Count > 0) { ID0 = Convert.ToInt32(Subs[0]); } if (Subs.Count > 1) { ID1 = Convert.ToInt32(Subs[1]); } if (Subs.Count > 2) { ID2 = Convert.ToInt32(Subs[2]); } if (Subs.Count > 3) { ID3 = Convert.ToInt32(Subs[3]); } if (Subs.Count > 4) { ID4 = Convert.ToInt32(Subs[4]); } } dynamic collectionWrapper = new { ID = dirServiceJobNomen.DirServiceJobNomenID, ID0 = ID0, ID1 = ID1, ID2 = ID2, ID3 = ID3, ID4 = ID4, }; return(Ok(returnServer.Return(true, collectionWrapper))); } catch (Exception ex) { return(Ok(returnServer.Return(false, exceptionEntry.Return(ex)))); } #endregion }