public List <Entrega> SeleccionarEntregasPorTransporte(long numeroManifiesto) { EntregaDAO entregaDAO = new EntregaDAO(); List <Entrega> entregas = new List <Entrega>(); entregas = entregaDAO.SeleccionarEntregasPorTransporte(numeroManifiesto); return(entregas); }
private List <TipoEventoLogistico> ValidarEventosLogisticosSucesoresPorUltimoEvento(EventoLogistico ultimoEventoRegistrado, List <EventoLogistico> eventosRegistrados, List <TipoEventoLogistico> tipoEventos, long numeroManifiesto) { List <TipoEventoLogistico> eventosSucesores = new List <TipoEventoLogistico>(); //Si el ultimo evento registrado fue activación, valida si es un vacio para mostrar el evento inicio de viaje if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.ActivarViaje) { HistorialActivacionManifiestoDAO historialActivacionDAO = new HistorialActivacionManifiestoDAO(); HistorialActivacionManifiesto transporte = historialActivacionDAO.SeleccionarHistorialActivacionManifiesto(ultimoEventoRegistrado.NumeroManifiesto); if (transporte != null) { if (transporte.ClaseTransporte == "ZT17" || transporte.ClaseTransporte == "ZT18") { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.IniciaViaje || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } } } //si tiene inicios de cargue sin fin cargue, muestra solo fin cargue if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.IniciaCargue) { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.FinCargue || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } //si valida tiene mas entregas pendientes por registrarle datos de cargue EntregaDAO entregaDAO = new EntregaDAO(); List <Entrega> entregasManifiesto = entregaDAO.SeleccionarEntregasPorTransporte(numeroManifiesto); if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.FinCargue) { int entregasCargadas = 0; foreach (Entrega entrega in entregasManifiesto) { var llegadaCargue = (from e in eventosRegistrados where e.IdTipoEvento == (int)TipoEventoLogisticoEnum.LlegadaCargue where e.campo1 == entrega.NumeroEntrega.ToString() select e).ToList(); var finCargue = (from e in eventosRegistrados where e.IdTipoEvento == (int)TipoEventoLogisticoEnum.FinCargue where e.campo1 == entrega.NumeroEntrega.ToString() select e).ToList(); if (llegadaCargue != null && finCargue != null) { entregasCargadas += 1; } } if (entregasCargadas < entregasManifiesto.Count) { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.LlegadaCargue || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } } //si tiene inicios de descargue sin fin descargue, muestra solo fin descargue if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.IniciaDescargue) { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.FinDescargue || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } //si valida tiene mas entregas pendientes por registrarle datos de descargue if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.FinDescargue) { bool existenEntregasSinDescargar = false; int entregasDescargadasoDesegachadas = 0; foreach (Entrega entrega in entregasManifiesto) { var llegadaDescargue = (from e in eventosRegistrados where e.IdTipoEvento == (int)TipoEventoLogisticoEnum.LlegadaDestino where e.campo1 == entrega.NumeroEntrega.ToString() select e).FirstOrDefault(); var finDescargue = (from e in eventosRegistrados where e.IdTipoEvento == (int)TipoEventoLogisticoEnum.FinDescargue where e.campo1 == entrega.NumeroEntrega.ToString() select e).FirstOrDefault(); if (llegadaDescargue != null && finDescargue != null) { entregasDescargadasoDesegachadas = entregasDescargadasoDesegachadas + 1; } else { var desenganche = (from e in eventosRegistrados where e.IdTipoEvento == (int)TipoEventoLogisticoEnum.Desenganche select e).FirstOrDefault(); if (desenganche != null) { int remesesasDesengachadas = 0; if (int.TryParse(desenganche.campo1, out remesesasDesengachadas)) { entregasDescargadasoDesegachadas = entregasDescargadasoDesegachadas + remesesasDesengachadas; } } } } if (entregasDescargadasoDesegachadas < entregasManifiesto.Count()) { existenEntregasSinDescargar = true; } if (existenEntregasSinDescargar) { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.LlegadaDestino || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } } //si tiene inicios de paradas sin continuacion viaje, muestra solo eventos que puede registrar en esta parado if (ultimoEventoRegistrado.IdTipoEvento == (int)TipoEventoLogisticoEnum.ParadaCamino) { eventosSucesores = tipoEventos.Where(t => t.CodigoEvento == (int)TipoEventoLogisticoEnum.ContinuacionViaje || t.CodigoEvento == (int)TipoEventoLogisticoEnum.Otro).ToList(); return(eventosSucesores); } return(eventosSucesores); }