//Constructor public Cuestionario(Candidato cand, string claveCuest = null, PuestoEvaluado pEv = null, int maxAccess = 0, int accesos = 0, Bloque bloq = null) { clave = claveCuest; nroAccesos = accesos; maxAccesos = maxAccess; candidatoAsociado = cand; puestoEvaluado = pEv; ultimoBloque = bloq; }
/* * La mision que justifica la existencia de los gestores es hacer de "interfaz" entre las ENTIDADES y el resto del sistema * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar */ public Candidato instanciarCandidato(string nombre, string apellido, string tipo, string nroDocumento, int nroCandidato = 0, int nroEmpleado = 0) { Candidato nuevoCandidato = new Candidato(nombre, apellido, tipo, nroDocumento, nroCandidato, nroEmpleado); return nuevoCandidato; }
/* * La mision que justifica la existencia de los gestores es hacer de "interfaz" entre las ENTIDADES y el resto del sistema * Por esto el gestor debe tener la responsabilidad de instanciar la/s que le corresponde gestionar */ public Cuestionario instanciarCuestionario(Candidato canditoAsociado, string claveCuestionario, PuestoEvaluado puestoEvAsociado, int accesos = 0) { int maxAccesos = admBD.darAccesosMaximos(); Cuestionario nuevoCuestionario = new Cuestionario(canditoAsociado, claveCuestionario, puestoEvAsociado, maxAccesos, accesos, null); return nuevoCuestionario; }
//recupera el cuestionario activo, si lo tuviere, para el candidato pasado como parametro public Cuestionario cuestionarioAsociado(Candidato candidatoAsociado) { //Se solicita a la base de datos el retorno del cuestionario activo para el candidato que se pasa como parametro List<Cuestionario> nCuestionario = admBD.recuperarCuestionarioActivo(candidatoAsociado); //Transforma el retorno de la base de datos en un objeto del tipo cuestionario Cuestionario nuevoCuest = null; if (nCuestionario != null) { if (nCuestionario[nCuestionario.Count - 1].Clave != "NO POSEE") { if (nCuestionario[nCuestionario.Count - 1].PuestoEvaluado.Codigo != "ELIMINADO") { if (nCuestionario[nCuestionario.Count - 1].Estado.Estado_ == "ACTIVO" || nCuestionario[nCuestionario.Count - 1].Estado.Estado_ == "EN PROCESO") { nuevoCuest = nCuestionario[nCuestionario.Count - 1]; if (nuevoCuest.PuestoEvaluado.Caracteristicas == null) { //Re-armamos las relaciones del cuestionario para tener todos los objetos en memoria bool re_construido = admBD.reconstruirRelaciones(nuevoCuest); if (re_construido == false) { MessageBox.Show("\tNo se pudo recuperar TODOS los datos requeridos para mostrar su cuestionario", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } } } else { if (nCuestionario[nCuestionario.Count - 1].Estado.Estado_ == "COMPLETO") { MessageBox.Show("\tUSTED YA A COMPLETADO SU CUESTIONARIO PARA ESTA EVALUACION", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } else if (nCuestionario[nCuestionario.Count - 1].Estado.Estado_ == "INCOMPLETO") { MessageBox.Show("\tSU CUESTIONARIO FUE PASADO AL ESTADO INCOMPLETO PARA ESTA EVALUACIÓN", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } else { MessageBox.Show("\tSU CUESTIONARIO FUE PASADO AL ESTADO SIN CONTESTAR PARA ESTA EVALUACIÓN", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } } } else { MessageBox.Show("EL PUESTO DE EVALUACION FUE ELIMINADO", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } } else { MessageBox.Show("NO POSEE UN CUESTIONARIO PARA SER EVALUADO", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information); return null; } } return nuevoCuest; }
/* * - RecuperarCuestionarioActivo tiene la misión de recuperar los datos del cuestionario activo (o en proceso) para un candidato */ public List<Cuestionario> recuperarCuestionarioActivo(Candidato candidato) { bool conexionExitosa; GestorCuestionario gestorCuestionarios = new GestorCuestionario(); List<Cuestionario> listaCuestionariosAsociados = new List<Cuestionario>(); //Esta es la lista que devuelve el metodo como resultado //Declaramos una lista de cuestionarios auxiliar para obtener el historial de cuestionarios del candidato List<Cuestionario> preSeleccionCuestionarios = new List<Cuestionario>(); //Declaramos una lista auxiliar de enteros para almacenar los ID de PUESTOS EVALUADOS //con el fin de reconstruir las relaciones minimas en la instanciacion del cuestionario List<int> listaIdPuestos = new List<int>(); //Otra lista auxiliar para guardar los números de bloque List<int> listaNroBloque = new List<int>(); //llamamos al metodo "iniciar conexion" conexionExitosa = iniciarConexion(); //Evaluamos si la conexion se realizo con exito if (!conexionExitosa) { MessageBox.Show("Fallo la conexion con la base de datos"); terminarConexion(); return null; } //Creamos un adaptador llamado "comando" para realizar la consultaSql que definimos abajo MySql.Data.MySqlClient.MySqlCommand comando; comando = ObjConexion.CreateCommand(); string consultaSql = "SELECT DISTINCT `clave`, `Puesto Evaluado_idPuesto Evaluado` ,`nroaccesos`, `ultimoBloque` "; consultaSql += "FROM `cuestionario` cuest "; consultaSql += "JOIN `candidato` cand on (cand.`nro documento` = '" + candidato.NroDoc + "' AND cand.idCandidato = cuest.Candidato_idCandidato) "; consultaSql += "JOIN `cuestionario_estado` c_est on (cuest.idCuestionario = c_est.Cuestionario_idCuestionario);"; //En el adaptador comando hacemos un asignacion en su atributo CommandText de la consultaSql comando.CommandText = consultaSql; //Se hace la ejecucion del comando con el metodo ExecuterReader //y se lo asigna a una variable reader que contendra los resultados de la busqueda en la base de datos MySqlDataReader reader = comando.ExecuteReader(); if (!reader.HasRows) { //si el reader esta vacio, es qe no encontro a ese candidato terminarConexion(); Cuestionario cues = gestorCuestionarios.instanciarCuestionario(candidato, "NO POSEE", null, 0); listaCuestionariosAsociados.Add(cues); return listaCuestionariosAsociados; } //Si el reader contiene datos, se realiza la lectura de todos los ellos. while (reader.Read()) { string clave = reader["clave"].ToString(); int accesos = Int32.Parse(reader["nroAccesos"].ToString()); int idPuestoEv = Int32.Parse(reader["Puesto Evaluado_idPuesto Evaluado"].ToString()); int nroBloque; if (reader["ultimoBloque"].ToString() == "")//Se contempla la posibilidad de que este número sea nulo nroBloque = 0;//IMPLICA QUE EL CUESTIONARIO ESTA ACTIVO else nroBloque = Int32.Parse(reader["ultimoBloque"].ToString());//IMPLICA QUE EL CUESTIONARIO ESTA EN PROCESO //Llamamos al gestor de cuestionarios para instanciar el cuestionario que se obtuvo de la base de datos Cuestionario cuesAsociado = gestorCuestionarios.instanciarCuestionario(candidato, clave, null, accesos); //Cargamos el cuestionario creado a la lista de preSeleccionados preSeleccionCuestionarios.Add(cuesAsociado); //Cargamos el ID del Puesto Evaludos para luego buscarlo en la base de datos listaIdPuestos.Add(idPuestoEv); //Cargamos el nroDeBloque listaNroBloque.Add(nroBloque); } /* * Como vamos a hacer una llamada a otro metodo que ejecuta una consulta sobre la base de datos * Terminamos la conexión antes de seguir adelante */ terminarConexion(); PuestoEvaluado PuestoEv; for (int i = 0; i < listaIdPuestos.Count; i++) { PuestoEv = this.recuperarPuestoEvaluado(listaIdPuestos[i]); List<Estado> listEstado = this.recuperarUltimoEstado(preSeleccionCuestionarios[i]); Estado estadoCuest = listEstado[0]; if (estadoCuest.Estado_ == "ACTIVO" || estadoCuest.Estado_ == "EN PROCESO") { //Agrego el puesto evaluado al cuestionario preSeleccionCuestionarios[i].PuestoEvaluado = PuestoEv; //Agrego el estado al cuestionario preSeleccionCuestionarios[i].Estado = estadoCuest; if (Equals(PuestoEv.Codigo, "ELIMINADO") == false) { if (listaNroBloque[i] != 0)//ESTA EN PROCESO { //Agrego el bloque al cuestionario preSeleccionCuestionarios[i].UltimoBloque = this.retornarBloque(preSeleccionCuestionarios[i], listaNroBloque[i]); } } //Luego de agregar el Estado, el bloque y el Puesto Evaluado, agregamos el cuestionario a la lista de retorno listaCuestionariosAsociados.Add(preSeleccionCuestionarios[i]); } else { //Agrego el puesto evaluado al cuestionario preSeleccionCuestionarios[i].PuestoEvaluado = PuestoEv; //Agrego el estado al cuestionario preSeleccionCuestionarios[i].Estado = estadoCuest; listaCuestionariosAsociados.Add(preSeleccionCuestionarios[i]);//Agregamos el error para controlarlo } } return listaCuestionariosAsociados; }