/*
        public static DataTable consultaProductos(String producto, int op = 0)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";
            if (op == 1) {//Admin en productos
                cadena = @"select p.IDProducto, p.NombreProducto , p.Marca, " +
                @"p.PrecioCompra, p.PrecioVenta, p.Existencias, p.FechaCompra, p.FechaVencimiento" +
                @", p.Presentacion, p.Alias, pr.Nombre 'Proveedor', c.NombreCategoria 'Categoria' from  Productos p inner join Categorias c " +
                @"on p.IDCategoria=c.IDCategoria inner join Proveedores pr on p.IDProveedor=pr.IDProveedor where NombreProducto like('%" + producto + @"%')";
            }
            else
            {
                cadena = @"select p.IDProducto, p.NombreProducto 'Producto', p.PrecioVenta 'Precio', " +
                @"p.Presentacion, p.Marca, p.Existencias, p.FechaVencimiento" +
                @", p.Alias from Productos p where p.NombreProducto like('%" + producto + @"%')";
            }
            try
            {
                rs = cs.Consultar(cadena);

            }
            catch (Exception e)
            {
                Console.WriteLine("error al consultar Productos" + e);
                rs = new DataTable();
            }
            return rs;
        }*/
        /// <summary>
        /// Consultar los proveedores
        /// </summary>
        /// <param name="clave">Nombre del proveedor</param>
        /// <param name="i">Opcion</param>
        /// <returns>DataTable</returns>
        public static DataTable consultaProveedores(String clave = "", int i = 0)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";
            if (clave.Equals("")) {
                if (i != 0)
                {
                    cadena = @"Select IDProveedor, Nombre from Proveedores";
                }
                else
                {
                    cadena = @"select p.IDProveedor, p.Nombre , p.Correo , p.Telefono , p.Direccion" +
                        @", p.Codigo, p.Giro, p.Nombre2 , p.Apellido2, p.Telefono2, p.Correo2 , p.Cargo2 " +
                        ", p.Celular2  from Proveedores p";
                }

            } else {
                cadena = @"select p.IDProveedor, p.Nombre 'Proveedor', p.Correo , p.Telefono , p.Direccion" +
                    @", p.Codigo, p.Giro, p.Nombre2 'Nombre_R', p.Apellido2 'Apellido_R' ,p.Edad2 'Edad', p.Telefono2 'Telefono_R', p.Correo2 'Correo_R', p.Cargo2 'Cargo'" +
                    ", p.Celular2 'Celular_R' from Proveedores p where p.Nombre like('%" + clave + "%')";
            }
            try
            {
                rs = cs.Consultar(cadena);
            }
            catch (Exception e)
            {
                Console.WriteLine("error al consultar Productos" + e);
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consulta los productos en la base de datos 
        /// </summary>
        /// <returns>DataTable</returns>
        public static DataTable consultaProductos()
        {
            //Administrador
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            /*String cadena = @"select p.IDProducto, p.NombreProducto , p.Marca, " +
                @"p.PrecioCompra, p.PrecioVenta, p.Existencias, p.FechaCompra, p.FechaVencimiento" +
                @", p.Presentacion, p.Alias, pr.Nombre 'Proveedor', c.NombreCategoria 'Categoria' from  Productos p inner join Categorias c " +
                @"on p.IDCategoria=c.IDCategoria inner join Proveedores pr on p.IDProveedor=pr.IDProveedor";*/
            String cadena = @"SELECT  p.NombreProducto ,p.IDProducto, p.Marca,
                 p.PrecioVenta,p.Descuento, p.PrecioCompra,  p.IDCategoria, e.Existencias, c.NombreCategoria, pr.Nombre, p.IDProveedor,   p.fechaCompra, p.fechaVencimiento
                , p.Presentacion, p.Alias FROM  Productos p INNER JOIN Categorias c ON p.IDCategoria=c.IDCategoria
                INNER JOIN Proveedores pr ON p.IDProveedor=pr.IDProveedor INNER JOIN Existencias e on p.IDProducto = e.IDPRoducto WHERE p.Estado=true;";

            try
            {
                rs = cs.Consultar(cadena);

            }
            catch (Exception e)
            {
                Console.WriteLine("error al consultar Productos" + e);
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consultar empleados 
        /// </summary>
        /// <param name="i">
        /// </param>
        /// <returns>DataTable</returns>
        public static DataTable consultaEmpleados(int i = 0)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";
            if (i != 0) {
                cadena = @"select e.IDEmpleado, e.Nombres, e.Apellidos, e.Correo, e.EstudiosAcademicos," +
                @" e.Salario, e.FechaIngreso, e.Direccion, e.NumeroCelular, e.Cargo," +
                @" e.Edad from Empleados e WHERE e.Estado=true";
            }
            else
            {
                cadena = @"select e.IDEmpleado, e.Nombres, e.Apellidos, e.Correo, e.EstudiosAcademicos," +
                @" e.Salario, e.FechaIngreso, e.Direccion, e.NumeroCelular, e.Cargo, e.DUI, e.NIT, e.NUP," +
                @"e.NumeroTelefono, e.Edad from Empleados e WHERE e.Estado=true";
            }

            try {
                rs = cs.Consultar(cadena);

            } catch (Exception ) {
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consulta a procedimiento almacenado para verificar si se puede crear un backup de la base de datos
        /// en la fecha actual
        /// </summary>
        /// <param name="ST">Parametro para poder especificar que es procedimiento almacenado</param>
        /// <returns>DataTable</returns>
        public static DataTable ConsultaRespaldos(Boolean ST = false)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"Respaldos";

            try
            {
                rs = cs.Consultar(cadena, true);
            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consultar las notificaciones
        /// </summary>
        /// <returns>DataTable</returns>
        public static DataTable ConsultaNotificaciones()
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"ConsultaNotificaciones";
            try
            {
                rs = cs.Consultar(cadena, true);

            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consulta de categorias
        /// </summary>
        /// <param name="clave">Categorias</param>
        /// <param name="i">Opcion</param>
        /// <returns>DataTable</returns>
        public static DataTable ConsultaCategorias(String clave = "", int i = 0)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";
            if (!clave.Equals(""))
            {
                cadena = @"Select c.IDCategoria, c.NombreCategoria 'Categoria', c.Descripcion,
                    (select count(*) from productos p where p.IDCategoria=c.IDCategoria) 'Productos'
                    from Categorias c where c.NombreCategoria like('%" + clave + @"%')";
                /*cadena = @"Select c.IDCategoria, c.NombreCategoria 'Categoria', c.Descripcion"
                    + ", count(p.IDProducto) 'Productos' from Categorias c inner join Productos p " +
                    "on c.IDCategoria=p.IDCategoria where c.NombreCategoria like('%"+clave+@"%') group by Categoria ";*/
            }
            else
            {
                switch (i)
                {
                    case 1:
                        {
                            cadena = @"Select c.IDCategoria, c.NombreCategoria from Categorias c";
                            break;
                        }
                    case 2:
                        {
                            cadena = @"Select c.IDCategoria, c.NombreCategoria 'Categoria', c.Descripcion,
                            (select count(*) from productos p where p.IDCategoria=c.IDCategoria) 'Productos'
                            from Categorias c";
                            break;
                        }
                }
            }
            try
            {
                rs = cs.Consultar(cadena);

            }
            catch (Exception e)
            {
                Console.WriteLine("error al consultar Productos" + e);
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consulta a procedimiento almacenado para poder cargar los productos en 
        /// la ventana de facturar productos
        /// </summary>
        /// <returns>DataTable</returns>
        public static DataTable CargarProductosFactura()
        {
            //Procedimiento almacenado
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"CargarProductos";
            try
            {
                //   rs = cs.Consultar(cadena, true, "idfactura", idFactura);
                rs = cs.Consultar(cadena, true);
            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }
 /// <summary>
 /// Consulta los productos 
 /// </summary>
 /// <returns>DataTable</returns>
 public static DataTable ConsultaProductosFactura()
 {
     DBOperacion cs = new DBOperacion();
     DataTable rs = new DataTable();
     String cadena = @"SELECT  p.IDProducto, p.NombreProducto 'Producto', p.Marca,
                              p.PrecioVenta 'Precio', p.Descuento, p.PrecioCompra 'P_Costo', e.Existencias, p.Presentacion, p.Alias, c.NombreCategoria 'Categoria', pr.Nombre 'Proveedor', p.fechaCompra 'F_Compra', p.fechaVencimiento 'F_Vencimiento'
                              FROM  Productos p INNER JOIN Categorias c ON p.IDCategoria=c.IDCategoria
                             INNER JOIN Proveedores pr ON p.IDProveedor=pr.IDProveedor INNER JOIN Existencias e on p.IDProducto = e.IDPRoducto WHERE p.Estado=true;";
     try
     {
         rs = cs.Consultar(cadena);
     }
     catch (Exception e)
     {
         Console.WriteLine("error al consultar Productos" + e);
         rs = new DataTable();
     }
     return rs;
 }
        /// <summary>
        /// Consultar datos de un usuario para el login 
        /// </summary>
        /// <param name="pUsuario">Usuario</param>
        /// <returns>DataTable</returns>
        public static DataTable ConsultaLogin(String pUsuario)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"SELECT u.IDUsuario,u.Contrasena,u.IDRol, r.Rol, u.IDEmpleado, CONCAT(e.Nombres,' ',e.Apellidos) 'Empleado'
                        FROM Usuarios u INNER JOIN Empleados e
                        ON u.IDEmpleado = e.IDEmpleado INNER JOIN Roles r ON u.IDRol = r.IDRol WHERE u.Usuario = '" + pUsuario + "'";
            try
            {
                rs = cs.Consultar(cadena);
            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consultar a la base de datos para traer los permisos 
        /// segun el rol
        /// </summary>
        /// <param name="IDR">Id del rol</param>
        /// <returns>DataTable</returns>
        public static DataTable RolPermisos(String IDR)
        {
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"SELECT p.IDPermiso, p.IDOpcion, p.IDRol, o.Opcion
                FROM Permisos p inner join Opciones o
                on p.IDOpcion=o.IDOpcion where p.IDRol=" + IDR;
            try
            {
                rs = cs.Consultar(cadena);

            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }
        /// <summary>
        /// Consulta a procedimiento almacenado para cerrar una factura especifica
        /// </summary>
        /// <param name="idFactura">Id de la factura</param>
        /// <param name="pCliente">Cliente </param>
        /// <returns>DataTable</returns>
        public static DataTable CerrarFactura(String idFactura, String pCliente)
        {
            //Procedimiento almacenado
            DBOperacion cs = new DBOperacion();
            DataTable rs = new DataTable();
            String cadena = "";

            cadena = @"CerrarFactura";
            try
            {
                //   rs = cs.Consultar(cadena, true, "idfactura", idFactura);
                rs = cs.Consultar(cadena, true, new String[] { "idfactura", idFactura, "Cliente", pCliente });

            }
            catch (Exception )
            {
                rs = new DataTable();
            }
            return rs;
        }