Пример #1
0
        /// <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);
        }
Пример #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);// Ошибка
     }
 }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);// Ошибка
            }
        }