public bool modificarPuesto(string codigo, string nombreDePuesto, string empresa, List<Caracteristica> caract, string descripcion = null)
        {
            Puesto nuevoPuesto = new Puesto(codigo, nombreDePuesto, empresa, descripcion);
            inicializarCaracteristicas(nuevoPuesto, caract);

            return admBD.modificarPuesto(nuevoPuesto);
        }
        public bool duplicar_Esquema_Para_Evaluacion(Puesto puestoAsociado, List<Candidato> cand_Seleccionados)
        {
            AdministradorBD admBD = new AdministradorBD();

            bool realizado = admBD.guardar_Evaluacion(puestoAsociado, cand_Seleccionados);

            if (realizado)
                return true;
            else
                return false;
        }
示例#3
0
 public Empleado(int idEmpleado,
                 string dniEmp,
                 string nombreEmp,
                 string apellidoEmp,
                 DateTime fechaNac,
                 string direccionEmp,
                 string telefonoEmp,
                 string emailEmp,
                 Departamento departamentoEmp,
                 Puesto puestoEmp,
                 Ciudad ciudadEmp)
 {
     _IdEmpleado      = idEmpleado;
     _DniEmp          = dniEmp;
     _NombreEmp       = nombreEmp;
     _ApellidoEmp     = apellidoEmp;
     _FechaNac        = fechaNac;
     _DireccionEmp    = direccionEmp;
     _TelefonoEmp     = telefonoEmp;
     _EmailEmp        = emailEmp;
     _DepartamentoEmp = departamentoEmp;
     _PuestoEmp       = puestoEmp;
     _CiudadEmp       = ciudadEmp;
 }
