public bool Add(Usuario pT) { if (pT == null || !pT.Validar()) { return(false); } Conexion connexion = new Conexion(); SqlConnection cn = connexion.CrearConexion(); SqlCommand cmd = new SqlCommand("INSERT INTO Usuario VALUES (@CI,@Pass,@Rol,@Nombre,@Apellido,@FechaDeNacimiento,@Email,@Celular)", cn); cmd.Parameters.Add(new SqlParameter("@CI", pT.CI)); cmd.Parameters.Add(new SqlParameter("@Pass", pT.Pass)); if (pT.Rol == Usuario.E_Rol.Admin) { cmd.Parameters.Add(new SqlParameter("@Rol", 'A')); } // TODO verificar que no hallan maneras mas seguras de implementar esta bifurcacion else if (pT.Rol == Usuario.E_Rol.Solicitante) { cmd.Parameters.Add(new SqlParameter("@Rol", 'S')); } cmd.Parameters.Add(new SqlParameter("@Nombre", pT.Nombre)); cmd.Parameters.Add(new SqlParameter("@Apellido", pT.Apellido)); string fechaParaDB = pT.FechaDeNacimiento.ToString("yyyyMMdd"); cmd.Parameters.Add(new SqlParameter("@FechaDeNacimiento", fechaParaDB)); cmd.Parameters.Add(new SqlParameter("@Email", pT.Email)); cmd.Parameters.Add(new SqlParameter("@Celular", pT.Celular)); try { if (connexion.AbrirConexion(cn)) { cmd.ExecuteNonQuery(); return(true); } return(false); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } finally { connexion.CerrarConexion(cn); } }
public bool Update(Proyecto unProyecto, string comentarios, string ciAdmin) { //Tendría todo el código de ADO.NET para hacer el INSERT a través de comandos. if (unProyecto == null || !unProyecto.Validar()) { return(false); } string estado = "Aprobado"; if (unProyecto.puntaje < 6) { estado = "Rechazado"; } int id = unProyecto.id; Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand("UPDATE Proyectos SET Estado=@Estado, Puntaje=@Puntaje where Id=@id ;" + "INSERT INTO CambioEstado VALUES (@Id,@Cedula,@Comentarios,@Fecha);", cn); cmd.Parameters.Add(new SqlParameter("@Estado", estado)); cmd.Parameters.Add(new SqlParameter("@Puntaje", unProyecto.puntaje)); cmd.Parameters.Add(new SqlParameter("@id", id)); cmd.Parameters.Add(new SqlParameter("@Cedula", ciAdmin)); cmd.Parameters.Add(new SqlParameter("@Comentarios", comentarios)); cmd.Parameters.Add(new SqlParameter("@Fecha", DateTime.Now)); try { if (unaCon.AbrirConexion(cn)) { cmd.ExecuteNonQuery(); return(true); } return(false); } catch (Exception ex) { return(false); } finally { unaCon.CerrarConexion(cn); } }
public bool findPendiente(string cedula) { Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand(@"SELECT P.* FROM Proyectos P WHERE P.Estado='PENDIENTE' AND P.Cedula=@Cedula;", cn); cmd.Parameters.AddWithValue("@Cedula", cedula); try { if (unaCon.AbrirConexion(cn)) { SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { return(true); } return(false); } return(false); } catch (SqlException ex) { return(false); } catch (Exception ex) { return(false); } finally { unaCon.CerrarConexion(cn); } }
public int getTasaByCuota(int cuota) { Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); int tasa = 0; try { if (cuota > 0) { tasa = getTasaByCuota(cuota); } return(tasa); } catch (Exception ex) { return(0); } finally { unaCon.CerrarConexion(cn); } }
public IEnumerable <Proyecto> ProyectosPorUsuario(string cedula) { Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand(@"SELECT P.Id,P.Cedula,P.Titulo,P.Descripcion,P.Monto,P.Cuotas, P.NombreImagen,P.Estado,P.FechaPresentacion,P.Puntaje,P.TasaInteres,P.Tipo,PE.Experiencia,C.CantIntegrantes FROM Proyectos P LEFT JOIN Personales PE ON P.Id = PE.Id LEFT JOIN Cooperativos C ON P.Id = C.Id WHERE P.Cedula=@cedula;", cn); cmd.Parameters.AddWithValue("@cedula", cedula); // JOIN LEFT mágico para poder traer la tabla completa try { if (unaCon.AbrirConexion(cn)) { SqlDataReader dr = cmd.ExecuteReader(); List <Proyecto> listaProyectos = new List <Proyecto>(); while (dr.Read()) { RepositorioProyectos repoProyectos = new RepositorioProyectos(); if (dr["Tipo"].ToString() == "PERSONAL") { listaProyectos.Add(new Personal { id = (int)dr["Id"], //cedula titulo = (string)dr["Titulo"], descripcion = (string)dr["Descripcion"], monto = (decimal)dr["Monto"], cuotas = (int)dr["Cuotas"], rutaImagen = (string)dr["NombreImagen"], estado = (string)dr["Estado"], fechaPresentacion = (DateTime)dr["FechaPresentacion"], puntaje = (int)dr["Puntaje"], tasaInteres = (decimal)dr["TasaInteres"], experiencia = (string)dr["Experiencia"] }); } else if (dr["Tipo"].ToString() == "COOPERATIVO") { listaProyectos.Add(new Cooperativo { id = (int)dr["Id"], //cedula titulo = (string)dr["Titulo"], descripcion = (string)dr["Descripcion"], monto = (decimal)dr["Monto"], cuotas = (int)dr["Cuotas"], rutaImagen = (string)dr["NombreImagen"], estado = (string)dr["Estado"], fechaPresentacion = (DateTime)dr["FechaPresentacion"], puntaje = (int)dr["Puntaje"], tasaInteres = (decimal)dr["TasaInteres"], cantIntegrantes = (int)dr["CantIntegrantes"], }); } } return(listaProyectos); } return(null); } catch (SqlException ex) { return(null); } catch (Exception ex) { return(null); } finally { unaCon.CerrarConexion(cn); } }
public bool Add(Proyecto unProyecto) { //Tendría todo el código de ADO.NET para hacer el INSERT a través de comandos. if (unProyecto == null || !unProyecto.Validar()) { return(false); } Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand("INSERT INTO Proyectos VALUES (@Cedula,@Titulo,@Descripcion,@Monto,@Cuotas,@NombreImagen,@Estado,@FechaPresentacion,@Puntaje,@TasaInteres,@Tipo);SELECT CAST(SCOPE_IDENTITY() AS INT)", cn); cmd.Parameters.Add(new SqlParameter("@Cedula", unProyecto.solicitante.cedula)); cmd.Parameters.Add(new SqlParameter("@Titulo", unProyecto.titulo)); cmd.Parameters.Add(new SqlParameter("@Descripcion", unProyecto.descripcion)); cmd.Parameters.Add(new SqlParameter("@Monto", unProyecto.monto)); cmd.Parameters.Add(new SqlParameter("@Cuotas", unProyecto.cuotas)); cmd.Parameters.Add(new SqlParameter("@NombreImagen", unProyecto.rutaImagen)); cmd.Parameters.Add(new SqlParameter("@Estado", unProyecto.estado)); cmd.Parameters.Add(new SqlParameter("@fechaPresentacion", unProyecto.fechaPresentacion)); cmd.Parameters.Add(new SqlParameter("@Puntaje", unProyecto.puntaje)); cmd.Parameters.Add(new SqlParameter("@TasaInteres", unProyecto.tasaInteres)); cmd.Parameters.Add(new SqlParameter("@Tipo", unProyecto.GetType().Name.ToUpper())); SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = cn; SqlTransaction trn = null; try { if (unaCon.AbrirConexion(cn)) { //Inicia la transacción trn = cn.BeginTransaction(); //Asignarle la transacción a cada uno de los comandos //que querés que sean transaccionales: cmd.Transaction = trn; // cmd.ExecuteNonQuery(); int idAsignado = (int)cmd.ExecuteScalar(); if (unProyecto is Personal) { Personal per = (Personal)unProyecto; cmd2.CommandText = "INSERT INTO Personales VALUES (@Id,@Experiencia)"; cmd2.Parameters.Add(new SqlParameter("@Id", idAsignado)); cmd2.Parameters.Add(new SqlParameter("@Experiencia", per.experiencia)); } else if (unProyecto is Cooperativo) { Cooperativo coo = (Cooperativo)unProyecto; cmd2.CommandText = "INSERT INTO Cooperativos VALUES (@Id,@cantIntegrantes)"; cmd2.Parameters.Add(new SqlParameter("@Id", idAsignado)); cmd2.Parameters.Add(new SqlParameter("@cantIntegrantes", coo.cantIntegrantes)); } else { return(false); } //Asignarle la transacción al segundo comando cmd2.Transaction = trn; cmd2.ExecuteNonQuery(); //Si llegué ácá se pudieron ejecutar todas las operaciones //xq sino hubiera saltado x el catch, así que hacemos el commit: trn.Commit(); return(true); } return(false); } catch (Exception ex) { trn.Rollback(); return(false); } finally { unaCon.CerrarConexion(cn); } }
public IEnumerable <Proyecto> FindAllConFiltro(Proyecto.S_Filtros pFiltros) { Conexion conexion = new Conexion(); SqlConnection cn = conexion.CrearConexion(); string cmdString = InterpretarFiltros(pFiltros); SqlCommand cmd = new SqlCommand(cmdString, cn); try { if (conexion.AbrirConexion(cn)) { SqlDataReader dr = cmd.ExecuteReader(); List <Proyecto> proyectos = new List <Proyecto>(); while (dr.Read()) { Proyecto.E_Etapa etapa; if (dr["Etapa"].ToString() == "A") { etapa = Proyecto.E_Etapa.Aprobado; } else if (dr["Etapa"].ToString() == "R") { etapa = Proyecto.E_Etapa.Rechazado; } else { etapa = Proyecto.E_Etapa.PendienteEvaluacion; } Proyecto.E_Equipo equipo; if (dr["TipoDeEquipo"].ToString() == "I") { equipo = Proyecto.E_Equipo.Individual; } else { equipo = Proyecto.E_Equipo.Cooperativo; } Proyecto p = new Proyecto() { IdProyecto = (int)dr["IdProyecto"], Etapa = etapa, Equipo = equipo, Titulo = dr["Titulo"].ToString(), Descripcion = dr["Descripcion"].ToString(), ImgURL = dr["ImgURL"].ToString(), CantidadDeIntegrantes = (int)dr["CantidadDeIntegrantes"], ExperienciaIndividual = dr["ExperienciaIndividual"].ToString(), FechaDePresentacion = (DateTime)dr["FechaDePresentacion"], CISolicitante = (int)dr["CISolicitante"] }; proyectos.Add(p); } return(proyectos); } return(null); } catch (Exception ex) { Console.WriteLine(ex.Message); return(null); } finally { conexion.CerrarConexion(cn); } }
public bool Add(Proyecto unP) { //Tendría todo el código de ADO.NET para hacer el INSERT a través de comandos. if (unP == null || Proyecto.Validar(unP) != "ok") { return(false); } Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand("INSERT INTO Proyecto VALUES (@Titulo, @Descripcion, @Monto, @Cuotas, @Tasa, @Fecha )", cn); cmd.Parameters.Add(new SqlParameter("@Titulo", unP.Titulo)); cmd.Parameters.Add(new SqlParameter("@Descripcion", unP.Descripcion)); cmd.Parameters.Add(new SqlParameter("@Monto", unP.MontoSolicitado)); cmd.Parameters.Add(new SqlParameter("@CantidadCuotas", unP.CantidadCuotas)); cmd.Parameters.Add(new SqlParameter("@Tasa", unP.Tasa)); cmd.Parameters.Add(new SqlParameter("@Fecha", unP.Fecha)); SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = cn; SqlTransaction trn = null; try { if (unaCon.AbrirConexion(cn)) { //Inicia la transacción trn = cn.BeginTransaction(); //Asignarle la transacción a cada uno de los comandos //que querés que sean transaccionales: cmd.Transaction = trn; int idAsignado = (int)cmd.ExecuteScalar(); if (unP is Personal) { Personal p = (Personal)unP; cmd2.CommandText = "INSERT INTO ProductoImportado VALUES (@Explicacion)"; cmd2.Parameters.Add(new SqlParameter("@Explicacion", p.Explicacion)); } else if (unP is Cooperativo) { Cooperativo c = (Cooperativo)unP; cmd2.CommandText = "INSERT INTO ProductoNacional VALUES (@Integrantes)"; cmd2.Parameters.Add(new SqlParameter("@Integrantes", c.Integrantes)); } else { return(false); } cmd2.Transaction = trn; cmd2.ExecuteNonQuery(); trn.Commit(); return(true); } return(false); } catch (Exception ex) { trn.Rollback(); return(false); } finally { unaCon.CerrarConexion(cn); } }
public IEnumerable <Usuario> FindAll() { Conexion conexion = new Conexion(); SqlConnection cn = conexion.CrearConexion(); SqlCommand cmd = new SqlCommand("SELECT * FROM Usuario", cn); try { if (conexion.AbrirConexion(cn)) { SqlDataReader dr = cmd.ExecuteReader(); List <Usuario> usuarios = new List <Usuario>(); while (dr.Read()) { if (dr["Rol"].ToString() == "S") { Solicitante s = new Solicitante() { CI = (int)dr["CI"], Pass = dr["Pass"].ToString(), Rol = Usuario.E_Rol.Solicitante, Nombre = dr["Nombre"].ToString(), Apellido = dr["Apellido"].ToString(), FechaDeNacimiento = (DateTime)dr["FechaDeNacimiento"], Celular = dr["Celular"].ToString(), Email = dr["Apellido"].ToString(), }; usuarios.Add(s); } if (dr["Rol"].ToString() == "A") { Admin a = new Admin() { CI = (int)dr["CI"], Pass = dr["Pass"].ToString(), Rol = Usuario.E_Rol.Admin, Nombre = dr["Nombre"].ToString(), Apellido = dr["Apellido"].ToString(), FechaDeNacimiento = (DateTime)dr["FechaDeNacimiento"], Celular = dr["Celular"].ToString(), Email = dr["Apellido"].ToString(), }; usuarios.Add(a); } } return(usuarios); } return(null); } catch (Exception ex) { Console.WriteLine(ex.Message); return(null); } finally { conexion.CerrarConexion(cn); } }
public Usuario FindById(object pId) { // TODO Encontrar una manera mas segura de castear int idComoNumero = (int)pId; Conexion conexion = new Conexion(); SqlConnection cn = conexion.CrearConexion(); SqlCommand cmd = new SqlCommand(); cmd.CommandText = "SELECT * FROM Usuario WHERE Usuario.CI =" + idComoNumero.ToString(); cmd.Connection = cn; try { Usuario usuario = null; if (conexion.AbrirConexion(cn)) { // TODO ver de usar CommandBehavior.SingleRow para mejorar performance // https://www.c-sharpcorner.com/blogs/how-to-make-faster-sql-server-search-part-three SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { if (dr["Rol"].ToString() == "S") { Solicitante s = new Solicitante() { CI = (int)dr["CI"], Pass = dr["Pass"].ToString(), Rol = Usuario.E_Rol.Solicitante, Nombre = dr["Nombre"].ToString(), Apellido = dr["Apellido"].ToString(), FechaDeNacimiento = (DateTime)dr["FechaDeNacimiento"], Celular = dr["Celular"].ToString(), Email = dr["Apellido"].ToString(), }; usuario = s; } if (dr["Rol"].ToString() == "A") { Admin a = new Admin() { CI = (int)dr["CI"], Pass = dr["Pass"].ToString(), Rol = Usuario.E_Rol.Admin, Nombre = dr["Nombre"].ToString(), Apellido = dr["Apellido"].ToString(), FechaDeNacimiento = (DateTime)dr["FechaDeNacimiento"], Celular = dr["Celular"].ToString(), Email = dr["Apellido"].ToString(), }; usuario = a; } } } return(usuario); } catch (Exception ex) { Console.WriteLine(ex.Message); return(null); } finally { conexion.CerrarConexion(cn); } }
public bool Add(Usuario unUsuario) { //Tendría todo el código de ADO.NET para hacer el INSERT a través de comandos. if (unUsuario == null || !unUsuario.Validar()) { return(false); } Conexion unaCon = new Conexion(); SqlConnection cn = unaCon.CrearConexion(); SqlCommand cmd = new SqlCommand("INSERT INTO Usuarios VALUES (@Cedula,@Nombre,@Apellido,@FechaNacimento,@Password,@Tipo);", cn); cmd.Parameters.Add(new SqlParameter("@Nombre", unUsuario.nombre)); cmd.Parameters.Add(new SqlParameter("@Apellido", unUsuario.apellido)); cmd.Parameters.Add(new SqlParameter("@Cedula", unUsuario.cedula)); cmd.Parameters.Add(new SqlParameter("@FechaNacimento", unUsuario.fechaNacimiento)); cmd.Parameters.Add(new SqlParameter("@Password", unUsuario.password)); cmd.Parameters.Add(new SqlParameter("@Tipo", unUsuario.GetType().Name.ToUpper())); SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = cn; SqlTransaction trn = null; try { if (unaCon.AbrirConexion(cn)) { //Inicia la transacción cmd.ExecuteNonQuery(); trn = cn.BeginTransaction(); //Asignarle la transacción a cada uno de los comandos //que querés que sean transaccionales: cmd.Transaction = trn; //int idAsignado = (int)cmd.ExecuteScalar(); if (unUsuario is Admin) { } else if (unUsuario is Solicitante) { Solicitante s = (Solicitante)unUsuario; cmd2.CommandText = "INSERT INTO Solicitantes VALUES (@Email,@Celular,@Cedula)"; cmd2.Parameters.Add(new SqlParameter("@Celular", s.celular)); cmd2.Parameters.Add(new SqlParameter("@Email", s.email)); cmd2.Parameters.Add(new SqlParameter("@Cedula", unUsuario.cedula)); } else { return(false); } //Asignarle la transacción al segundo comando cmd2.Transaction = trn; cmd2.ExecuteNonQuery(); //Si llegué ácá se pudieron ejecutar todas las operaciones //xq sino hubiera saltado x el catch, así que hacemos el commit: trn.Commit(); return(true); } return(false); } catch (Exception ex) { trn.Rollback(); return(false); } finally { unaCon.CerrarConexion(cn); } }