public int procesarControles(DateTime fecha, LecturaDTO[] lecturas)
        {
            int rows = 0;
            bool isCorriente = false;
            bool isSuper = false;
            bool isDiesel = false;
            ControlCombustibleVO controlCorriente = new ControlCombustibleVO();
            ControlCombustibleVO controlSuper = new ControlCombustibleVO();
            ControlCombustibleVO controlDiesel = new ControlCombustibleVO();

            try
            {

                for (int i = 0; i < lecturas.Length; i++)
                {
                    int idProd = lecturas[i].IdProducto;
                    switch (idProd)
                    {
                        //Corriente
                        case 1:
                            {
                                controlCorriente.InventarioFinal += (int)lecturas[i].Galones;
                                isCorriente = true;
                                break;
                            }
                        //Super
                        case 2:
                            {
                                controlSuper.InventarioFinal += (int)lecturas[i].Galones;
                                isSuper = true;
                                break;
                            }
                        //Diesel
                        case 3:
                            {
                                controlDiesel.InventarioFinal += (int)lecturas[i].Galones;
                                isDiesel = true;
                                break;
                            }
                    }
                }
                DateTime diaAnterior = fecha.AddDays(-1);
                //Corriente
                if (isCorriente)
                {
                    controlCorriente.IdProducto = 1;
                    controlCorriente.Fecha = fecha;
                    controlCorriente.GalonesCompra = (int)this.consultarComprasGalonesFechaProducto(1, fecha);
                    controlCorriente.InventarioInicial = (int)this.consultarSaldoAnterior(1, diaAnterior, diaAnterior);
                    controlCorriente.VentaMedida = (controlCorriente.GalonesCompra + controlCorriente.InventarioInicial) - controlCorriente.InventarioFinal;
                    controlCorriente.VentaSurtidor = (int)this.consultarVentaProducto(fecha, fecha, 1);
                    controlCorriente.SobranteDia = controlCorriente.VentaSurtidor - controlCorriente.VentaMedida;
                    controlCorriente.SobranteAcumulado = controlCorriente.SobranteDia + (int)this.consultarAcumuladoAnterior(1, diaAnterior, diaAnterior);
                    controlCorriente.Procentaje = (double)(((double)controlCorriente.SobranteDia / (double)(controlCorriente.GalonesCompra + controlCorriente.InventarioInicial)) * 100);

                    rows += this.guardarControlCombustible(controlCorriente);
                }

                //Super
                if (isSuper)
                {
                    controlSuper.IdProducto = 2;
                    controlSuper.Fecha = fecha;
                    controlSuper.GalonesCompra = (int)this.consultarComprasGalonesFechaProducto(2, fecha);
                    controlSuper.InventarioInicial = (int)this.consultarSaldoAnterior(2, diaAnterior, diaAnterior);
                    controlSuper.VentaMedida = (controlSuper.GalonesCompra + controlSuper.InventarioInicial) - controlSuper.InventarioFinal;
                    controlSuper.VentaSurtidor = (int)this.consultarVentaProducto(fecha, fecha, 2);
                    controlSuper.SobranteDia = controlSuper.VentaSurtidor - controlSuper.VentaMedida;
                    controlSuper.SobranteAcumulado = controlSuper.SobranteDia + (int)this.consultarAcumuladoAnterior(2, diaAnterior, diaAnterior);
                    controlSuper.Procentaje = (double)(((double)controlSuper.SobranteDia / (double)(controlSuper.GalonesCompra + controlSuper.InventarioInicial)) * 100);

                    rows += this.guardarControlCombustible(controlSuper);
                }

                //Diesel
                if (isDiesel)
                {
                    controlDiesel.IdProducto = 3;
                    controlDiesel.Fecha = fecha;
                    controlDiesel.GalonesCompra = (int)this.consultarComprasGalonesFechaProducto(3, fecha);
                    controlDiesel.InventarioInicial = (int)this.consultarSaldoAnterior(3, diaAnterior, diaAnterior);
                    controlDiesel.VentaMedida = (controlDiesel.GalonesCompra + controlDiesel.InventarioInicial) - controlDiesel.InventarioFinal;
                    controlDiesel.VentaSurtidor = (int)this.consultarVentaProducto(fecha, fecha, 3);
                    controlDiesel.SobranteDia = controlDiesel.VentaSurtidor - controlDiesel.VentaMedida;
                    controlDiesel.SobranteAcumulado = controlDiesel.SobranteDia + (int)this.consultarAcumuladoAnterior(3, diaAnterior, diaAnterior);
                    controlDiesel.Procentaje = (double)(((double)controlDiesel.SobranteDia / (double)(controlDiesel.GalonesCompra + controlDiesel.InventarioInicial)) * 100);

                    rows += this.guardarControlCombustible(controlDiesel);
                }
            }
            catch (PersistenciaException ex)
            {
                throw new PersistenciaException("Error al procesar las lecturas", ex);
            }
            return rows;
        }
 public int guardarControlCombustible(ControlCombustibleVO cc)
 {
     try
     {
         return getControlCombustibleDAO().guardarControlCombustible(cc);
     }
     catch (EstacionDBException ex)
     {
         throw new PersistenciaException("Error al guardar el control de combustible", ex);
     }
 }
        /// <summary>
        /// <para>Consulta si ya existe un control de combustible registrado para el tipo de producto y fecha recibidos como parámetro</para>
        /// </summary>
        /// <param name="idProducto">Código del producto.</param>
        /// <param name="fecha">Fecha a consultar.</param>
        /// <returns>El control de combustible existente o un objeto VO vacio en caso de que no exista.</returns>
        private ControlCombustibleVO existeControl(int idProducto, DateTime fecha)
        {
            try
            {
                ControlCombustibleVO vo = controlCombustibleDAO.consultarControl(idProducto, fecha);
                if (vo == null)
                {
                    vo = new ControlCombustibleVO();
                }

                return vo;
            }
            catch (EstacionDBException ex)
            {
                return new ControlCombustibleVO();
            }
        }
        public int guardarControlCombustible(ControlCombustibleVO cc)
        {
            int rows = 0;
            ITransaction tx = null;
            try
            {
                ISession session = ConnectionHelper.getCurrentSession(Utilidades.Utilidades.configExpo);
                tx = session.BeginTransaction();
                if (cc.Id == 0)
                {
                    session.Save(cc);
                }
                else
                {
                    session.Update(cc);
                }

                rows++;
                tx.Commit();

                ConnectionHelper.CloseSession();

                return rows;
            }
            catch (System.Exception ex)
            {
                if (tx != null)
                {
                    tx.Rollback();
                }
                ConnectionHelper.CloseSession();
                throw new EstacionDBException("Error al guardar la información de la tabla control combustible.", ex);
            }
        }
 /// <summary>
 /// <para>Guarda o actualiza el control de combustible.</para>
 /// </summary>
 /// <param name="cc">Objeto VO con los datos del control de combustible a guardar o actualizar</param>
 /// <returns># de filas afectadas</returns>
 public int guardarControlCombustible(ControlCombustibleVO cc)
 {
     try
     {
         return controlCombustibleDAO.guardarControlCombustible(cc);
     }
     catch (EstacionDBException ex)
     {
         throw new ControlCombustibleException("Error al guardar el control de combustible", ex);
     }
 }