public IEnumerable <Proyecto> FindAll()
        {
            Conexion      unaCon = new Conexion();
            SqlConnection cn     = new Conexion().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
              FROM Proyectos P;", cn);

            // 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>();
                    RepositorioUsuarios repoUsarios    = new RepositorioUsuarios();
                    while (dr.Read())
                    {
                        listaProyectos.Add(new Proyecto
                        {
                            id = (int)dr["Id"],
                            // solicitante = repoUsarios.FindById((int)dr["Cedula"]), // findby id categoria
                            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"]
                        });
                    }
                    return(listaProyectos);
                }
                return(null);
            }
            catch (SqlException ex)
            {
                return(null);
            }
            catch (Exception ex)
            {
                return(null);
            }

            finally
            {
                unaCon.CerrarConexion(cn);
            }
        }
        public Proyecto FindById(object idProyecto)
        {
            SqlConnection cn     = new Conexion().CrearConexion();
            SqlCommand    cmdCli = 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.Id=@idProyecto;", cn);

            cmdCli.Parameters.AddWithValue("@idProyecto", idProyecto);
            try
            {
                Proyecto u = new Proyecto();
                if (new Conexion().AbrirConexion(cn))
                {
                    SqlDataReader dr = cmdCli.ExecuteReader();

                    if (dr.Read())
                    {
                        if (dr["Tipo"].ToString() == "PERSONAL")
                        {
                            RepositorioUsuarios repoUser = new RepositorioUsuarios();
                            Personal            p        = new Personal();
                            p.id                = (int)dr["Id"];
                            p.solicitante       = (Solicitante)repoUser.FindById(dr["Cedula"]);
                            p.titulo            = (string)dr["Titulo"];
                            p.descripcion       = (string)dr["Descripcion"];
                            p.monto             = (decimal)dr["Monto"];
                            p.cuotas            = (int)dr["Cuotas"];
                            p.rutaImagen        = (string)dr["NombreImagen"];
                            p.estado            = (string)dr["Estado"];
                            p.fechaPresentacion = (DateTime)dr["FechaPresentacion"];
                            p.puntaje           = (int)dr["Puntaje"];
                            p.tasaInteres       = (decimal)dr["TasaInteres"];
                            p.experiencia       = (string)dr["Experiencia"];

                            return(p);
                        }
                        else if (dr["Tipo"].ToString() == "COOPERATIVO")
                        {
                            RepositorioUsuarios repoUser = new RepositorioUsuarios();
                            Cooperativo         c        = new Cooperativo();
                            c.id                = (int)dr["Id"];
                            c.solicitante       = (Solicitante)repoUser.FindById(dr["Cedula"]);
                            c.titulo            = (string)dr["Titulo"];
                            c.descripcion       = (string)dr["Descripcion"];
                            c.monto             = (decimal)dr["Monto"];
                            c.cuotas            = (int)dr["Cuotas"];
                            c.rutaImagen        = (string)dr["NombreImagen"];
                            c.estado            = (string)dr["Estado"];
                            c.fechaPresentacion = (DateTime)dr["FechaPresentacion"];
                            c.puntaje           = (int)dr["Puntaje"];
                            c.tasaInteres       = (decimal)dr["TasaInteres"];
                            c.cantIntegrantes   = (int)dr["CantIntegrantes"];

                            return(c);
                        }
                    }
                }
                return(u);
            }
            catch (SqlException ex)
            {
                return(null);
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                new Conexion().CerrarConexion(cn);
            }
        }