/// <summary> /// Удалить положение парка /// </summary> /// <param name="context"></param> /// <param name="id_park_status"></param> /// <param name="user"></param> /// <returns></returns> public int OperationDeleteParkState(ref EFDbContext context, int id_park_status, string user) { try { // Проверка контекста if (context == null) { context = new EFDbContext(); } // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } EFParkState_Station ef_pss = new EFParkState_Station(context); EFParkState_Way ef_psw = new EFParkState_Way(context); EFParkState_Wagon ef_pswag = new EFParkState_Wagon(context); // Получим строку положения по станции ParkState_Station pss = ef_pss.Context.Where(s => s.id == id_park_status).FirstOrDefault(); if (pss == null) { return((int)errors_base.not_park_station_station_of_db); // Ошибка, в базе данных нет строки положения парка по станции } if (pss.applied != null) { return((int)errors_base.error_delete_park_station_apply); // Ошибка, удалить нельзя, состояние парка уже применили } // Получим пути выбранного состояния парка List <ParkState_Way> list_psw = ef_psw.Context.Where(w => w.id_park_state_station == pss.id).ToList(); // Пройдемся по всем путям и удалим вагоны foreach (ParkState_Way way in list_psw) { List <int> list_id_wag = ef_pswag.Context.Where(w => w.id_park_state_way == way.id).ToList().Select(w => w.id).ToList(); ef_pswag.Delete(list_id_wag); // пометим для удаления все вагоны ef_psw.Delete(way.id); // пометим для удаления путь } ef_pss.Delete(pss.id); return(1); } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationDeleteParkState(context={0}, id_park_status={1}, user={2})", context, id_park_status, user), servece_owner, this.eventID); return((int)errors_base.global);// Ошибка } }
/// <summary> /// Добавить вагон /// </summary> /// <param name="context"></param> /// <param name="id_park_state_way"></param> /// <param name="num"></param> /// <param name="position"></param> /// <param name="user"></param> /// <returns></returns> public int OperationUpdateWagonParkState(ref EFDbContext context, int id_park_state_way, int num, int position, string user) { try { // Проверка контекста if (context == null) { context = new EFDbContext(); } // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } EFParkState_Way ef_psw = new EFParkState_Way(context); //EFParkState_Wagon ef_pswag = new EFParkState_Wagon(context); ParkState_Way way = ef_psw.Context.Where(w => w.id == id_park_state_way).FirstOrDefault(); if (way == null) { return((int)errors_base.not_way_park_station_station_of_db); // Ошибка, в базе данных нет строки положения парка по станции } ParkState_Wagon wagon = new ParkState_Wagon() { id = 0, id_park_state_way = id_park_state_way, num = num, position = position, note = null, create = DateTime.Now, create_user = user, }; way.ParkState_Wagon.Add(wagon); return(1); } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationDeleteParkState(context={0}, id_park_state_way={1}, num={2}, position={3}, user={4})", context, id_park_state_way, num, position, user), servece_owner, this.eventID); return((int)errors_base.global);// Ошибка } }
/// <summary> /// Перенести текущее положение парка /// </summary> /// <param name="id_station"></param> /// <param name="date_status_on"></param> /// <param name="user"></param> /// <returns></returns> public OperationResultID OperationTransferWagonsParkState(int id_station, DateTime date_status_on, string user) { OperationResultID result = new OperationResultID(); try { EFDbContext context = new EFDbContext(); // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } EFParkState_Station ef_pss = new EFParkState_Station(context); EFParkState_Way ef_psw = new EFParkState_Way(context); EFParkState_Wagon ef_pswag = new EFParkState_Wagon(context); // Получим строку положения парка по указаной станции по указаной дате ParkState_Station pss = ef_pss.Context.Where(p => p.id_station == id_station & p.state_on == date_status_on).FirstOrDefault(); if (pss != null) { List <ParkState_Way> psw_list = ef_psw.Context.Where(w => w.id_park_state_station == pss.id).ToList(); if (psw_list != null && psw_list.Count() > 0) { foreach (ParkState_Way psw in psw_list) { //Пройдемся по пути List <int> nums = context.GetNumWagonsOfWay(psw.id_way); List <ParkState_Wagon> pswag_list = ef_pswag.Context.Where(w => w.id_park_state_way == psw.id_way).ToList(); // Проверим вагоны на пути положения, если есть удалим if (pswag_list != null && pswag_list.Count() > 0) { ef_pswag.Delete(pswag_list.Select(n => n.id)); } // Перенесем вагоны int position = 1; foreach (int num in nums) { // Выполним операцию result.SetResultOperation(OperationUpdateWagonParkState(ref context, psw.id, num, position, user), num); position++; } // Обновим метку изменения пути psw.change = DateTime.Now; psw.change_user = user; ef_psw.Update(psw); } // Обновим метку изменения пути pss.change = DateTime.Now; pss.change_user = user; ef_pss.Update(pss); // Если нет ошибок тогда обновим базу if (result.error == 0) { // Сохранить время result.SetResult(context.SaveChanges()); } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } //result.SetResultOperation(OperationCreateParkState(ref context, id_station, date_status_on, user), id_station); // Если нет ошибок тогда обновим базу if (result.error == 0) { result.SetResult(context.SaveChanges()); } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } else { result.SetResult((int)errors_base.not_list_way_park_station_station_of_db); // Ошибка, в базе данных нет списка путей положения парка по станции } } else { result.SetResult((int)errors_base.not_park_station_station_of_db); // Ошибка изменение было отменено } } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationTransferWagonsParkState(id_station={0}, date_status_on ={1}, user={2})", id_station, date_status_on, user), servece_owner, this.eventID); result.SetResult((int)errors_base.global);// Ошибка нет списка id } return(result); }