Esempio n. 1
0
        /// <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);// Ошибка
            }
        }
Esempio n. 2
0
 /// <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);// Ошибка
     }
 }
Esempio n. 3
0
        /// <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);
        }