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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
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; } } }