Example #1
0
        public static WagonInternalOperation SetOpenOperation(this WagonInternalRoutes wir, int id_operation, DateTime date_start, int?id_condition, int?id_loading_status, string locomotive1, string locomotive2, string note, string user)
        {
            WagonInternalOperation wio_new = null;

            if (wir != null && wir.close == null)
            {
                WagonInternalOperation wio_last = wir.GetLastOperation();
                wio_new = new WagonInternalOperation()
                {
                    id                = 0,
                    id_operation      = id_operation,
                    operation_start   = date_start,
                    id_condition      = (id_condition != null ? (int)id_condition : (wio_last != null ? wio_last.id_condition : 0)),
                    id_loading_status = (id_loading_status != null ? (int)id_loading_status : (wio_last != null ? wio_last.id_loading_status : 0)),
                    locomotive1       = locomotive1,
                    locomotive2       = locomotive2,
                    note              = note,
                    create            = DateTime.Now,
                    create_user       = user,
                    parent_id         = wio_last.CloseOperation(date_start, null, user)
                };

                wir.WagonInternalOperation.Add(wio_new);
            }
            return(wio_new);
        }
Example #2
0
 public static WagonInternalOperation SetCloseOperation(this WagonInternalOperation wio, DateTime date_end, string note, string user)
 {
     if (wio != null && wio.close == null)
     {
         wio.CloseOperation(date_end, note, user);
     }
     return(wio);
 }
Example #3
0
 public static long?CloseOperation(this WagonInternalOperation wio, DateTime date_end, string note, string user)
 {
     if (wio == null)
     {
         return(null);
     }
     if (wio.close == null)
     {
         wio.operation_end = wio.operation_end == null ? date_end : wio.operation_end;
         wio.note          = note != null ? note : wio.note;
         wio.close         = date_end;
         wio.close_user    = user;
     }
     return(wio.id);
 }
Example #4
0
 public IHttpActionResult GetWagonInternalOperationOfID(long id)
 {
     try
     {
         WagonInternalOperation wio = this.ef_ids
                                      .Context
                                      .Where(s => s.id == id)
                                      .ToList()
                                      .Select(c => c.GetWagonInternalOperation()).FirstOrDefault();
         return(Ok(wio));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Example #5
0
        /// <summary>
        /// Вагон на территории АМКР с операцией предявлен?
        /// </summary>
        /// <param name="context"></param>
        /// <param name="num"></param>
        /// <returns></returns>
        public static bool?isLockPresentOperation(this EFDbContext context, int num)
        {
            WagonInternalRoutes wir = context.GetLastWagon(num);

            if (wir == null)
            {
                return(null);
            }
            if (wir.close == null)
            {
                WagonInternalOperation wio = wir.GetLastOperation();
                if (wio == null)
                {
                    return(null);
                }

                return(wio.id_operation == 9 ? true : false);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        /// <summary>
        /// Правка разметки по прибытию
        /// </summary>
        /// <param name="context"></param>
        /// <param name="arr_cars"></param>
        /// <param name="id_condition"></param>
        /// <param name="id_type"></param>
        /// <param name="date_rem_vag"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public int OperationUpdateWagonMarking(ref EFDbContext context, ArrivalCars arr_cars, int id_condition, int?id_type, DateTime?date_rem_vag, string user)
        {
            try
            {
                // Проверка контекста
                if (context == null)
                {
                    context = new EFDbContext();
                }
                // Проверим и скорректируем пользователя
                if (String.IsNullOrWhiteSpace(user))
                {
                    user = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
                }
                // Определим наличие вагона в прибытии
                if (arr_cars == null)
                {
                    return((int)errors_base.not_arrival_cars_db);                  // Ошибка, нет записи вагона по прибытию
                }
                //
                if (arr_cars.id_arrival_uz_vagon == null)
                {
                    return((int)errors_base.not_arrival_uz_vagon);                                      //Ошибка, нет сылки на документ прибывшего вагона
                }
                // Получим контекст список документов на принятые вагоны
                EFArrival_UZ_Vagon ef_arr_uz_vag = new EFArrival_UZ_Vagon(context);
                // Получим запись документа принятого вагона
                Arrival_UZ_Vagon arr_uz_vag = ef_arr_uz_vag.Context.Where(v => v.id == arr_cars.id_arrival_uz_vagon).FirstOrDefault();
                if (arr_uz_vag == null)
                {
                    return((int)errors_base.not_arrival_uz_vagon);                    //Ошибка, нет записи документа прибывшего вагона
                }
                // Получим контекст справочник вагонов
                EFDirectory_Wagons ef_dir_wag = new EFDirectory_Wagons(context);
                // Получим запись вагона из справочника
                Directory_Wagons wagon = ef_dir_wag.Context.Where(w => w.num == arr_uz_vag.num).FirstOrDefault();
                if (wagon == null)
                {
                    return((int)errors_base.not_dir_wagon_of_db);               // Указаного вагона нет в базе
                }
                // Получим контекст Внутренего перемещения
                EFWagonInternalRoutes ef_wir = new EFWagonInternalRoutes(context);
                WagonInternalRoutes   wir    = ef_wir.Context.Where(r => r.id_arrival_car == arr_cars.id).FirstOrDefault();

                if (wir == null)
                {
                    return((int)errors_base.not_wir_db);             // Ошибка, нет записи внутренего перемещения вагона
                }
                // Найдем первую запись
                WagonInternalOperation first_wio = wir.WagonInternalOperation.Where(o => o.parent_id == null).OrderBy(o => o.id).FirstOrDefault();
                if (first_wio == null)
                {
                    return((int)errors_base.not_wio_db);                   // Ошибка, нет записи операций внутренего перемещения вагона
                }
                int id_condition_first = first_wio.id_condition;
                // Определим все записи
                List <WagonInternalOperation> list_wio = wir.WagonInternalOperation.OrderBy(o => o.id).ToList();
                // Обновим годность по внутренему перемещению
                foreach (WagonInternalOperation wio in list_wio)
                {
                    if (wio.id_condition == id_condition_first)
                    {
                        wio.id_condition = id_condition;
                    }
                    else
                    {
                        break; // Дрогая годность выйти изцикла
                    }
                }
                ef_wir.Update(wir);
                // Запись документа есть правим тип и годность по прибытию
                arr_uz_vag.id_condition = id_condition;
                arr_uz_vag.id_type      = id_type;
                ef_arr_uz_vag.Update(arr_uz_vag);
                // Запись справочника есть, правим дату ремонта
                wagon.date_rem_vag = date_rem_vag;
                ef_dir_wag.Update(wagon);
                return(1);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("OperationUpdateWagonMarking(context={0}, arr_cars={1}, id_condition ={2}, id_type={3}, date_rem_vag ={4}, user={5})",
                                                   context, arr_cars, id_condition, id_type, date_rem_vag, user), servece_owner, this.eventID);
                return((int)errors_base.global);// Ошибка
            }
        }