Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
12 kB
0
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;

namespace laboratorio
{
    public class ConexionBD
    {
        private MySqlConnection conexion;
        public string BD_CON = "MiConexionBD";
        private string connectionString;
        /*private string servidor = "localhost"; // Nombre del servidor de la base de datos
        private string puerto = "3306"; // Puerto de la base de datos
        private string usuario = "root"; // Usuario de la base de datos
        private string contrasena = ""; // Contraseña del usuario de la base de datos
        private string baseDatos = "espacios"; // Nombre de la base de datos
        */
        /* public ConexionBD()
         {
             string cadenaConexion = "server=" + servidor + ";port=" + puerto + ";user=" + usuario + ";password=" + contrasena + ";database=" + baseDatos + ";";
             conexion = new MySqlConnection(cadenaConexion);
         }*/
        public ConexionBD(string connectionName)
        {
            var connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
            this.conexion = new MySqlConnection(connectionString);
        }

        public MySqlConnection GetConnection()
        {
            return conexion;
        }

        public void OpenConnection()
        {
            if (conexion.State == System.Data.ConnectionState.Closed)
            {
                conexion.Open();
            }
        }

        public void CloseConnection()
        {
            if (conexion.State == System.Data.ConnectionState.Open)
            {
                conexion.Close();
            }
        }

        /*
        public bool AbrirConexion()
        {
            try
            {
                conexion.Open();
                return true;
            }
            catch (MySqlException ex)
            {
                // Manejar excepción de conexión
                return false;
            }
        }

        public void CerrarConexion()
        {
            conexion.Close();
        }

        public MySqlConnection GetConnection()
        {
            return conexion;
        }
        *//*
        public DataTable EjecutarConsulta(string consulta)
        {
            DataTable tabla = new DataTable();

            if (AbrirConexion())
            {
                MySqlCommand comando = new MySqlCommand(consulta, conexion);
                MySqlDataAdapter adaptador = new MySqlDataAdapter(comando);
                adaptador.Fill(tabla);
                CerrarConexion();
            }

            foreach (DataRow fila in tabla.Rows)
            {
                foreach (DataColumn columna in tabla.Columns)
                {
                    Console.Write(fila[columna] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Ejecutar consulta: " + tabla);
            return tabla;
        }*/
        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);
            }

            foreach (DataRow fila in tabla.Rows)
            {
                foreach (DataColumn columna in tabla.Columns)
                {
                    Console.Write(fila[columna] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Ejecutar consulta: " + tabla);
            return tabla;
        }
        /*
        public bool InsertarQuery(string consulta)
        {
            var resultado = false;
            if (AbrirConexion())
            {
                MySqlCommand comando = new MySqlCommand(consulta, conexion);
                var filasAfectadas = comando.ExecuteNonQuery();
                resultado = filasAfectadas > 0;
                CerrarConexion();
            }
            return resultado;
        }
        */
        /*
        public bool InsertarQuery(string consulta, string connectionName)
        {
            var resultado = false;
            using (var conexion = new ConexionBD(connectionName).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    var filasAfectadas = comando.ExecuteNonQuery();
                    resultado = filasAfectadas > 0;
                }
            }
            return resultado;
        }
        */
        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()
        {
            var consulta = "SELECT idEstantes, name FROM estantes";
            return EjecutarConsulta(consulta);
        }
        /*
        public DataTable ObtenerCarreras(int idEscuelaSeleccionada)
        {
            var consulta = string.Format("SELECT idCarreras, name FROM carreras WHERE idEscuelas = {0}", idEscuelaSeleccionada);
            return EjecutarConsulta(consulta);
        }
        */
        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 bool InsertarAlumno(string nombreAlumno, int semestre, int matricula, string email, int idCarrera, int idEscuela)
        {
            var consulta = string.Format("INSERT INTO alumnos (name, semestre, matricula, email, idCarreras, idEscuelas) VALUES ('{0}', '{1}', {2}, {3}, {4}, {5})", nombreAlumno, semestre, matricula, email, idCarrera, idEscuela);
            return InsertarQuery(consulta, );
        }*/

        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)
        {
            var consulta = string.Format("INSERT INTO espacio (name, abreviacion, habilitado) VALUES ('{0}','{1}','{2}')", espacio, abreviacion, 0); //0 habilitado
            return InsertarQuery(consulta);
        }
        */
        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 = string.Format("INSERT INTO estantes (name, idEspacios, habilitado) VALUES ('{0}','{1}','{2}')", estante, idEspacios, 0); //0 habilitado
                return InsertarQuery(consulta);
            }
            else
            {
                throw new Exception("Ya existe un estante con el mismo nombre.");
            }
        }

        public bool ExisteEstante(string estante)
        {
            var consulta = "SELECT COUNT(*) FROM estantes WHERE name = @nombre";
            var cmd = new MySqlCommand(consulta, conexion);
            cmd.Parameters.AddWithValue("@nombre", estante);
            var resultado = EjecutarConsulta(cmd);
            Console.WriteLine(resultado);
            return resultado.Rows.Count > 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 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;
                }
            }
        }


    }
}