/// <summary> /// Obtiene registro de la programación de embarque por su Id /// </summary> /// <param> <name></name> </param> /// <param name="embarqueId"> </param> /// <returns></returns> internal EmbarqueInfo ObtenerPorID(int embarqueId) { EmbarqueInfo result; try { Logger.Info(); var embarqueDAL = new EmbarqueDAL(); result = embarqueDAL.ObtenerPorID(embarqueId); } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } return(result); }
/// <summary> /// Metodo que guarda un Embarque /// </summary> /// <param name="embarqueInfo"></param> internal int GuardarEmbarque(EmbarqueInfo embarqueInfo) { try { Logger.Info(); var embarqueDAL = new EmbarqueDAL(); using (var transaction = new TransactionScope()) { if (embarqueInfo.EmbarqueID != 0) { embarqueDAL.Actualizar(embarqueInfo); } else { embarqueInfo.EmbarqueID = embarqueDAL.Crear(embarqueInfo); } embarqueDAL.GuardarEscala(embarqueInfo.ListaEscala, embarqueInfo.EmbarqueID); //Obtener por Programacion por ID IList <EmbarqueDetalleInfo> listaEscalasGuardado = embarqueDAL.ObtenerEscalasPorEmbarqueID( embarqueInfo.EmbarqueID); //relacionar el identity EmbarqueDetalleID a la lista de costos IEnumerable <CostoEmbarqueDetalleInfo> listaCostos = embarqueInfo.ListaEscala.SelectMany(x => x.ListaCostoEmbarqueDetalle).ToList(); foreach (var costo in listaCostos) { if (costo.EmbarqueDetalleID != 0) { continue; } var escalaInfo = listaEscalasGuardado.FirstOrDefault(x => x.Orden == costo.Orden); if (escalaInfo != null) { costo.EmbarqueDetalleID = escalaInfo.EmbarqueDetalleID; } } if (listaCostos.Any()) { embarqueDAL.GuardarCosto(listaCostos); } var embarqueGuardado = embarqueDAL.ObtenerPorID(embarqueInfo.EmbarqueID); transaction.Complete(); return(embarqueGuardado.FolioEmbarque); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }