none
abcde archivo dao para treeview RRS feed

  • Pregunta

  • class ArchivoDAO
        {
            
            public static Archivo obtenerArchivoRaiz()
            {
                Archivo archivoAux = new Archivo();
                SqlConnection con = miBD.obtenerConexion();
                SqlCommand com = new SqlCommand("select * from archivos",con);
                SqlDataReader reader = com.ExecuteReader();

                if (reader.HasRows)
                {
                    reader.Read();
                    archivoAux.Id = reader.GetInt32(0);
                    archivoAux.Nombre = reader.GetString(1);
                    archivoAux.Archivos = obtenerHijos(archivoAux.Id);
                }
                return archivoAux;
            }


            public static List<Archivo> obtenerHijos(int id)
            {
                List<Archivo> archivos = new List<Archivo>();
                

                SqlConnection con = miBD.obtenerConexion();
                SqlCommand coman = new SqlCommand("select * from archivos where id_archivo = '"+id+"'",con);
                SqlDataReader reader = coman.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Archivo aux = new Archivo();
                        aux.Id = reader.GetInt32(0);
                        aux.Nombre = reader.GetString(1);
                        aux.Archivos = obtenerHijos(aux.Id);
                        archivos.Add(aux);
                        
                    }
                }
                return archivos;
            
            }

            public static int Ingresar(string nombre, int idArchivo)
            {
                //int retorno = 0;
                SqlConnection con = miBD.obtenerConexion();
                SqlCommand coman = new SqlCommand(string.Format("Insert into archivos values('"+nombre+"',"+idArchivo+")"),con);
                return coman.ExecuteNonQuery();
            
            }

            public static int Eliminar(Archivo elim)
            {
                int retorno = 0;
                SqlConnection con = miBD.obtenerConexion();
                eliminarHijos(elim.Archivos);
                SqlCommand coman = new SqlCommand(string.Format("delete from archivos where id='" + elim.Id + "'"), con);
                
                retorno = coman.ExecuteNonQuery();
                
                return retorno;
            }

             public static int eliminarHijos(List<Archivo> archivos)
             {
                 int retorno = 0;
                 SqlConnection con = miBD.obtenerConexion();
                foreach (var item in archivos)
                {
                    SqlCommand coman = new SqlCommand(string.Format("delete from archivos where id='" + item.Id + "' "), con);
                    retorno = coman.ExecuteNonQuery();
                    if (item.Archivos.Count()>0)
                    {
                        eliminarHijos(item.Archivos);
                    }
                    
                }
            return retorno;
             }

             public static int Modificar(Archivo mod)
             {
                 int retorno = 0;
                 SqlConnection con = miBD.obtenerConexion();
                 SqlCommand coman = new SqlCommand(string.Format("Update archivos set nombre='"+mod.Nombre+"' where id='"+mod.Id+"'"),con);
                 retorno = coman.ExecuteNonQuery();
                 return retorno;
             
             }

             public static Archivo obtenerCopia(Archivo select)
             {
                 Archivo archivoAux = new Archivo();
                 SqlConnection con = miBD.obtenerConexion();
                 SqlCommand com = new SqlCommand("select * from archivos where id='"+select.Id+"'", con);
                 SqlDataReader reader = com.ExecuteReader();

                 if (reader.HasRows)
                 {
                     reader.Read();
                     archivoAux.Id = reader.GetInt32(0);
                     archivoAux.Nombre = reader.GetString(1);
                     archivoAux.Archivos = obtenerCopiaHijos(archivoAux.Id);
                 }
                 return archivoAux;
             }

             public static List<Archivo> obtenerCopiaHijos(int id)
             {
                 List<Archivo> archivos = new List<Archivo>();


                 SqlConnection con = miBD.obtenerConexion();
                 SqlCommand coman = new SqlCommand("select * from archivos where id_archivo = '" + id + "'", con);
                 SqlDataReader reader = coman.ExecuteReader();

                 if (reader.HasRows)
                 {
                     while (reader.Read())
                     {
                         Archivo aux = new Archivo();
                         aux.Id = reader.GetInt32(0);
                         aux.Nombre = reader.GetString(1);
                         aux.Archivos = obtenerCopiaHijos(aux.Id);
                         archivos.Add(aux);

                     }
                 }
                 return archivos;

             }

             public static int insertarCopia(Archivo copia, Archivo padre)
             {
                 SqlConnection con = miBD.obtenerConexion();
                 SqlCommand coman = new SqlCommand(string.Format("insert into archivos values ('"+copia.Nombre+"','"+padre.Id+"')"),con);
                 

                 foreach (var item in padre.Archivos)
                 {
                     if (item.Nombre==copia.Nombre )
                     {
                         foreach (var itemA in item.Archivos)
                         {
                             insertarHijosCopia(itemA,item);
                         }
                         
                     }
                 }

                 return coman.ExecuteNonQuery();
             
             }

             public static int insertarHijosCopia(Archivo copia, Archivo padre)
             {
                 int retorno = 0;
                 SqlConnection con = miBD.obtenerConexion();
                 foreach (var item in padre.Archivos)
                 {
                     if (item.Nombre == copia.Nombre)
                     {
                         foreach (var itemA in item.Archivos)
                         {
                             SqlCommand coman = new SqlCommand(string.Format("insert into archivos values ('" + item.Nombre + "','" + itemA.Id + "')"), con);
                             retorno = coman.ExecuteNonQuery();
                             if (itemA.Archivos.Count()>0)
                             {
                                 insertarHijosCopia(itemA, item);
                             }
                             
                         }

                     }
                 }                                                                                    
                     return retorno;  
             }




        }
    lunes, 22 de febrero de 2016 3:19