Beispiel #1
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #9
0
        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);
            }
        }
Beispiel #10
0
        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);
            }
        }
Beispiel #11
0
        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);
            }
        }