Ejemplo 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);// Ошибка
            }
        }