示例#1
0
        public RepartoAlimentoInfo ConsultarRepartos(FiltroCheckListReparto filtro)
        {
            try
            {
                Logger.Info();
                var repartoAlimentoDAL     = new RepartoAlimentoDAL();
                RepartoAlimentoInfo result = repartoAlimentoDAL.ConsultarRepartos(filtro);
                if (result == null)
                {
                    return(null);
                }
                result.ListaGridRepartos.ToList().ForEach(deta =>
                {
                    deta.TiempoTotalViaje = ObtenerTiempoTotalViajeConsulta(result.FechaReparto, deta);
                });

                result.TotalKilosEmbarcados = result.ListaGridRepartos.Sum(rep => rep.KilosEmbarcados);
                result.TotalKilosRepartidos = result.ListaGridRepartos.Sum(rep => rep.KilosRepartidos);
                result.TotalSobrante        = result.TotalKilosEmbarcados - result.TotalKilosRepartidos;
                result.TotalTiempoViaje     = ObtenerTiempoTotalSuma(result.ListaGridRepartos);
                result.MermaReparto         = ObtenerMermaReparto(result.ListaGridRepartos);
                result.Observaciones        = ObtenerObservacion(result.ListaGridRepartos);

                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
示例#2
0
        /// <summary>
        /// Metodo para Guardar/Modificar una entidad RepartoAlimento
        /// </summary>
        /// <param name="reparto"></param>
        /// <param name="repartoDetalle"></param>
        /// <param name="organizacionID"></param>
        public int Guardar(RepartoAlimentoInfo reparto, List <GridRepartosModel> repartoDetalle, int organizacionID)
        {
            try
            {
                Logger.Info();
                var repartoAlimentoDAL           = new RepartoAlimentoDAL();
                int result                       = reparto.RepartoAlimentoID;
                var listaRepartosAlimentoDetalle = new List <RepartoAlimentoDetalleInfo>();
                GenerarRepartoAlimentoDetalle(repartoDetalle, listaRepartosAlimentoDetalle, organizacionID, reparto.RepartoAlimentoID);

                using (var transaction = new TransactionScope())
                {
                    if (reparto.RepartoAlimentoID == 0)
                    {
                        result = repartoAlimentoDAL.Crear(reparto);
                    }
                    else
                    {
                        repartoAlimentoDAL.Actualizar(reparto);
                    }
                    listaRepartosAlimentoDetalle.ForEach(detalle =>
                    {
                        detalle.RepartoAlimentoID = result;
                        detalle.UsuarioCreacionID = reparto.UsuarioCreacionID;
                    });
                    var repartoAlimentoDetalleDAL = new RepartoAlimentoDetalleDAL();
                    repartoAlimentoDetalleDAL.Guardar(listaRepartosAlimentoDetalle);

                    if (reparto.ListaTiempoMuerto != null && reparto.ListaTiempoMuerto.Any())
                    {
                        reparto.ListaTiempoMuerto.ForEach(tiempo => tiempo.UsuarioCreacionID = reparto.UsuarioCreacionID);
                        var tiempoMuertoDAL = new TiempoMuertoDAL();
                        tiempoMuertoDAL.GuardarTiempoMuertoReparto(reparto.ListaTiempoMuerto.Where(tiempo => tiempo.TiempoMuertoID == 0).ToList(), result);
                    }

                    transaction.Complete();
                }
                return(result);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
示例#3
0
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <RepartoAlimentoInfo> ObtenerPorPagina(PaginacionInfo pagina, RepartoAlimentoInfo filtro)
 {
     try
     {
         Logger.Info();
         var repartoAlimentoDAL = new RepartoAlimentoDAL();
         ResultadoInfo <RepartoAlimentoInfo> result = repartoAlimentoDAL.ObtenerPorPagina(pagina, filtro);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#4
0
 /// <summary>
 /// Obtiene una entidad RepartoAlimento por su descripción
 /// </summary>
 /// <param name="descripcion"></param>
 /// <returns></returns>
 public RepartoAlimentoInfo ObtenerPorDescripcion(string descripcion)
 {
     try
     {
         Logger.Info();
         var repartoAlimentoDAL     = new RepartoAlimentoDAL();
         RepartoAlimentoInfo result = repartoAlimentoDAL.ObtenerPorDescripcion(descripcion);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#5
0
 /// <summary>
 /// Obtiene una lista filtrando por el estatus Activo = 1, Inactivo = 0
 /// </summary>
 /// <returns></returns>
 public IList <RepartoAlimentoInfo> ObtenerTodos(EstatusEnum estatus)
 {
     try
     {
         Logger.Info();
         var repartoAlimentoDAL             = new RepartoAlimentoDAL();
         IList <RepartoAlimentoInfo> result = repartoAlimentoDAL.ObtenerTodos(estatus);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#6
0
        private void GenerarValoresGridReparto(List <GridRepartosModel> repartos, List <DatosRepartoDataLinkModel> datosDataLink, FiltroCheckListReparto filtro)
        {
            int orden = 0;

            datosDataLink.ForEach(data =>
            {
                orden++;
                data.OrdenRegistro = orden;
            });



            var datosFiltrados = new List <DatosRepartoDataLinkModel>();

            foreach (var datosRepartoDataLinkModel in datosDataLink)
            {
                if (datosRepartoDataLinkModel.Operador == filtro.OperadorID && datosRepartoDataLinkModel.NumeroCamion.ToUpper().Trim().Equals(filtro.NumeroEconomico.ToUpper().Trim()) && datosRepartoDataLinkModel.TipoServicio == filtro.TipoServicioID)
                {
                    var fechaSplit   = datosRepartoDataLinkModel.Fecha.Split('-');
                    var fechaReparto = new DateTime();
                    if (datosRepartoDataLinkModel.FormatoFecha == 0)
                    {
                        fechaReparto = new DateTime(2000 + Convert.ToInt32(fechaSplit[2]), Convert.ToInt32(fechaSplit[0]), Convert.ToInt32(fechaSplit[1]));
                    }
                    if (fechaReparto.Date != filtro.Fecha.Date)
                    {
                        continue;
                    }
                    datosRepartoDataLinkModel.FechaReparto = fechaReparto;
                    datosFiltrados.Add(datosRepartoDataLinkModel);
                }
            }
            if (!datosFiltrados.Any())
            {
                return;
            }
            repartos.AddRange((from data in datosFiltrados.OrderBy(data => data.OrdenRegistro)
                               group data by data.NumeroReparto into agrupado
                               let elementoDatos = agrupado.FirstOrDefault()
                                                   let kilosEmbarcados = ObtenerKilosEmbarcados(agrupado)
                                                                         let kilosRepartidos = ObtenerKilosRepartidos(agrupado)
                                                                                               select new GridRepartosModel
            {
                NumeroTolva = string.Empty,
                Servicio = elementoDatos == null ? 0 : elementoDatos.TipoServicio,
                Reparto = elementoDatos.NumeroReparto,
                RacionFormula = ObtenerRacionFormula(agrupado),
                KilosEmbarcados = kilosEmbarcados,
                KilosRepartidos = kilosRepartidos,
                Sobrante = kilosEmbarcados - kilosRepartidos,
                CorralInicio = ObtenerCorralInicio(agrupado),
                CorralFinal = ObtenerCorralFinal(agrupado),
                HoraInicioReparto = ObtenerHoraInicio(agrupado),
                HoraFinalReparto = ObtenerHoraFinal(agrupado),
                TiempoTotalViaje = ObtenerTiempoTotalViaje(agrupado.ToList()),
                PesoFinal = ObtenerPesoFinal(agrupado.ToList(), kilosRepartidos)
            }
                               ).ToList());

            var repartoAlimentoBL = new RepartoAlimentoDAL();
            RepartoAlimentoInfo repartoAlimentoExiste = repartoAlimentoBL.ConsultarRepartos(filtro);

            if (repartoAlimentoExiste != null && (repartoAlimentoExiste.ListaGridRepartos != null && repartoAlimentoExiste.ListaGridRepartos.Any()))
            {
                foreach (var datosReparto in repartos)
                {
                    var reparto =
                        repartoAlimentoExiste.ListaGridRepartos.FirstOrDefault(
                            rep => rep.Reparto == datosReparto.Reparto &&
                            rep.Servicio == datosReparto.Servicio &&
                            rep.RacionFormula == datosReparto.RacionFormula);
                    if (reparto == null)
                    {
                        continue;
                    }
                    datosReparto.NumeroTolva = reparto.NumeroTolva;
                }
            }
        }