/*Método para llevar a cabo la modificación de los datos personales de un usuario.
        * Requiere: un objeto Funcionario para ser modificado con los nuevos valores y la cédula de este, para localizarlo en la Base de datos.
        * Modifica: Modifica los datos de un usuario particular.
        * Retorna: Devuelve un true si se ejecutó la actualización correctamente en la base de datos.
        */
        public bool modificarFuncionario(Funcionario nuevo, String cedula)
        {
            try
            {
                string modif = "UPDATE Funcionario SET cedula ='" + nuevo.getCedula + "', nombre='" + nuevo.getNombre + "' , apellido1= '" + nuevo.getApellido1 + "', apellido2= '" + nuevo.getApellido2 + "', email = '" + nuevo.getEmail + "', usuario='" + nuevo.getUsuario + "', contrasena ='" + nuevo.getContrasena + "' WHERE cedula='" + cedula + "';";
                return acceso.insertarDatos(modif);

            }
            catch (SqlException e)
            {
                return false;
            }
        }
        /*Método para ejecutar la acción del IMEC correspondiente a la base de datos.
         * Requiere: un modo que corresponde a 1 si es una inserción, 2 - modificación y 3 Borrado.
         * Modifica una variable boolean dependiendo si la inserción el borrado y el modificar se llevan a cabo correctamente.
         * Retorna el valor de la variable booleana.
         */
        public bool ejecutarAccion(int modo, int accion, Object[] datos, String cedula)
        {
            Boolean resultado = false;
            switch (modo)
            {
                case 1:
                    { // INSERTAR
                        if (accion == 1)//Insertar Funcionario
                        {
                            Funcionario nuevo = new Funcionario(datos);
                            resultado = controladoraBDRecurso.insertarFuncionario(nuevo);
                        }
                        else if (accion == 2) //Insertar administrador
                        {
                            EntidadAdministrador nuevoadmin = new EntidadAdministrador(datos);
                            resultado = controladoraBDRecurso.insertarAdministrador(nuevoadmin);
                        }
                        else if (accion == 3) //Insertar miembro de equipo de pruebas
                        {
                            EntidadMiembro nuevoamiembro = new EntidadMiembro(datos);
                            resultado = controladoraBDRecurso.insertarMiembro(nuevoamiembro);
                        }
                        else if (accion == 4) //Inserta telefonos del funcionario
                        {
                            EntidadTelFuncionario telefonos = new EntidadTelFuncionario(datos);
                            resultado = controladoraBDRecurso.insertarTelefono(telefonos);
                        }
                        else if (accion == 5) //Insertar miembro de equipo de pruebas en un determinado proyecto
                        {
                            EntidadTrabajaEn miembro = new EntidadTrabajaEn(datos);
                            resultado = controladoraBDRecurso.insertarMiembroProyecto(miembro);
                        }

                    }
                    break;
                case 2:
                    { // MODIFICAR

                        if (accion == 1)//Modificar funcionario , por parte de un miembro
                        {
                            Funcionario nuevo = new Funcionario(datos);
                            resultado = controladoraBDRecurso.modificarFuncionario(nuevo, cedula);
                        }
                    }
                    break;
                case 3:
                    {
                        if (accion == 2)
                        {
                            if (controladoraBDRecurso.eliminarTelefonoFuncionario(cedula))
                            {
                                resultado = true;

                            }
                            else
                            {
                                resultado = false;
                            }
                        }
                        else if(accion==1)
                        {
                            string perfil = buscarPerfil(cedula);
                            if (perfil == "Administrador")
                            {
                                if (controladoraProyecto.buscarAsignacionProyectos(cedula) == true)
                                {
                                    resultado = false;

                                }
                                else
                                {
                                    resultado = controladoraBDRecurso.eliminarFuncionario(cedula);
                                }
                            }
                            else
                            {
                                //Miembro
                                if (controladoraProyecto.buscarAsignacionMiembrosProyecto(cedula) == true)
                                {
                                    resultado = false;

                                }
                                else if (controladoraDiseno.buscarAsignacionMiembrosDiseno(cedula) == true)
                                {
                                    resultado = false;
                                }
                                else if(controladoraEjecucion.buscarAsignacionMiembrosEjecucion(cedula)==true)
                                {
                                    resultado = false;
                                }
                                else
                                {
                                    resultado = controladoraBDRecurso.eliminarFuncionario(cedula);
                                }//auqi se llamo a elimimnar
                            }
                        }
                    }
                    break;
            }
            return resultado;
        }
 /*Método para insertar funcionario en la base de datos
  * Requiere: un objeto tipo Funcionario el cual trae todos los datos encapsulados
  * Modifica: Crea el string con la consulta y la envia a la clase que maneja la conexion con la base de datos para insertarlo
  * Retorna: true si la inserción fue exitosa, false si hubo algún error y no se insertó
  */
   public bool insertarFuncionario(Funcionario nuevo)
   {
       try
       {
           string insercion = "INSERT INTO Funcionario (cedula, nombre, apellido1, apellido2, email, usuario, contrasena, login) VALUES ('" + nuevo.getCedula + "', '" + nuevo.getNombre + "', '" + nuevo.getApellido1 + "', '" + nuevo.getApellido2 + "', '" + nuevo.getEmail + "','" + nuevo.getUsuario + "', '" +nuevo.getContrasena+ "', '"+nuevo.getLogin+ "')";
           return acceso.insertarDatos(insercion);
         
       }
       catch (SqlException e)
       {
           return false;
       }
   }