public static RepartoDetalleInfo ObtenerOrdenRepartoDetalleTarde(int loteID, int repartoID, int corralID, string fechaReparto)
        {
            IList <RepartoDetalleInfo> repartoDetalleLista = null;
            RepartoDetalleInfo         repartoDetalle      = null;
            LoteInfo    lote      = null;
            RepartoInfo reparto   = new RepartoInfo();
            RepartoPL   repartoPL = new RepartoPL();
            LotePL      lotePL    = new LotePL();
            var         corralPL  = new CorralPL();

            try
            {
                var fecha = DateTime.Parse(fechaReparto.ToString(CultureInfo.InvariantCulture));

                var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];

                if (seguridad != null)
                {
                    lote = lotePL.ObtenerPorId(loteID);
                    CorralInfo corral = corralPL.ObtenerPorId(corralID);

                    /*DateTime fecha = new DateTime();
                     * fecha = DateTime.Now;
                     * fecha = fecha.AddDays(-1);*/
                    if (lote != null)
                    {
                        reparto = repartoPL.ObtnerPorLote(lote, fecha);
                    }
                    else
                    {
                        reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha);
                    }

                    if (reparto != null)
                    {
                        repartoDetalleLista = repartoPL.ObtenerDetalle(reparto);

                        if (repartoDetalleLista != null)
                        {
                            for (int i = 0; i < repartoDetalleLista.Count; i++)
                            {
                                if (repartoDetalleLista[i].TipoServicioID == (int)TipoServicioEnum.Vespertino)
                                {
                                    repartoDetalle = repartoDetalleLista[i];
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(repartoDetalle);
        }
        public static RepartoInfo ObtenerOrdenReparto(int loteID, int corralID, string fechaReparto)
        {
            RepartoInfo reparto   = null;
            LoteInfo    lote      = null;
            RepartoPL   repartoPL = new RepartoPL();
            LotePL      lotePL    = new LotePL();
            var         corralPL  = new CorralPL();
            var         fecha     = DateTime.Parse(fechaReparto);

            try
            {
                var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];

                if (seguridad != null)
                {
                    lote = lotePL.ObtenerPorId(loteID);
                    CorralInfo corral = corralPL.ObtenerPorId(corralID);
                    //if (lote != null)
                    //{
                    if (lote != null)
                    {
                        reparto = repartoPL.ObtnerPorLote(lote, fecha);
                    }
                    else
                    {
                        reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha);
                    }

                    if (lote != null && reparto == null)
                    {
                        reparto = repartoPL.ObtnerPorFechaCorral(corral, fecha);
                        if (reparto == null || reparto.LoteID == 0 || reparto.LoteID != lote.LoteID)
                        {
                            reparto = null;
                        }
                    }

                    if (reparto != null && reparto.DetalleReparto != null /* &&
                                                                           * reparto.DetalleReparto.Count ==
                                                                           * reparto.DetalleReparto.Where(dato => dato.Servido == true).ToList().Count()*/)
                    {
                        var matutinosServidos  = 0;
                        var vespertinoServidos = 0;

                        matutinosServidos =
                            reparto.DetalleReparto.Count(
                                tmpDetalleReparto =>
                                tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino &&
                                tmpDetalleReparto.Servido);
                        if (matutinosServidos > 0)
                        {
                            reparto.TotalRepartos = 1;
                        }
                        vespertinoServidos =
                            reparto.DetalleReparto.Count(
                                tmpDetalleReparto =>
                                tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Vespertino &&
                                tmpDetalleReparto.Servido);

                        reparto.CantidadPedido = reparto.DetalleReparto.Where(
                            tmpDetalleReparto =>
                            tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Vespertino ||
                            tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino)
                                                 .ToList().Sum(tmpDetalleReparto => tmpDetalleReparto.CantidadProgramada);

                        if (vespertinoServidos > 0)
                        {
                            reparto.TotalRepartos = 2;
                        }
                        if (reparto.TotalRepartos == 0)
                        {
                            reparto.TotalRepartos = 3;
                        }
                        RepartoDetalleInfo repartoMatutino = reparto.DetalleReparto.FirstOrDefault(
                            tmpDetalleReparto =>
                            tmpDetalleReparto.TipoServicioID == (int)TipoServicioEnum.Matutino);
                        if (repartoMatutino != null)
                        {
                            reparto.CantidadProgramadaManiana = repartoMatutino.CantidadProgramada;
                        }
                    }
                    else
                    {
                        reparto = new RepartoInfo {
                            Fecha = fecha, TotalRepartos = 0
                        };
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(reparto);
        }