public IActionResult AgregarDocente(DatosDocente datosDocente, Docente docente)
        {
            if (ModelState.IsValid)
            {
                datosDocente.Docentes.Add(docente);
                return(RedirectToAction("VerDocente", docente));
            }

            return(View(docente));
        }
        public IActionResult EliminarDocente(DatosDocente datosDocente, Docente docente)
        {
            if (ModelState.IsValid)
            {
                var ID = Request.Form["opciones"];
                foreach (var datos in datosDocente.Docentes)
                {
                    if (ID == datos.ID.ToString())
                    {
                        ViewData["Codigo"]        = datos.ID;
                        ViewData["Nombre"]        = datos.NOMBRE;
                        ViewData["Telefono"]      = datos.TELEFONO;
                        ViewData["IDUniversidad"] = datos.ID_UNIVERSIDAD;
                        break;
                    }
                }


                var DeleteButton = Request.Form["Delete"];
                if (DeleteButton == "delete")
                {
                    int x = 0;

                    foreach (var datos in datosDocente.Docentes)
                    {
                        if (datos.ID == datosDocente.IDSelected)
                        {
                            break;
                        }
                        x++;
                    }

                    datosDocente.Docentes.RemoveAt(x);
                    return(View("VerDocente", datosDocente));
                }
            }

            return(View(datosDocente));
        }
        public IActionResult EditarDocente(DatosDocente datosDocente, Docente docente)
        {
            if (ModelState.IsValid)
            {
                var opciones = Request.Form["opciones"];
                foreach (var datos in datosDocente.Docentes)
                {
                    if (datos.ID.ToString() == opciones)
                    {
                        ViewData["Codigo"]        = datos.ID;
                        ViewData["Nombre"]        = datos.NOMBRE;
                        ViewData["Telefono"]      = datos.TELEFONO;
                        ViewData["IDUniversidad"] = datos.ID_UNIVERSIDAD;
                        break;
                    }
                }
                var SaveButton = Request.Form["Save"];
                if (SaveButton == "save")
                {
                    int x = 0;

                    foreach (var datos in datosDocente.Docentes)
                    {
                        if (datos.ID == docente.ID)
                        {
                            break;
                        }
                        x++;
                    }

                    datosDocente.Docentes.RemoveAt(x);
                    datosDocente.Docentes.Add(docente);
                    return(RedirectToAction("VerDocente", docente));
                }
            }

            return(View(docente));
        }
        public dynamic[] updateDocente(DatosDocente infoDocente, string[] especialidades, string cedulaAnterior)
        {//Metodo que se encarga de realizar el update del docente en cuestion
            dynamic[] datosParaRetornar = new dynamic[2];

            bool retorno = false;

            string mensajeParaRetornar = "";


            //Verificacion de si ya existe el docente
            string           cedula = infoDocente.obtenerDatosDocente()[0];
            string           select = "SELECT estado from docente where cedula_docente = '" + cedula + "';";
            MySqlDataAdapter datosConsultaCedula = objetoConexion.consultarDatos(select);
            DataTable        selectDT            = new DataTable();

            datosConsultaCedula.Fill(selectDT);
            bool cedulaNuevaValida = false;

            if (cedula.Equals(cedulaAnterior))
            {
                cedulaNuevaValida = true;
            }
            else
            {
                if (selectDT.Rows.Count > 0)
                {//Si la cedula nueva ya existe
                    cedulaNuevaValida    = false;
                    retorno              = false;
                    datosParaRetornar[0] = retorno;
                    datosParaRetornar[1] = "La nueva cedula ingresada pertenece a un docente ya existente";
                    return(datosParaRetornar);
                }
                else
                {
                    cedulaNuevaValida = true;
                }
            }


            if (cedulaNuevaValida)
            {                                                                                                //Si no existe realizo el update
             //Primero borro especialidades
                string delete = "DELETE FROM ESPECIALIDAD WHERE cedula_docente = '" + cedulaAnterior + "';"; //Sql borrar especialidades

                int filasAfectadasDeleteEspecialidades = 0;                                                  //Cantidad de especialidades eliminadas

                try
                {//intento eliminar especialidades
                    filasAfectadasDeleteEspecialidades = objetoConexion.sqlInsertUpdate(delete);
                }
                catch (Exception e)
                {
                    retorno             = false;
                    mensajeParaRetornar = "Error al eliminar especialidades anteriores";
                    testing.MostrarMessageBox("Error al eliminar especialidades\n" + e.Message);
                }

                if (filasAfectadasDeleteEspecialidades > 0)
                {//Si se eliminaron las especialidades
                    string nombre    = infoDocente.obtenerDatosDocente()[1];
                    string apellido  = infoDocente.obtenerDatosDocente()[2];
                    string direccion = infoDocente.obtenerDatosDocente()[3];
                    string telefono  = infoDocente.obtenerDatosDocente()[4];
                    string email     = infoDocente.obtenerDatosDocente()[5];

                    string update = "UPDATE DOCENTE " +
                                    "SET cedula_docente = '" + cedula + "'," +
                                    " nombre = '" + nombre + "'," +
                                    " apellido = '" + apellido + "'," + //Sql de update docente
                                    " direccion = '" + direccion + "'," +
                                    " telefono = '" + telefono + "'," +
                                    " email = '" + email + "'" +
                                    " WHERE cedula_docente = '" + cedulaAnterior + "';";
                    int filasAfectadas = 0;
                    try
                    {
                        filasAfectadas = objetoConexion.sqlInsertUpdate(update);//Ejecuto la consulta
                    }
                    catch (Exception e)
                    {
                        retorno             = false;
                        mensajeParaRetornar = "Error al realizar el update del docente";
                        testing.MostrarMessageBox("Error al realizar el update del docente\n" + e.Message);
                    }


                    if (filasAfectadas > 0)
                    {                                       //Si se realizo el update correctamente
                        int filasAfectadasEspecialidad = 0; //Cantidad de especialidades ingresadas en total
                        for (int i = 0; i < especialidades.Length; i++)
                        {                                   //Se recorre el array de especialidades y se inserta
                            string especialidadInsert = "INSERT INTO especialidad VALUES('" + cedula + "','" + especialidades[i] + "');";
                            objetoConexion.sqlInsertUpdate(especialidadInsert);
                            filasAfectadasEspecialidad++;//Si se inserta correctamente se aumenta el numero de especialidades ingresadas
                        }

                        if (filasAfectadasEspecialidad == especialidades.Length)
                        {//Si la cantidad de especialidades ingresadas coincide con la cantidad de especialidades recividas para ingresar se devuelve true
                            retorno             = true;
                            mensajeParaRetornar = "Docente Actualizado correctamente";
                        }
                        else
                        {
                            retorno             = false;
                            mensajeParaRetornar = "Error al actualizar docente";
                        }
                    }
                }

                datosParaRetornar[0] = retorno;
                datosParaRetornar[1] = mensajeParaRetornar;

                return(datosParaRetornar);
            }
            else
            {
                retorno = false;
                datosParaRetornar[0] = retorno;
                datosParaRetornar[1] = "La nueva cedula ingresada pertenece a un docente ya existente";
                return(datosParaRetornar);
            }
        }
        public dynamic[] ingresarDocente(DatosDocente infoDocente, string[] especialidades)
        {//Metodo que ingresa datos en la base de datos
            dynamic[] datosParaRetornar   = new dynamic[2];
            bool      retorno             = false;
            string    mensajeParaRetornar = "";
            string    cedula    = infoDocente.obtenerDatosDocente()[0];
            string    nombre    = infoDocente.obtenerDatosDocente()[1];
            string    apellido  = infoDocente.obtenerDatosDocente()[2];
            string    direccion = infoDocente.obtenerDatosDocente()[3];
            string    telefono  = infoDocente.obtenerDatosDocente()[4];
            string    email     = infoDocente.obtenerDatosDocente()[5];

            //Verificacion de si ya existe el docente
            string           select = "SELECT estado from docente where cedula_docente = '" + cedula + "';";
            MySqlDataAdapter datosConsultaCedula = objetoConexion.consultarDatos(select);
            DataTable        selectDT            = new DataTable();

            datosConsultaCedula.Fill(selectDT);
            if (selectDT.Rows.Count > 0)
            {
                retorno = false;
                datosParaRetornar[0] = retorno;
                datosParaRetornar[1] = "El docente ya existe";
                return(datosParaRetornar);
            }
            else
            {
                string insert = "INSERT INTO DOCENTE VALUES('" +
                                cedula + "','" +
                                nombre + "','" +
                                apellido + "','" + //Sql de insert de docente
                                direccion + "','" +
                                telefono + "','" +
                                email + "',1);";

                int filasAfectadas = objetoConexion.sqlInsertUpdate(insert); //Se realiza el insert y se guarda la cantidad de filas afectadas
                if (filasAfectadas > 0)
                {                                                            //Si el docente se ingreso correctamente
                    int filasAfectadasEspecialidad = 0;                      //Cantidad de especialidades ingresadas en total
                    for (int i = 0; i < especialidades.Length; i++)
                    {                                                        //Se recorre el array de especialidades y se inserta
                        string especialidadInsert = "INSERT INTO especialidad VALUES('" + cedula + "','" + especialidades[i] + "');";
                        objetoConexion.sqlInsertUpdate(especialidadInsert);
                        filasAfectadasEspecialidad++;//Si se inserta correctamente se aumenta el numero de especialidades ingresadas
                    }

                    if (filasAfectadasEspecialidad == especialidades.Length)
                    {//Si la cantidad de especialidades ingresadas coincide con la cantidad de especialidades recividas para ingresar se devuelve true
                        retorno             = true;
                        mensajeParaRetornar = "Docente agregado correctamente";
                    }
                    else
                    {
                        retorno             = false;
                        mensajeParaRetornar = "Error al ingresar las especialidades del docente";
                    }
                }
                else
                {
                    retorno             = false;
                    mensajeParaRetornar = "Error al ingresar al docente";
                }
                datosParaRetornar[0] = retorno;
                datosParaRetornar[1] = mensajeParaRetornar;
                return(datosParaRetornar);
            }
        }
 public IActionResult EliminarDocente(DatosDocente datosDocente)
 {
     return(View(datosDocente));
 }