示例#4
0
 public PuestoAtencion(Puesto puesto)
 {
     this.puesto = puesto;
 }
        public bool guardar_Evaluacion(Puesto puestoAsociado, List<Candidato> listaCandidatos_aEvaluar)
        {
            MySql.Data.MySqlClient.MySqlTransaction transaccion;

            bool conexionExitosa;
            int cantDeFilasAfectadas = 0;

            conexionExitosa = iniciarConexion();

            string consultaSql1 = "INSERT INTO `puesto evaluado`(codigo,nombre,descripcion,empresa) " +
                "VALUES ('" + puestoAsociado.Codigo + "','" + puestoAsociado.Nombre + "','" + puestoAsociado.Descripcion + "','" + puestoAsociado.Empresa + "');";

            MySql.Data.MySqlClient.MySqlCommand comando1 = new MySqlCommand(), comando2 = new MySqlCommand(), comando3 = new MySqlCommand(), comando4 = new MySqlCommand();
            MySql.Data.MySqlClient.MySqlCommand comando5 = new MySqlCommand(), comando6 = new MySqlCommand(), comando7 = new MySqlCommand(), comando8 = new MySqlCommand();

            comando1.Connection = ObjConexion; comando1.CommandType = CommandType.Text;
            comando1.CommandTimeout = 0; comando1.CommandText = consultaSql1;

            comando2.Connection = ObjConexion; comando2.CommandType = CommandType.Text;
            comando2.CommandTimeout = 0;

            comando3.Connection = ObjConexion; comando3.CommandType = CommandType.Text;
            comando3.CommandTimeout = 0;

            comando4.Connection = ObjConexion; comando4.CommandType = CommandType.Text;
            comando4.CommandTimeout = 0;

            comando5.Connection = ObjConexion; comando5.CommandType = CommandType.Text;
            comando5.CommandTimeout = 0;

            comando6.Connection = ObjConexion; comando6.CommandType = CommandType.Text;
            comando6.CommandTimeout = 0;

            comando7.Connection = ObjConexion; comando7.CommandType = CommandType.Text;
            comando7.CommandTimeout = 0;

            comando8.Connection = ObjConexion; comando8.CommandType = CommandType.Text;
            comando8.CommandTimeout = 0;

            transaccion = ObjConexion.BeginTransaction();

            try
            {
                if (!conexionExitosa)
                    return false;

                comando1.Transaction = transaccion; comando2.Transaction = transaccion;
                comando3.Transaction = transaccion; comando4.Transaction = transaccion;
                comando5.Transaction = transaccion; comando6.Transaction = transaccion;
                comando7.Transaction = transaccion; comando8.Transaction = transaccion;

                cantDeFilasAfectadas += comando1.ExecuteNonQuery();

                for (int i = 0; i < listaCandidatos_aEvaluar.Count; i++)
                {
                    string fecha_estado_activo = formatear_fecha(DateTime.Now);

                    string consultaSql2 = "INSERT INTO cuestionario(clave,nroAccesos,`Puesto Evaluado_idPuesto Evaluado`,Candidato_idCandidato) "
                        + "VALUES ('" + listaCandidatos_aEvaluar[i].Clave + "',0,"
                        + "(SELECT MAX(`idPuesto Evaluado`) FROM `puesto evaluado`),"
                        + "(SELECT DISTINCT idCandidato FROM candidato WHERE `nro documento` = '" + listaCandidatos_aEvaluar[i].NroDoc + "'));";

                    comando2.CommandText = consultaSql2;
                    cantDeFilasAfectadas += comando2.ExecuteNonQuery();

                    string consultaSql3 = "INSERT INTO cuestionario_estado(Cuestionario_idCuestionario,Estado_idEstado,fecha) " +
                        "VALUES ((SELECT idCuestionario FROM cuestionario WHERE clave = '" + listaCandidatos_aEvaluar[i].Clave + "'),1,'" + fecha_estado_activo + "');";

                    comando3.CommandText = consultaSql3;
                    cantDeFilasAfectadas += comando3.ExecuteNonQuery();
                }

                for (int i = 0; i < puestoAsociado.Caracteristicas.Count; i++)
                {
                    Competencia competencia1 = (Competencia)puestoAsociado.Caracteristicas[i].dato1;

                    if (!existeCompetenciaEv(competencia1.Codigo))
                    {
                        string consultaSql4 = "INSERT INTO `competencia evaluada`(codigo,nombre,descripcion) " +
                            "VALUES ('" + competencia1.Codigo + "','" + competencia1.Nombre + "','" + competencia1.Descripcion + "');";

                        comando4.CommandText = consultaSql4;
                        cantDeFilasAfectadas += comando4.ExecuteNonQuery();

                        for (int j = 0; j < competencia1.ListaFactores.Count; j++)
                        {
                            Factor factor_Asociado = competencia1.ListaFactores[j];

                            if (!existeFactorEv(factor_Asociado.Codigo))
                            {
                                string consultaSql5 = "INSERT INTO `factor evaluado`(codigo,nombre,nroOrden,descripcion,`Competencia Evaluada_idCompetencia Evaluada`) " +
                                    "VALUES ('" + factor_Asociado.Codigo + "','" + factor_Asociado.Nombre + "','" + factor_Asociado.Nro_orden + "','" + factor_Asociado.Descripcion + "',"
                                    + "(SELECT `idCompetencia Evaluada` FROM `competencia evaluada` WHERE codigo = '" + competencia1.Codigo + "'));";

                                comando5.CommandText = consultaSql5;
                                cantDeFilasAfectadas += comando5.ExecuteNonQuery();

                                for (int p = 0; p < factor_Asociado.ListaPreguntas.Count; p++)
                                {
                                    Pregunta preg_Asociada = factor_Asociado.ListaPreguntas[p];

                                    string consultaSql6 = "INSERT INTO `pregunta evaluada`(codigo,nombre,pregunta,descripcion,`Factor Evaluado_idFactor Evaluado`,`Opcion de Respuesta Evaluada_idOpcion de Respuesta Evaluada`) " +
                                    "VALUES ((SELECT p.codigo FROM pregunta AS p "
                                    + "JOIN factor AS f ON (f.codigo = '" + factor_Asociado.Codigo + "' AND f.codigo = p.Factor_codigo) "
                                    + "WHERE p.nombre = '" + preg_Asociada.Nombre + "'),"
                                    + "'" + preg_Asociada.Nombre + "','" + preg_Asociada.Preg_aRealizar + "','" + preg_Asociada.Descripcion + "',"
                                    + "(SELECT `idFactor Evaluado` FROM `factor evaluado` AS f "
                                    + "JOIN `competencia evaluada` AS c ON (c.codigo = '" + competencia1.Codigo + "' AND c.`idCompetencia Evaluada` = f.`Competencia Evaluada_idCompetencia Evaluada`) "
                                    + "WHERE f.codigo = '" + factor_Asociado.Codigo + "'),"
                                    + "(SELECT `idOpcion de Respuesta Evaluada` FROM `opcion de respuesta evaluada` WHERE nombre = '" + preg_Asociada.OpcionRespuesta_Asociada.Nombre + "'));";

                                    comando6.CommandText = consultaSql6;
                                    cantDeFilasAfectadas += comando6.ExecuteNonQuery();

                                    for (int op = 0; op < preg_Asociada.OpcionRespuesta_Asociada.ListaOpciones.Count; op++)
                                    {
                                        Opciones opciones_Asociadas = preg_Asociada.OpcionRespuesta_Asociada.ListaOpciones[op];

                                        string consultaSql7 = "INSERT INTO `pregunta evaluada_opcion evaluada`(`Opcion Evaluada_idOpcion`,`Pregunta Evaluada_idPregunta Evaluada`,ponderacion) "
                                            + "VALUES ((SELECT idOpcion FROM `opcion evaluada` WHERE nombre = '" + opciones_Asociadas.Nombre + "'),"
                                            + "(SELECT `idPregunta Evaluada` FROM `pregunta evaluada` AS p "
                                            + "JOIN `factor evaluado` AS f ON (f.codigo = '" + factor_Asociado.Codigo + "' AND f.`idFactor Evaluado` = p.`Factor Evaluado_idFactor Evaluado`) "
                                            + "WHERE p.nombre = '" + preg_Asociada.Nombre + "')," + opciones_Asociadas.Valor + ");";

                                        comando7.CommandText = consultaSql7;
                                        cantDeFilasAfectadas += comando7.ExecuteNonQuery();

                                    }//FIN : for (int op = 0; op < preg_Asociada.OpcionRespuesta_Asociada.ListaOpciones.Count; op++)

                                }//FIN : for (int p = 0; p < factor_Asociado.ListaPreguntas.Count; p++)

                            }//FIN : if (existeFactorEv(factor_Asociado.Codigo))

                        }//FIN : for (int j = 0; j < competencia1.ListaFactores.Count; j++)

                    }//FIN : if (!existeCompetenciaEv(competencia1.Codigo))

                    Ponderacion ponderacion1 = (Ponderacion)puestoAsociado.Caracteristicas[i].dato2;

                    string consultaSql8 = "INSERT INTO `puesto evaluado_competencia evaluada` (`Puesto Evaluado_idPuesto Evaluado`,`Competencia Evaluada_idCompetencia Evaluada`,ponderacion) "
                        + "VALUES ((SELECT MAX(`idPuesto Evaluado`) FROM `puesto evaluado`),"
                        + "(SELECT `idCompetencia Evaluada` FROM `competencia evaluada` WHERE codigo = '" + competencia1.Codigo + "')," + ponderacion1.Valor + ");";

                    comando8.CommandText = consultaSql8;
                    cantDeFilasAfectadas += comando8.ExecuteNonQuery();

                }//FIN : for (int i = 0; i < puestoAsociado.Caracteristicas.Count; i++)

                transaccion.Commit();
                terminarConexion();

            }

            catch (MySqlException)
            {
                // si algo fallo deshacemos todo
                transaccion.Rollback();
                // mostramos el mensaje del error
                MessageBox.Show("MYSQL EXCEPTION - La transaccion no se pudo realizar");

                return false;
            }

            catch (DataException)
            {
                // si algo fallo deshacemos todo
                transaccion.Rollback();
                // mostramos el mensaje del error
                MessageBox.Show("DATA EXCEPTION - La transaccion no se pudo realizar");

                return false;

            }

            if (cantDeFilasAfectadas >= 2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /*
         * ====================
         * METODOS DE RESGUARDO
         * ====================
         *      - Tiene la finalidad de guardar los datos de una entidad
         */
        public bool guardarPuesto(Puesto puesto)
        {
            //codigo, nombreDePuesto, empresa, descripcion
            string consultaSql1 = "INSERT INTO puesto (codigo,nombre,empresa,descripcion) " +
                "VALUES ('" + puesto.Codigo + "','" + puesto.Nombre + "','" + puesto.Empresa + "','" + puesto.Descripcion + "');";

            MySql.Data.MySqlClient.MySqlTransaction transaccion;

            bool conexionExitosa;
            int cantDeFilasAfectadas = 0;

            conexionExitosa = iniciarConexion();

            MySql.Data.MySqlClient.MySqlCommand comando1 = new MySqlCommand(), comando2 = new MySqlCommand();

            comando1.Connection = ObjConexion;
            comando1.CommandType = CommandType.Text;
            comando1.CommandTimeout = 0;
            comando1.CommandText = consultaSql1;

            comando2.Connection = ObjConexion;
            comando2.CommandType = CommandType.Text;
            comando2.CommandTimeout = 0;

            transaccion = ObjConexion.BeginTransaction();

            try
            {
                if (!conexionExitosa)
                    return false;

                comando1.Transaction = transaccion;
                comando2.Transaction = transaccion;

                cantDeFilasAfectadas += comando1.ExecuteNonQuery();

                for (int i = 0; i < puesto.Caracteristicas.Count; i++)
                {
                    Competencia competencia1 = (Competencia)puesto.Caracteristicas[i].dato1;
                    Ponderacion ponderacion1 = (Ponderacion)puesto.Caracteristicas[i].dato2;

                    string consultaSql2 = "INSERT INTO puesto_competencia (Puesto_codigo,Competencia_codigo,ponderacion) " +
                       "VALUES ('" + puesto.Codigo + "','" + competencia1.Codigo + "','" + ponderacion1.Valor + "');";

                    comando2.CommandText = consultaSql2;

                    cantDeFilasAfectadas += comando2.ExecuteNonQuery();
                }

                transaccion.Commit();
                terminarConexion();

            }

            catch (MySqlException MysqlEx)
            {
                // si algo fallo deshacemos todo
                transaccion.Rollback();
                // mostramos el mensaje del error
                MessageBox.Show("La transaccion no se pudo realizar: " + MysqlEx.Message);

            }
            catch (DataException Ex)
            {
                // si algo fallo deshacemos todo
                transaccion.Rollback();
                // mostramos el mensaje del error
                MessageBox.Show("La transaccion no se pudo realizar: " + Ex.Message);

            }

            if (cantDeFilasAfectadas >= 2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /*
         * *****************************************************************
         * Se reconstruyen o se trae a memoria el arbol de clases asociadas
         * que corresponden a un puesto puntual
         ******************************************************************

         * - RecuperarCaracteristicasPuesto tiene la misión de recuperar todas las competencias que estan activas (no eliminadas)
         *   y ponederaciones asociades a un puesto puntual de la base de datos

         */
        public List<Caracteristica> reconstruir_CaracteristicasPuesto(Puesto puestoAsociado)
        {
            bool conexionExitosa;
            bool competenciaEsEvaluable;
            //Lista que se retornara con los datos finales de la busqueda
            List<Caracteristica> listaCaracteristicas = new List<Caracteristica>();
            //Lista de caracteristicas auxiliar para realizar la busqueda (almacena los ID de las competencias y ponderaciones)
            List<Caracteristica> listaRetornoBD = new List<Caracteristica>();
            string errorCompetenciaNoEvaluable = "";
            Caracteristica elementoLista = new Caracteristica();

            //La consulta selecciona las competencias asociadas al puesto pasado como parametro con su correspondiente ponderacion
            string consultaSql = "SELECT `Competencia_codigo`, `ponderacion` "
            + "FROM `puesto_competencia` ponderaciones "
            + "JOIN `puesto` p on (p.`codigo` = '" + puestoAsociado.Codigo + "') "
            + "WHERE p.codigo = ponderaciones.`Puesto_codigo`;";

            conexionExitosa = iniciarConexion();

            if (!conexionExitosa)
            {
                elementoLista.dato1 = "No se realizo la conexion con la base de datos";//Se informa el error
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            //Creamos un adaptador llamado "comando" para realizar la consultaSql que definimos mas arriba
            MySql.Data.MySqlClient.MySqlCommand comando;
            comando = ObjConexion.CreateCommand();
            //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
                elementoLista.dato1 = "El puesto no posee competencias para ser evaluado";
                listaCaracteristicas.Add(elementoLista);
                terminarConexion();
                return listaCaracteristicas;
            }

            while (reader.Read())
            {
                //Se recuperan los ID's de las competencias y los números correspondientes a las ponderaciones
                string idCompetencia = reader["Competencia_codigo"].ToString();
                int ponderacion = Int32.Parse(reader["ponderacion"].ToString());

                //Los datos obtenidos se almacena en un elemento de la lista
                elementoLista.dato1 = idCompetencia;
                elementoLista.dato2 = ponderacion;
                listaRetornoBD.Add(elementoLista);//Agregamos el elemento a la lista
            }
            //Termanamos la conexion con la base de datos para evitar futuros conflictos con otras consultas
            terminarConexion();

            for (int i = 0; i < listaRetornoBD.Count; i++)
            {
                competenciaEsEvaluable = false;
                //Realizamos la busqueda de las competencias evaluadas por su ID (QUE ES UNICO)
                Competencia competenciaAs = recuperarCompetencias((string)listaRetornoBD[i].dato1);
                if (competenciaAs != null)
                {
                    if (competenciaAs.ListaFactores != null)
                    {
                        for (int j = 0; j < competenciaAs.ListaFactores.Count; j++)
                        {
                            if (competenciaAs.ListaFactores[j].Codigo == "INSUFICIENTES PREG")
                            {
                                competenciaAs.ListaFactores.Remove(competenciaAs.ListaFactores[j]);
                                j--;
                            }
                            else
                                competenciaEsEvaluable = true;
                        }

                        if (!competenciaEsEvaluable)
                            errorCompetenciaNoEvaluable += "\n" + competenciaAs.Nombre;
                        else
                        {
                            //Si hubo algun retorno, instanciamos un objeto del tipo ponderacion
                            Ponderacion pondeAs = new Ponderacion((int)listaRetornoBD[i].dato2);
                            //Agregamos la competencia y la poneración a un elemento de la lista
                            elementoLista.dato1 = competenciaAs;
                            elementoLista.dato2 = pondeAs;
                            listaCaracteristicas.Add(elementoLista);//Agregamos el elemento a la lista de caracteristicas del puesto evaluado
                        }
                    }
                    else
                        errorCompetenciaNoEvaluable += "\n" + competenciaAs.Nombre;
                }
            }

            if (!(errorCompetenciaNoEvaluable == ""))
            {
                MessageBox.Show("La(s) Competencia(s) " + errorCompetenciaNoEvaluable + "\nno pueden ser evaluada(s)", "INFORMACION", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
            else
                return listaCaracteristicas;
        }
 private Negocio()
 {
     this.clientes = new Queue <Cliente>();
     this.caja     = Puesto.caja1;
 }
 public PuestoAtencion(Puesto puestos)
 {
     this.puesto = puestos;
 }
 /*
  * - 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 Puesto instanciarPuesto(string codigo, string nombre, string empresa, string descripcion = null)
 {
     Puesto nuevoPuesto = new Puesto(codigo, nombre, empresa, descripcion);
     return nuevoPuesto;
 }
 private void inicializarCaracteristicas(Puesto puesto, List<Caracteristica> listaCaract)
 {
     for(int i = 0; i < listaCaract.LongCount(); i++)
     {
         Ponderacion pond = new Ponderacion((int)listaCaract[i].dato2);
         puesto.addListaCaracteristicas((Competencia)listaCaract[i].dato1, pond);
     }
 }