/// <summary>
        /// Dado un listado de archivos devuelve un listado de carpetas mas repetidas ordenadas por cantidad
        /// </summary>
        private IList <CarpetasRepetidas> ListarCarpetasConMasRepetidos(IList <Archivo> archivos)
        {
            var carpetas = ArchivoHelper.ObtenerCarpetas(archivos);

            var carpetasRepetidas = new List <CarpetasRepetidas>();

            foreach (var carpeta in carpetas)
            {
                carpetasRepetidas.Add(new CarpetasRepetidas()
                {
                    Ruta = carpeta
                });
            }

            foreach (var archivo in Vista.ArchivosRepetidos)
            {
                foreach (var carpeta in carpetasRepetidas)
                {
                    if (ArchivoHelper.ObtenerRutaArchivo(archivo).Equals(carpeta.Ruta))
                    {
                        carpeta.Cantidad++;
                    }
                }
            }

            return(carpetasRepetidas.OrderByDescending(c => c.Cantidad).ToList());
        }
        private void BtnRecargar_Click(object sender, EventArgs e)
        {
            var archivos          = ArchivoHelper.RecuperarLista(treeViewRepetidos);
            var carpetasRepetidas = ListarCarpetasConMasRepetidos(archivos);

            ActualizarListadoCarpetasRepetidas(carpetasRepetidas);
        }
        public ActionResult GuardaDocumento()
        {
            var helper = new ArchivoHelper();

            try
            {
                var    id       = Convert.ToInt32(System.Web.HttpContext.Current.Request.Form["id"].ToString());
                var    tipo     = Convert.ToInt32(System.Web.HttpContext.Current.Request.Form["tipo"].ToString());
                string sPath    = "";
                string temppath = "~/Documentos/" + id.ToString() + "/";
                sPath = System.Web.Hosting.HostingEnvironment.MapPath(temppath);
                System.Web.HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;

                sPath = System.Web.Hosting.HostingEnvironment.MapPath(temppath);
                System.Web.HttpPostedFile hpf = hfc[0];

                var indicie = hpf.FileName.Split('.').Length - 1;
                var ext     = "." + hpf.FileName.Split('.')[indicie];

                if (!helper.ExtensionValida(ext.Substring(1, ext.Length - 1)))
                {
                    return(Json(new { Resultado = false, Error = "El tipo de archivo no es admitido." }));
                }

                if (!Directory.Exists(sPath))
                {
                    Directory.CreateDirectory(sPath);
                }


                var _nombrearchivo = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ext;


                hpf.SaveAs(sPath + hpf.FileName.Replace(ext, _nombrearchivo));

                DocumentosClienteRepository dac = new DocumentosClienteRepository();
                ExDocumentos doc = new ExDocumentos();
                doc.usuario_creacion     = "admin";
                doc.usuario_modificacion = "admin";
                //doc.ruta_local = sPath + hpf.FileName.Replace(ext, _nombrearchivo);
                doc.ruta_local         = @"\Documentos\" + id.ToString() + "\\" + hpf.FileName.Replace(ext, _nombrearchivo);
                doc.id_precliente      = id;
                doc.id_documento       = tipo;
                doc.fecha_modificacion = DateTime.Now;
                doc.fecha_creacion     = DateTime.Now;
                doc.activo             = true;
                dac.guardaDocumento(doc);
                return(Json(doc.ruta_local));
            }
            catch (Exception ex)
            {
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(Json(new { Resultado = false, Error = ex.Message }));
            }
        }
        /// <summary>
        /// Marca como seleccinados los archivos que coincidan con la ruta
        /// Devuelve la cantidad de registros afectados
        /// </summary>
        private int SeleccionarPorRuta(string ruta)
        {
            int contarAfectados = 0;

            for (int i = 0; i < treeViewRepetidos.Nodes.Count; i++)
            {
                if ((Archivo)treeViewRepetidos.Nodes[i].Tag == null)
                {
                    continue;
                }

                var archivo = (Archivo)treeViewRepetidos.Nodes[i].Tag;

                if (ArchivoHelper.ObtenerRutaArchivo(archivo).Equals(ruta))
                {
                    treeViewRepetidos.Nodes[i].Checked = true;
                    contarAfectados++;
                }
            }

            return(contarAfectados);
        }
        public static void BuscarRedundancia(string ruta)
        {
            Interlocked.Exchange(ref Vista.Procesando, (int)Estado.Habilitado);

            try
            {
                // Obtengo archivos de la ruta
                Vista.Mensaje = "Obteniendo archivos";
                var archivos = ArchivoHelper.ObtenerArchivos(ruta);

                Vista.Mensaje = "Comparando archivos";
                VariablesGlobales.faseActual = Fase.DatosObtenidos;
                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.DatosObtenidos);

                // Comparo todos los archivos de origen contra los de destino
                var repetidos = ArchivoHelper.CompararRedundancia(archivos, archivos);

                Vista.Mensaje = "Comparando archivos";
                VariablesGlobales.faseActual = Fase.DatosComparados;
                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.DatosComparados);

                // Paso los datos a la vista
                Interlocked.Exchange(ref Vista.ArchivosRepetidos, repetidos);

                Vista.Mensaje = "Finalizado";
                VariablesGlobales.faseActual = Fase.Finalizado;
                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.Finalizado);
            }
            catch (Exception ex)
            {
                Vista.ErrorSummary.AppendLine($"- {ex}");
                Interlocked.Increment(ref Vista.Errores);
            }

            Thread.Sleep(200);
            Interlocked.Exchange(ref Vista.Procesando, (int)Estado.Deshabilitado);
        }
        public static void BuscarEntreCarpetas(string ruta1, string ruta2)
        {
            Interlocked.Exchange(ref Vista.Procesando, (int)Estado.Habilitado);

            try
            {
                //Obtengo archivos de la ruta 1
                var archivos1 = ArchivoHelper.ObtenerArchivos(ruta1);
                Vista.Mensaje = "Datos de ruta1 obtenidos";

                //Obtengo archivos de la ruta 2
                var archivos2 = ArchivoHelper.ObtenerArchivos(ruta2);
                Vista.Mensaje = "Datos de ruta2 obtenidos";

                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.DatosObtenidos);

                //Comparo todos los archivos de origen contra los de destino
                var repetidos = ArchivoHelper.CompararRedundancia(archivos1, archivos2);

                Vista.Mensaje = "Datos comparados";
                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.DatosComparados);

                Interlocked.Exchange(ref Vista.ArchivosRepetidos, repetidos);

                Vista.Mensaje = "Finalizado";
                Interlocked.Exchange(ref Vista.FaseActual, (int)Fase.Finalizado);
            }
            catch (Exception ex)
            {
                Vista.ErrorSummary.AppendLine($"- {ex}");
                Interlocked.Increment(ref Vista.Errores);
            }

            Thread.Sleep(200);
            Interlocked.Exchange(ref Vista.Procesando, (int)Estado.Deshabilitado);
        }
Exemple #7
0
 public ArchivoController()
 {
     archivoHelper = new ArchivoHelper(DeleteURL, DeleteType, StorageRoot, UrlBase, tempPath, serverMapPath);
 }