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