/// <summary> /// Удалить все вагоны по заданному пути /// </summary> /// <param name="id_park_state_way"></param> /// <param name="user"></param> /// <returns></returns> public OperationResultWagon DeleteWagonsOfWay(int id_park_state_way, string user) { OperationResultWagon result = new OperationResultWagon(); try { EFDbContext context = new EFDbContext(); // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } // Проверим вагоны на блокировку (предъявлен) EFParkState_Wagon ef_pswag = new EFParkState_Wagon(context); List <ParkState_Wagon> wagons = ef_pswag.Context.Where(w => w.id_park_state_way == id_park_state_way).ToList(); List <int> nums_lock = context.GetWagonsLockPresentOperation(wagons.Select(w => w.num).ToList()); foreach (int num in nums_lock) { // отобразим предъявленные вагоны result.SetResultOperation((int)errors_base.error_change_park_station_lock_wagon, num); } // Если нет ошибок тогда обновим базу if (result.error == 0) { int res_del = DeleteWagonsOfWay(ref context, id_park_state_way); if (res_del > 0) { ParkState_Way psw = context.ParkState_Way.Where(w => w.id == id_park_state_way).FirstOrDefault(); if (psw != null) { psw.change = DateTime.Now; psw.change_user = user; ParkState_Station pss = context.ParkState_Station.Where(p => p.id == psw.id_park_state_station).FirstOrDefault(); if (pss != null) { pss.change = DateTime.Now; pss.change_user = user; } } result.SetResult(context.SaveChanges()); } } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } catch (Exception e) { e.ExceptionMethodLog(String.Format("DeleteWagonsOfWay(id_station={0}, user={1})", id_park_state_way, user), servece_owner, this.eventID); result.SetResult((int)errors_base.global);// Ошибка нет списка id } return(result); }
/// <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_way"></param> /// <param name="wagons"></param> /// <param name="type"></param> /// <param name="user"></param> /// <returns></returns> public OperationResultWagon OperationUpdateWagonsParkState(int id_park_state_way, List <int> wagons, int type, string user) { OperationResultWagon result = new OperationResultWagon(); try { EFDbContext context = new EFDbContext(); EFParkState_Wagon ef_pswag = new EFParkState_Wagon(context); // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } if (wagons != null) { // Проверим вагоны добавляемые или замещаемые List <int> nums_lock_update = context.GetWagonsLockPresentOperation(wagons); foreach (int num in nums_lock_update) { // отобразим предъявленные вагоны result.SetResultOperation((int)errors_base.error_change_park_station_lock_wagon, num); } if (result.error == 0) { int position = 1; // Получим последнюю позицию по пути в зависимости от типа операции if (type > 0) { // Определена операция замещения вагонов // Проверим вагоны стоящие на пути List <ParkState_Wagon> psw = ef_pswag.Context.Where(w => w.id_park_state_way == id_park_state_way).ToList(); List <int> nums_lock = context.GetWagonsLockPresentOperation(psw.Select(w => w.num).ToList()); foreach (int num in nums_lock) { // отобразим предъявленные вагоны result.SetResultOperation((int)errors_base.error_change_park_station_lock_wagon, num); } int res_del = DeleteWagonsOfWay(ref context, id_park_state_way); } else { // Добавить position = GetLastPositionOfWay(ref context, id_park_state_way) + 1; } // проверка if (result.error == 0) { // Пройдемся по списку вагонов foreach (int num in wagons) { // Выполним операцию result.SetResultOperation(OperationUpdateWagonParkState(ref context, id_park_state_way, num, position, user), num); position++; } // Если нет ошибок тогда обновим базу if (result.error == 0) { // Обновим время обновления ParkState_Way psw = context.ParkState_Way.Where(w => w.id == id_park_state_way).FirstOrDefault(); if (psw != null) { psw.change = DateTime.Now; psw.change_user = user; ParkState_Station pss = context.ParkState_Station.Where(p => p.id == psw.id_park_state_station).FirstOrDefault(); if (pss != null) { pss.change = DateTime.Now; pss.change_user = user; } } // Сохранить время result.SetResult(context.SaveChanges()); } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } else { result.SetResult((int)errors_base.not_input_list_wagons); // Ошибка? неуказан список вагонов } } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationUpdateWagonsParkState(id_park_state_way={0}, wagons={1}, type={2}, user={3})", id_park_state_way, wagons, type, user), servece_owner, this.eventID); result.SetResult((int)errors_base.global);// Ошибка нет списка id } return(result); }
/// <summary> /// Добавить новое положение парка по станции /// </summary> /// <param name="context"></param> /// <param name="id_station"></param> /// <param name="date_status_on"></param> /// <param name="user"></param> /// <returns></returns> public int OperationCreateParkState(ref EFDbContext context, int id_station, DateTime date_status_on, 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); // Получим последнееположение по станции ParkState_Station pss_last = ef_pss.Context.Where(p => p.id_station == id_station).OrderByDescending(s => s.state_on).FirstOrDefault(); if (pss_last != null) { // Проверим на дату (дата новая не должна быть равна или меньше последней if (pss_last.state_on >= date_status_on) { return((int)errors_base.error_date); // Ошибка } } // Создаем новую запись ParkState_Station pss = new ParkState_Station() { id = 0, id_station = id_station, state_on = date_status_on, note = null, create = DateTime.Now, create_user = user, change = null, change_user = null, delete = null, delete_user = null, applied = null, applied_user = null, }; // Получим пути по данной станции EFDirectory_Ways ef_ways = new EFDirectory_Ways(context); List <Directory_Ways> list_ways_station = ef_ways.Context.Where(w => w.id_station == id_station).ToList(); int position = 1; foreach (Directory_Ways way in list_ways_station) { ParkState_Way psw = new ParkState_Way() { id = 0, id_park_state_station = 0, id_way = way.id, position = position, note = null, create = DateTime.Now, create_user = user, change = null, change_user = null, delete = null, delete_user = null, }; pss.ParkState_Way.Add(psw); position++; } ef_pss.Add(pss); return(1); } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationCreateParkState(context={0}, id_station={1}, date_status_on={2}, user={3})", context, id_station, date_status_on, user), servece_owner, this.eventID); return((int)errors_base.global);// Ошибка } }