internal void desasignarRecurso(EntidadRecursoH rec) { try { string consulta = "UPDATE Usuario SET idProy = null WHERE cedula = '" + rec.Cedula + "';"; SqlDataReader reader = baseDatos.ejecutarConsulta(consulta); reader.Close(); } catch (Exception ex) { throw ex; } }
/** Descripcion: Devuelve los recursos disponibles * * REQ: N/A * * RET: List<EntidadRecursoH> */ public List<EntidadRecursoH> getRecursosDisponibles() { SqlDataReader reader = null; List<EntidadRecursoH> recursos = new List<EntidadRecursoH>(); string consulta = "SELECT cedula, pNombre, pApellido, sApellido, rol from Usuario WHERE not rol = 'Lider' AND not perfil = 'A' AND idProy IS NULL;"; reader = baseDatos.ejecutarConsulta(consulta); try { while (reader.Read()) { int cedula = SafeGetInt32(reader, 0); string nombre = SafeGetString(reader, 1); string pApellido = SafeGetString(reader, 2); string sApellido = SafeGetString(reader, 3); string rol = SafeGetString(reader, 4); EntidadRecursoH rh = new EntidadRecursoH(cedula, nombre, pApellido, sApellido, rol); recursos.Add(rh); } reader.Close(); } catch (SqlException ex) { throw ex; } return recursos; }
internal void asignarRecurso(EntidadRecursoH rec, string p) { int idProy; try { string consulta = "SELECT id from Proyecto WHERE Nombre = '" + p + "'"; SqlDataReader reader = baseDatos.ejecutarConsulta(consulta); reader.Read(); idProy = reader.GetInt32(0); reader.Close(); consulta = "UPDATE Usuario SET idProy = "+idProy.ToString()+" WHERE cedula = '" + rec.Cedula + "';"; reader = baseDatos.ejecutarConsulta(consulta); reader.Close(); } catch (Exception ex) { throw ex; } }
/** * Descripción: Realiza la consulta SQL de modificación de un recurso humano en la base de datos, modifica tablas Usuario y telefonoUsuario * Recibe una entidad recurso humano @rh con la informacón a actualizar * Devuelve un valor entero dependiendo del resultado de la consulta: * 0: Actualización correcta de ambas tablas * -1: Error actualizando en tabla Usuario * -2: Error insertando en tabla telefonoUsuario * 2627: Error de atributo duplicado (cedula o nombre de usuario). */ public int modificaRH(EntidadRecursoH rh) { //se crea la consulta como un string para luego utlizarla en el metodo ejecutaConsulta(string) string consulta = "UPDATE Usuario " + " SET pNombre=@0, pApellido=@1, sApellido=@2, correo=@3, nomUsuario=@4, contrasena=@5, perfil=@6, rol=@7, cedula=@8, fechaModif=@9" + " WHERE idRH=@10;"; Object[] args = new Object[11]; args[0] = rh.Nombre; args[1] = rh.PApellido; args[2] = rh.SApellido; args[3] = rh.Correo; args[4] = rh.NomUsuario; args[5] = rh.Contra; args[6] = rh.Perfil; args[7] = rh.Rol; args[8] = rh.Cedula; args[9] = rh.FechaModif; args[10] = rh.IdRH; int resultado = -1; try { SqlDataReader reader = baseDatos.ejecutarConsulta(consulta, args); if (reader.RecordsAffected > 0) { reader.Close(); //Si se realiza la modificacion correcta del usuario se hace el cambio de los telefonos string borraTel = " DELETE FROM TelefonoUsuario WHERE cedula = " + rh.Cedula + "; "; string insertaTel = ""; //Se revisan los casos para ver cual(es) telefono(s) insertar if (rh.Telefono1 != -1 && rh.Telefono2 == -1) { insertaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono1 + ");"; } else if (rh.Telefono1 == -1 && rh.Telefono2 != -1) { insertaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono2 + ");"; } else if (rh.Telefono2 != -1 && rh.Telefono2 != -1) { insertaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono1 + "), (" + rh.Cedula + ", " + rh.Telefono2 + "); "; } else { insertaTel = " DELETE FROM TelefonoUsuario WHERE cedula = "+rh.Cedula+"; "; } try { //Se borran todos los numeros relacionados a la persona, utlizando su numero de cedula reader = baseDatos.ejecutarConsulta(borraTel); reader.Close(); try { //Se insertan los nuevos numeros reader = baseDatos.ejecutarConsulta(insertaTel); if (reader.RecordsAffected > 0) { //Se devuelve 0 si tanto el usuario como los telefonos se modificaron correctamente resultado = 0; } else { //No se modificaron los teléfonos resultado = 1; } reader.Close(); } catch (SqlException ex) { throw ex; } } catch (SqlException ex) { throw ex; } } //Si no se modificó el usuario correctamente se devuelve -1 else { resultado = -1; } } //En caso de una excepcion SQL se tira para tratarla en la capa superior catch (SqlException ex) { throw ex; } return resultado; }
/** Descripcion: Devuelve los recursos asignados * * REQ: N/A * * RET: List<EntidadRecursoH> */ public List<EntidadRecursoH> getRecursosAsignados(string nomP) { int idP = -1; SqlDataReader reader = null; string consulta = "SELECT id FROM Proyecto WHERE nombre = '" + nomP + "';"; List<EntidadRecursoH> recursos = new List<EntidadRecursoH>(); reader = baseDatos.ejecutarConsulta(consulta); while (reader.Read()) { idP = reader.GetInt32(0); } reader.Close(); consulta = "SELECT cedula, pNombre, pApellido, sApellido, rol from Usuario WHERE not rol = 'Lider' AND not perfil = 'A' And idProy = '" + idP + "';"; reader = baseDatos.ejecutarConsulta(consulta); try { while (reader.Read()) { int cedula = SafeGetInt32(reader, 0); String nombre = SafeGetString(reader, 1); String pApellido = SafeGetString(reader, 2); String sApellido = SafeGetString(reader, 3); String rol = SafeGetString(reader, 4); EntidadRecursoH rh = new EntidadRecursoH(cedula, nombre, pApellido, sApellido, rol); recursos.Add(rh); } reader.Close(); } catch (SqlException ex) { throw ex; } return recursos; }
/** * Requiere: String nomUsuario * Retorna EntidadRecursoH. * Consulta en la BD en la tabla RRHH la fila con el nombre de usuario dado y la devuelve. */ public EntidadRecursoH consultaRH(string nomUsuario) { //Consulta la tupla con el usuario seleccionado string consultaU = "SELECT cedula, pNombre, pApellido, sApellido, correo, nomUsuario, contrasena, perfil, idProy, rol, idrh, fechaModif" + " FROM Usuario u WHERE u.nomUsuario ='" + nomUsuario + "'; "; EntidadRecursoH rh = null; int cedula = -1; string nombre = ""; string pApellido = ""; string sApellido = ""; string correo = ""; string usuario = ""; string contrasena = ""; char perfil = ' '; int idProy = -1; string rol = ""; int telefono1 = -1; int telefono2 = -1; int idrh = -1; DateTime fechaModif = DateTime.Now; try { SqlDataReader reader = baseDatos.ejecutarConsulta(consultaU); try { //Si leyó, llene los campos if (reader.Read()) { cedula = SafeGetInt32(reader, 0); nombre = SafeGetString(reader, 1); pApellido = SafeGetString(reader, 2); sApellido = SafeGetString(reader, 3); correo = SafeGetString(reader, 4); usuario = SafeGetString(reader, 5); contrasena = SafeGetString(reader, 6); perfil = SafeGetString(reader, 7).ElementAt(0); idProy = SafeGetInt32(reader, 8); rol = SafeGetString(reader, 9); idrh = SafeGetInt32(reader, 10); fechaModif = SafeGetDate(reader, 11); } reader.Close(); } catch (SqlException ex) { throw ex; } //Una vez consultada la información, uso la cédula obtenida para traer los números string consultaT = "SELECT numero " + " FROM telefonoUsuario t WHERE t.cedula =" + cedula + "; "; SqlDataReader readerT = baseDatos.ejecutarConsulta(consultaT); try { if (readerT.Read()) { telefono1 = SafeGetInt32(readerT, 0); } if (readerT.Read()) { telefono2 = SafeGetInt32(readerT, 0); } readerT.Close(); } catch (SqlException ex) { throw ex; } //Encapsulo los datos rh = new EntidadRecursoH(cedula, nombre, pApellido, sApellido, correo, usuario, contrasena, perfil, idProy, rol, telefono1, telefono2, idrh, fechaModif); } catch (SqlException ex) { throw ex; } return rh; }
/** * Descripción: Realiza la consulta SQL de inserción de un nuevo recurso humano a la base de datos, inserta en tablas Usuario y telefonoUsuario * Recibe una entidad recurso humano @rh con la informacón a insertar * Devuelve un valor entero dependiendo del resultado de la consulta: * 0: Inserción correcta en ambas tablas * -1: Error insertando en tabla Usuario * -2: Error insertando en tabla telefonoUsuario * 2627: Error de atributo duplicado (cedula o nombre de usuario). */ public int insertaRH(EntidadRecursoH rh) { //Se crea la consulta como un string para luego utlizarla en el metodo ejecutaConsulta(string) string consulta = "INSERT INTO Usuario (cedula, pNombre, pApellido, sApellido, correo, nomUsuario, contrasena, perfil, rol, fechaModif)" + "values (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9);"; Object[] args = new Object[10]; args[0] = rh.Cedula; args[1] = rh.Nombre; args[2] = rh.PApellido; args[3] = rh.SApellido; args[4] = rh.Correo; args[5] = rh.NomUsuario; args[6] = rh.Contra; args[7] = rh.Perfil; args[8] = rh.Rol; args[9] = rh.FechaModif; int resultado = -1; try { SqlDataReader reader = baseDatos.ejecutarConsulta(consulta, args); //Si se hizo bien el insertar de usuario se hace el de telefono, de otro modo no se hace nada y se devuelve -1 if (reader.RecordsAffected > 0) { reader.Close(); string consultaTel = ""; //Si no hay telefonos que insertar se finaliza la insercion a la base if (rh.Telefono1 == -1 && rh.Telefono2 == -1) { resultado = 0; } else { //Se revisan los casos de cuales telefonos hay que insertar //Solo primer telefono válido if (rh.Telefono2 == -1) { consultaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono1 + ");"; }//Solo segundo telefono válido else if (rh.Telefono1 == -1) { consultaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono2 + ");"; }//Los dos telefonos válidos else { consultaTel = " INSERT INTO TelefonoUsuario (cedula, numero) " + " values (" + rh.Cedula + ", " + rh.Telefono1 + "), (" + rh.Cedula + ", " + rh.Telefono2 + "); "; } try {//Se intenta insertar los telefonos a la tabla telefonoUsuario reader = baseDatos.ejecutarConsulta(consultaTel); if (reader.RecordsAffected > 0) { //Si se insertó correctamente se devuelve 0 resultado = 0; } else { //resultado = -2 indica que hubo error al insertar el o los telefonos resultado = -2; } reader.Close(); } catch (SqlException ex) { throw ex; } } } //Si no se insertó nada se devuelve -1 else { resultado = -1; } } catch (SqlException ex) //En caso de una excepcion SQL se tira a la capa superior para ser tratada { throw ex; } return resultado; }
/* Descripcion: Asigna el proyecto al recurso asignado * * REQ: string, EntidadRecursoH * * RET: N/A */ public void asignarProyectoAEmpleado(string nombreProyecto, EntidadRecursoH e) { controladoraBDProyecto.asignarProyectoAEmpleado(e.Cedula.ToString(), nombreProyecto); }
/** * Requiere: int cedula * Retorna EntidadRecursoH. * Consulta en la BD en la tabla RRHH la fila con la llave primaria cedula y la devuelve. */ public EntidadRecursoH consultaRH(int cedula) { //Hace la consulta de todos los campos string consultaU = "SELECT cedula, pNombre, pApellido, sApellido, correo, nomUsuario, contrasena, perfil, idProy, rol, idRH, fechaModif" + " FROM Usuario u WHERE u.cedula =" + cedula + "; "; string consultaT = "SELECT numero " + " FROM telefonoUsuario t WHERE t.cedula =" + cedula + "; "; //Inicialice variables locales EntidadRecursoH rh = null; string nombre = ""; string pApellido = ""; string sApellido = ""; string correo = ""; string usuario = ""; string contrasena = ""; char perfil = ' '; int idProy = -1; string rol = ""; int telefono1 = -1; int telefono2 = -1; int idrh = -1; DateTime fechaModif = DateTime.Now; try { SqlDataReader reader = baseDatos.ejecutarConsulta(consultaU); try { if(reader.Read()) {//Si pudo leer, obtenga los datos de forma segura nombre = SafeGetString(reader, 1); pApellido = SafeGetString(reader, 2); sApellido = SafeGetString(reader, 3); correo = SafeGetString(reader, 4); usuario = SafeGetString(reader, 5); contrasena = SafeGetString(reader, 6); perfil = SafeGetString(reader, 7).ElementAt(0); idProy = SafeGetInt32(reader, 8); rol = SafeGetString(reader, 9); idrh = SafeGetInt32(reader, 10); fechaModif = SafeGetDate(reader, 11); } reader.Close(); } catch (SqlException ex) { throw ex; } //Consultamos los teléfonos SqlDataReader readerT = baseDatos.ejecutarConsulta(consultaT); try { if (readerT.Read()) { telefono1 = SafeGetInt32(readerT, 0); } if (readerT.Read()) { telefono2 = SafeGetInt32(readerT, 0); } readerT.Close(); } catch (SqlException ex) { throw ex; } //Encapsulo los datos rh = new EntidadRecursoH(cedula, nombre, pApellido, sApellido, correo, usuario, contrasena, perfil, idProy, rol, telefono1, telefono2, idrh, fechaModif); } catch (SqlException ex) { throw ex; } return rh; }
internal void asignarRecurso(EntidadRecursoH rec, object p) { try { controladoraBDProyecto.asignarRecurso(rec, (string)p); } catch (SqlException ex) { throw ex; } }
internal void desasignarRecurso(EntidadRecursoH rec) { try { controladoraBDProyecto.desasignarRecurso(rec); } catch (SqlException ex) { throw ex; } }
/** * Descripción: Realiza la consulta SQL de modificación de un recurso humano en la base de datos, modifica tablas Usuario y telefonoUsuario * Recibe una entidad recurso humano @rh con la informacón a actualizar * Devuelve un valor entero dependiendo del resultado de la consulta: * 0: Actualización correcta de ambas tablas * -1: Error actualizando en tabla Usuario * -2: Error insertando en tabla telefonoUsuario * 2627: Error de atributo duplicado (cedula o nombre de usuario). */ public int modificaRH(int cedula, string nombre, string pApellido, string sApellido, string correo, string nomUsuario, string contra, char perfil, int idProy, string rol, int telefono1, int telefono2, int idrh, DateTime fecha) { EntidadRecursoH modRH = new EntidadRecursoH(cedula, nombre, pApellido, sApellido, correo, nomUsuario, contra, perfil, idProy, rol, telefono1, telefono2, idrh, fecha); try { return controlBD.modificaRH(modRH); } catch (SqlException ex) { //throw ex; return ex.Number; } }
/* Descripcion: Despliega los recursos de forma Nombre,Apellido,Apellido y Rol * * REQ: EntidadRecursoH * * RET: String */ protected string getNombreBonito(EntidadRecursoH e) { return e.Nombre + " " + e.PApellido + " " + e.SApellido + " - " + e.Rol; }
/* Descripcion: Encargado de pasar los recursos asignados a recursos disponibles * * REQ: object, EventArgs * * RET: N/A */ protected void btnIzquierda_Click(object sender, EventArgs e) { List<int> l = new List<int>(); int cont = 0; foreach (ListItem item in AsignadosChkBox.Items) { if (item.Selected) { l.Add(cont); } cont++; } l.Reverse(); foreach (var i in l) { EntidadRecursoH ent = new EntidadRecursoH(recursosAsignados[i]); recursosDisponibles.Add(ent); recursosAsignados.RemoveAt(i); } actualizarViewState(); actualizarCheckBoxList(); }
/** * Descripcion: llena los campos de texto y combobox con la informacion de un recurso hummno. * Recibe: Una entidad recurso humano @rec que contiene la información para llenar los campos. * No devuelve nada. */ protected void llenaCampos(EntidadRecursoH rec) { //Se guarda el id del último usuario consultado ViewState["idrh"] = rec.IdRH; //Se llenan los campos int d1ced = rec.Cedula / 100000000; int d2_5ced = rec.Cedula / 10000-(d1ced*10000); string d2_5cedS = (d2_5ced < 1000) ? ((d2_5ced < 100) ? ((d2_5ced < 10) ? ("000" + d2_5ced) : ("00" + d2_5ced)) : ("0" + d2_5ced)) : ("" + d2_5ced); int d6_9ced = rec.Cedula % 10000; string d6_9cedS = (d6_9ced < 1000) ? ((d6_9ced < 100) ? ((d6_9ced < 10) ? ("000" + d6_9ced) : ("00" + d6_9ced)) : ("0" + d6_9ced)) : ("" + d6_9ced); cedula.Value = d1ced + "-" + d2_5cedS + "-" + d6_9cedS; nombre.Value = rec.Nombre; pApellido.Value = rec.PApellido; sApellido.Value = rec.SApellido; correo.Value = rec.Correo; usuario.Value = rec.NomUsuario; contrasena1.Value = rec.Contra; //Si no hay telefono asociado deja los campos en blanco int d1_4tel1 = rec.Telefono1 / 10000; int d5_8tel1 = rec.Telefono1 % 10000; string d1_4tel1S = (d1_4tel1 < 1000) ? ((d1_4tel1 < 100) ? ((d1_4tel1 < 10) ? ("000" + d1_4tel1) : ("00" + d1_4tel1)) : ("0" + d1_4tel1)) : ("" + d1_4tel1); string d5_8tel1S = (d5_8tel1 < 1000) ? ((d5_8tel1 < 100) ? ((d5_8tel1 < 10) ? ("000" + d5_8tel1) : ("00" + d5_8tel1)) : ("0" + d5_8tel1)) : ("" + d5_8tel1); telefono1.Value = (rec.Telefono1 != -1) ? (d1_4tel1S+"-"+ d5_8tel1S) : ""; int d1_4tel2 = rec.Telefono1 / 10000; int d5_8tel2 = rec.Telefono2 % 10000; string d1_4tel2S = (d1_4tel2 < 1000) ? ((d1_4tel2 < 100) ? ((d1_4tel2 < 10) ? ("000" + d1_4tel2) : ("00" + d1_4tel2)) : ("0" + d1_4tel2)) : ("" + d1_4tel2); string d5_8tel2S = (d5_8tel2 < 1000) ? ((d5_8tel2 < 100) ? ((d5_8tel2 < 10) ? ("000" + d5_8tel2) : ("00" + d5_8tel2)) : ("0" + d5_8tel2)) : ("" + d5_8tel2); telefono2.Value = (rec.Telefono2 != -1) ? (d1_4tel2S + "-" + d5_8tel2S) : ""; //Dependiendo del perfil selecciona una opcion del combobox perfil switch (rec.Perfil) { case ' ': //No se seleccionó perfil perfil.SelectedIndex = 0; break; case 'A': perfil.SelectedIndex = 1; break; case 'M': perfil.SelectedIndex = 2; break; default: perfil.SelectedIndex = 0; break; } //Dependiendo del rol selecciona una opcion del combobox rol switch (rec.Rol) { case "": //No se seleccionó rol rol.SelectedIndex = 0; break; case "Lider": rol.SelectedIndex = 1; break; case "Tester": rol.SelectedIndex = 2; break; case "Usuario": rol.SelectedIndex = 3; break; default: rol.SelectedIndex = 0; break; } }
/* * Descripcion: Constructor de copia. * Recibe: La entidad a copiar * Devuelve la entidadRH construida */ public EntidadRecursoH(EntidadRecursoH e) { this.idRH = e.IdRH; this.Cedula = e.cedula; this.Nombre = e.nombre; this.PApellido = e.pApellido; this.SApellido = e.sApellido; this.Correo = e.correo; this.NomUsuario = e.NomUsuario; this.Contra = e.Contra; this.Perfil = e.Perfil; this.IdProy = e.IdProy; this.Rol = e.rol; this.Telefono1 = e.Telefono1; this.Telefono2 = e.Telefono2; this.FechaModif = e.FechaModif; }