Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
20 kB
1
Indexable
Never
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using MySql.Data.MySqlClient;
using System.Collections;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;
using static System.Windows.Forms.AxHost;
using System.Windows.Controls.Primitives;
using System.Windows.Forms;
using System.Xml.Linq;

namespace laboratorio
{
    public class ConexionBD
    {
        private MySqlConnection conexion;
        public static string BD_CON = "MiConexionBD";
        //private string connectionString;
       
        public ConexionBD(string connectionName)
        {
            var connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
            this.conexion = new MySqlConnection(connectionString);
        }

        public MySqlConnection GetConnection()
        {
            return conexion;
        }

        public DataTable EjecutarConsulta(string consulta)
        {
            DataTable tabla = new DataTable();

            try
            {
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        adaptador.Fill(tabla);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            // Descomentar para debuggear
            
            foreach (DataRow fila in tabla.Rows)
            {
                foreach (DataColumn columna in tabla.Columns)
                {
                    Console.Write(fila[columna] + " ");
                }
                Console.WriteLine();
            }
            
            return tabla;
        }
        public DataTable ObtenerEscuelas()
        {
            var consulta = "SELECT idEscuelas, name FROM escuelas";
            return EjecutarConsulta(consulta);
        }

        public DataTable ObtenerEspacios()
        {
            var consulta = "SELECT idEspacios, name FROM espacio";
            return EjecutarConsulta(consulta);
        }

        public DataTable ObtenerEstantes(int idEspacioSeleccionado)
        {
            var consulta = "SELECT idEstantes, name FROM estantes WHERE idEspacios = @idEspacios";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@idEspacios", idEspacioSeleccionado);

                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        var tabla = new DataTable();
                        adaptador.Fill(tabla);
                        return tabla;
                    }
                }
            }
        }



        public DataTable ObtenerEtiquetas(int idTipoSeleccionado, int idEspacioSeleccionado)
        {
            var consulta = "SELECT idEtiquetas, name FROM etiquetas WHERE idTipos = @idTipos AND idEspacios = @idEspacios";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@idTipos", idTipoSeleccionado);
                    comando.Parameters.AddWithValue("@idEspacios", idEspacioSeleccionado);

                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        var tabla = new DataTable();
                        adaptador.Fill(tabla);
                        return tabla;
                    }
                }
            }
        }

        public DataTable ObtenerAlumnos(int matricula)
        {
            var consulta = "SELECT * FROM alumnos WHERE matricula = @matricula";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@matricula", matricula);

                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        var tabla = new DataTable();
                        adaptador.Fill(tabla);
                        return tabla;
                    }
                }
            }
        }


        public DataTable ObtenerCarreras(int idEscuelaSeleccionada)
        {
            var consulta = "SELECT idCarreras, name FROM carreras WHERE idEscuelas = @idEscuela";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@idEscuela", idEscuelaSeleccionada);

                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        var tabla = new DataTable();
                        adaptador.Fill(tabla);
                        return tabla;
                    }
                }
            }
        }

        public DataTable ObtenerTipos(int idEspacioSeleccionado)
        {
            var consulta = "SELECT idTipos, name FROM tipos WHERE idEspacios = @idEspacios";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@idEspacios", idEspacioSeleccionado);

                    using (var adaptador = new MySqlDataAdapter(comando))
                    {
                        var tabla = new DataTable();
                        adaptador.Fill(tabla);
                        return tabla;
                    }
                }
            }
        }

        public bool InsertarAlumno(string nombreAlumno, int semestre, int matricula, string email, int idCarrera, int idEscuela)
        {
            var consulta = "INSERT INTO alumnos (name, semestre, matricula, email, idCarreras, idEscuelas) VALUES (@nombre, @semestre, @matricula, @email, @idCarrera, @idEscuela)";
            using (var conexion = new ConexionBD(BD_CON).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    comando.Parameters.AddWithValue("@nombre", nombreAlumno);
                    comando.Parameters.AddWithValue("@semestre", semestre);
                    comando.Parameters.AddWithValue("@matricula", matricula);
                    comando.Parameters.AddWithValue("@email", email);
                    comando.Parameters.AddWithValue("@idCarrera", idCarrera);
                    comando.Parameters.AddWithValue("@idEscuela", idEscuela);

                    var filasAfectadas = comando.ExecuteNonQuery();
                    return filasAfectadas > 0;
                }
            }
        }
      
        public bool InsertarEspacio(string espacio, string abreviacion)
        {
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                var consulta = "INSERT INTO espacio (name, abreviacion, habilitado) VALUES (@espacio, @abreviacion, @habilitado)";
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@espacio", espacio);
                    command.Parameters.AddWithValue("@abreviacion", abreviacion);
                    command.Parameters.AddWithValue("@habilitado", 0);
                    connection.Open();
                    var filasAfectadas = command.ExecuteNonQuery();
                    return filasAfectadas > 0;
                }
            }
        }
       
        public bool InsertarEstante(string estante, int idEspacios)
        {
            var existeEstante = ExisteEstante(estante);

            if (!existeEstante)
            {
                var consulta = "INSERT INTO estantes (name, idEspacios, habilitado) VALUES (@estante, @idEspacios, @habilitado)";
                using (var connection = new ConexionBD(BD_CON).GetConnection())
                {
                    using (var command = new MySqlCommand(consulta, connection))
                    {
                        command.Parameters.AddWithValue("@estante", estante);
                        command.Parameters.AddWithValue("@idEspacios", idEspacios);
                        command.Parameters.AddWithValue("@habilitado", 0);

                        connection.Open();
                        var filasAfectadas = command.ExecuteNonQuery();
                        return filasAfectadas > 0;
                    }
                }
            }
            else
            {
                throw new Exception("Ya existe un estante con el mismo nombre.");
            }
        }

        public bool InsertarTipo(string tipo, int idEspacios)
        {
            var existeEstante = ExisteTipo(tipo);

            if (!existeEstante)
            {
                var consulta = "INSERT INTO tipos (name, idEspacios, habilitado) VALUES (@estante, @idEspacios, @habilitado)";
                using (var connection = new ConexionBD(BD_CON).GetConnection())
                {
                    using (var command = new MySqlCommand(consulta, connection))
                    {
                        command.Parameters.AddWithValue("@estante", tipo);
                        command.Parameters.AddWithValue("@idEspacios", idEspacios);
                        command.Parameters.AddWithValue("@habilitado", 0);

                        connection.Open();
                        var filasAfectadas = command.ExecuteNonQuery();
                        return filasAfectadas > 0;
                    }
                }
            }
            else
            {
                throw new Exception("Ya existe un tipo con el mismo nombre.");
            }
        }

        public bool InsertarEtiqueta(string etiqueta, int idEspacios, int idTipos)
        {
            var existeEtiqueta = ExisteEtiqueta(etiqueta);

            if (!existeEtiqueta)
            {
                var consulta = "INSERT INTO etiquetas (name, idEspacios, idTipos, habilitado) VALUES (@estante, @idEspacios, @idTipos, @habilitado)";
                using (var connection = new ConexionBD(BD_CON).GetConnection())
                {
                    using (var command = new MySqlCommand(consulta, connection))
                    {
                        command.Parameters.AddWithValue("@estante", etiqueta);
                        command.Parameters.AddWithValue("@idEspacios", idEspacios);
                        command.Parameters.AddWithValue("@idTipos", idTipos);
                        command.Parameters.AddWithValue("@habilitado", 0);

                        connection.Open();
                        var filasAfectadas = command.ExecuteNonQuery();
                        return filasAfectadas > 0;
                    }
                }
            }
            else
            {
                throw new Exception("Ya existe una etiqueta con el mismo nombre.");
            }
        }

        public bool InsertarInventario(string nombre, string modelo, string marca, string descripcion, int cantidad, string unidad, int costo, string notas, int idEspacios, int idTipos, int idEstantes, int idEtiquetas)
        {
            var consulta = "INSERT INTO inventarios (name, modelo, marca, descripcion, cantidad, unidad, costo, notas, idEspacios, idTipos, idEstantes, idEtiquetas) VALUES (@nombre, @modelo, @marca, @descripcion, @cantidad, @unidad, @costo, @notas, @idEspacios, @idTipos, @idEstantes, @idEtiquetas)";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@nombre", nombre);
                    command.Parameters.AddWithValue("@modelo", modelo);
                    command.Parameters.AddWithValue("@marca", marca);
                    command.Parameters.AddWithValue("@descripcion", descripcion);
                    command.Parameters.AddWithValue("@cantidad", cantidad);
                    command.Parameters.AddWithValue("@unidad", unidad);
                    command.Parameters.AddWithValue("@costo", costo);
                    command.Parameters.AddWithValue("@notas", notas);
                    command.Parameters.AddWithValue("@idEspacios", idEspacios);
                    command.Parameters.AddWithValue("@idTipos", idTipos);
                    command.Parameters.AddWithValue("@idEstantes", idEstantes);
                    command.Parameters.AddWithValue("@idEtiquetas", idEtiquetas);


                    connection.Open();
                        var filasAfectadas = command.ExecuteNonQuery();
                        return filasAfectadas > 0;
                }
            }
        }

        public bool InsertarPrestamo(int idAlumnos, int idInventarios, int idUsuarios, int tipoPrestamo)
        {
            var consulta = "INSERT INTO prestamos (idAlumnos, idInventarios, idUsuarios, tipoPrestamo) VALUES (@idAlumnos, @idInventarios, @idUsuarios, @tipoPrestamo)";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@idAlumnos", idAlumnos);
                    command.Parameters.AddWithValue("@idInventarios", idInventarios);
                    command.Parameters.AddWithValue("@idUsuarios", idUsuarios);
                    command.Parameters.AddWithValue("@tipoPrestamo", tipoPrestamo);


                    connection.Open();
                    var filasAfectadas = command.ExecuteNonQuery();
                    return filasAfectadas > 0;
                }
            }
        }

        public bool DevolverPrestamo(int idAlumnos, int idInventarios, int idUsuarios)
        {
            var consulta = "UPDATE prestamos SET estado = 1, idUsuarios = @idUsuarios, returned_at = NOW(), notas = CONCAT('Devuelto por el alumno con nombre ', (SELECT name FROM alumnos WHERE idAlumnos = @idAlumnos)) WHERE idAlumnos = @idAlumnos AND idInventarios = @idInventarios AND estado = 0";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@idAlumnos", idAlumnos);
                    command.Parameters.AddWithValue("@idInventarios", idInventarios);
                    command.Parameters.AddWithValue("@idUsuarios", idUsuarios);

                    connection.Open();
                    var filasAfectadas = command.ExecuteNonQuery();
                    return filasAfectadas > 0;
                }
            }
        }

        public DataTable LlenarListBox(string identificador)
        {
            var consulta = "SELECT * FROM inventarios WHERE identificador = @identificador";

            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@identificador", identificador);

                    connection.Open();
                    using (var adapter = new MySqlDataAdapter(command))
                    {
                        var result = new DataTable();
                        adapter.Fill(result);
                        return result;
                    }
                }
            }
        }


        public bool ExisteEstante(string estante)
        {
            var consulta = "SELECT COUNT(*) FROM estantes WHERE name = @nombre";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@nombre", estante);

                    connection.Open();
                    var resultado = command.ExecuteScalar();
                    Console.WriteLine(resultado);
                    return Convert.ToInt32(resultado) > 0;
                }
            }
        }

        public bool ConsultarEstadoPrestamo(int idInventarios)
        {            
            var consulta = "SELECT COUNT(*) FROM prestamos WHERE idInventarios = @idInventarios AND estado = @estado";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@idInventarios", idInventarios);
                    command.Parameters.AddWithValue("@estado", 0);

                    connection.Open();
                    var resultado = command.ExecuteScalar();
                    Console.WriteLine(resultado);
                    if (Convert.ToInt32(resultado) > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                        
                }
            }
        }

        public bool ExisteEtiqueta(string etiqueta)
        {
            var consulta = "SELECT COUNT(*) FROM etiquetas WHERE name = @nombre";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@nombre", etiqueta);

                    connection.Open();
                    var resultado = command.ExecuteScalar();
                    Console.WriteLine(resultado);
                    return Convert.ToInt32(resultado) > 0;
                }
            }
        }

        public bool ExisteTipo(string tipo)
        {
            var consulta = "SELECT COUNT(*) FROM tipos WHERE name = @nombre";
            using (var connection = new ConexionBD(BD_CON).GetConnection())
            {
                using (var command = new MySqlCommand(consulta, connection))
                {
                    command.Parameters.AddWithValue("@nombre", tipo);

                    connection.Open();
                    var resultado = command.ExecuteScalar();
                    Console.WriteLine(resultado);
                    return Convert.ToInt32(resultado) > 0;
                }
            }
        }
    }
}