using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Web.SessionState;
using System.Web.Caching;
using System.Net;
using System.Collections.Generic;
using System.Web.Services;
using System.Data.SqlClient;

namespace GestorHtm
{
    public partial class GestorHTM : System.Web.UI.Page
    {
        private List<Telerik.Web.UI.UploadedFileInfo> uploadedFiles = new List<Telerik.Web.UI.UploadedFileInfo>();
        public List<Telerik.Web.UI.UploadedFileInfo> UploadedFiles
        {
            get { return uploadedFiles; }
            set { uploadedFiles = value; }
        }
        public static string Ser, Usr, Ctr;
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                PopulateTreeViewFromDirectory(RadTreeView1.Nodes, Server.MapPath("~/PáginasUSER"), "/PáginasUSER");
            }

        }

        private void PopulateTreeViewFromDirectory(RadTreeNodeCollection nodes,//metodo que carga el radtreeview
                string _path, string rutaplus)
        {
            string[] _directories = Directory.GetDirectories(_path);
            foreach (string _directory in _directories)//por cada fichero creo un nodo y le asigno nombre,imagen y un valor
            {
                RadTreeNode node = new RadTreeNode();
                node.Text = Path.GetFileName(_directory);
                node.ImageUrl = "~/imagens/iconos/folder.gif";
                node.Attributes["Category"] = "Folder";
                node.Value = rutaplus + "/" + Path.GetFileName(_directory);
                nodes.Add(node);
                PopulateTreeViewFromDirectory(node.Nodes, _directory, rutaplus + "/" + Path.GetFileName(_directory));
            }
            string[] _files = Directory.GetFiles(_path);
            foreach (string _file in _files)
            {
                if (IsSupportedFileType(_file))
                {
                    RadTreeNode node = new RadTreeNode();
                    node.Text = Path.GetFileName(_file);//GetFileName(_file);
                    node.ImageUrl = "~/imagens/iconos/html.gif";
                    node.Value = rutaplus + "/" + Path.GetFileName(_file);
                    nodes.Add(node);
                }//fin if IsSupportedFileType 
            }//fin foreach _files

        } //fin PopulateTreeViewFromDirectory


        private bool IsSupportedFileType(string file)// este metodo booleano comprueba si los archivos son de Imagen
        {
            string pat = "(\\.htm|\\.html)$";
            return Regex.IsMatch(file, pat, RegexOptions.IgnoreCase);
        }//fin IsSupportedFileType



        protected string direccionNodo()//metodo auxiliar que se encarga de proporcionar al ruta del nodo selecionado
        {
            if (RadTreeView1.CheckedNodes.Count == 1)
            {
                foreach (RadTreeNode nodo in RadTreeView1.CheckedNodes)
                {

                    return nodo.Value;
                }
            }
            else { TextBox1.Text = TextBox1.Text + "\n" + " Has selecionado mas de un nodo!"; return null; }
            return null;
        }
        protected string NombreNodo()//metodo auxiliar que se encarga de proporcionar el nombre del nodo selecionado
        {
            if (RadTreeView1.CheckedNodes.Count == 1)
            {
                foreach (RadTreeNode nodo in RadTreeView1.CheckedNodes)
                {

                    return nodo.Text;
                }
            }
            else { TextBox1.Text = TextBox1.Text + "\n" + " Has selecionado mas de un nodo!"; return null; }
            return null;
        }
        protected bool Nododirectory()//metodo auxiliar que se encarga de comprobar si el metodo selecionado es un directorio
        {
            if (RadTreeView1.CheckedNodes.Count == 1)
            {
                foreach (RadTreeNode nodo in RadTreeView1.CheckedNodes)
                {
                    if (nodo.Attributes["Category"] == "Folder") { return true; }
                }
            }
            else { TextBox1.Text = TextBox1.Text + "\n" + " Has selecionado mas de un nodo!"; return false; }
            return false;
        }


        protected void Button3_Click(object sender, EventArgs e)// boton que se encargua de borrar documento htm
        {
            Label7.Text = TextBox5.Text;
            if (Label7.Text == "Aqui aparecera la selecionada ruta") { Response.Write("<script language=javascript>alert('Primero selecione un elemento de la lista');</script>"); }
            else if(Label7.Text==""){Response.Write("<script language=javascript>alert('Primero selecione un elemento de la lista');</script>"); }
            else
            {
                if (Label7.Text.IndexOf(".htm") != -1 || Label7.Text.IndexOf(".html") != -1)
                {
                    try
                    {
                        File.Delete(Server.MapPath("~/") + Label7.Text);
                        TextBox1.Text = TextBox1.Text + "\n" + " Se ha borrado correctamente la imagen " + Label7.Text + ".";
                    }
                    catch { TextBox1.Text = TextBox1.Text + "\n" + " No se podido borrar el archivo o no hay ningun Imagen selecionado."; }
                }
                else
                {
                    try
                    {
                        Borradorecursivo(Server.MapPath("~/") + Label7.Text);
                        Directory.Delete(Server.MapPath("~/") + Label7.Text);
                        TextBox1.Text = TextBox1.Text + "\n" + " Se ha borrado correctamente la carpeta " + Label7.Text + ".";
                    }
                    catch { TextBox1.Text = TextBox1.Text + "\n" + " No se podido borrar la carpeta o no hay ninguna carpeta selecionada."; }
                }
                Label7.Text = "Aqui aparecera la selecionada ruta";
                RadTreeView1.Nodes.Clear();
                PopulateTreeViewFromDirectory(RadTreeView1.Nodes, Server.MapPath("~/PáginasUSER"), "/PáginasUSER");
            }
        }

        protected void Borradorecursivo(string ruta)//metodo auxiliar que se encarga de borrar en cascada
        {
            string[] _Files = Directory.GetFiles(ruta);
            foreach (string _file in _Files)
            {
                File.Delete(_file);
            }
            string[] _directories = Directory.GetDirectories(ruta);
            foreach (string _directory in _directories)
            {
                Borradorecursivo(_directory);
                Directory.Delete(_directory);
            }
        }


        protected void RadButton2_Click(object sender, EventArgs e)
        {
            TextBox1.Text = "";
        }
    }

}