예제 #1
0
        /**
         *
         *
         */
        private static void saveAndValidate(Fallo fallo, Corte corte)
        {
            //Verificamos el numero de caracteres
            int numeroCaracteresTexto = int.Parse(Settings.Default.NumeroCaracteres);

            if (fallo.numeroCaracteres < numeroCaracteresTexto)
            {
                FirstTestCase.regLog("[Info] El fallo rol: " + fallo.rol + ", emitido por el tribunal " + corte.jurisdiccion + ", No cumple con el mínimo numero de caracteres (" + numeroCaracteresTexto + ").");
                return;
            }
            //Realizamos la verificacion fallo, rol, tribunal
            //Devuelve true si el fallo ya se encuentra registrado en la base de datos
            if (fallo.Existe())
            {
                FirstTestCase.regLog("[Info] El fallo rol: " + fallo.rol + ", emitido por el tribunal " + corte.jurisdiccion + ", Ya se encuentra registrado en la base de datos de acuerdo a su fecha, tribunal y rol.");
                return;
            }

            //Realizamos la verificacion de acuerdo a palabras claves en las partes
            string[] cortesExluir = new string[2] {
                "1", "8"
            };
            if (!fallo.partes.ToLower().Contains("isapre") && cortesExluir.Contains(fallo.tribunal))
            {
                FirstTestCase.regLog("El fallo ROL: " + fallo.rol + ", emitido por el tribunal " + corte.jurisdiccion + ",no contiene las palabras(Isapre) buscadas en sus partes [" + fallo.partes + "]");
                return;
            }


            //Si el fallo no existe lo insertamos en la base
            if (!fallo.Save(log))
            {
                FirstTestCase.regLog("[ERROR] No es posible grabar lo datos del fallo.");
            }
        }
예제 #2
0
        /**
         *
         *
         */
        private static void enviarEmail()
        {
            string          emailBody    = FirstTestCase.getTemplateXML();
            string          rowIndicador = string.Empty;
            IFormatProvider culture      = new CultureInfo("es-ES", true);
            string          fecha        = DateTime.Today.AddDays(-1).ToString("dd/MM/yyyy", culture);

            emailBody = emailBody.Replace("[##Fecha##]", DateTime.Now.ToString("dd.MM.yyyy"));

            Corte    cortesList = new Corte();
            Registro registro   = new Registro();
            Fallo    fallo      = new Fallo();

            emailBody = emailBody.Replace("[##Cola##]", registro.traerDocSinProcesar(fecha).ToString());

            int totalCola       = 0;
            int totalProcesados = 0;
            int totalImportados = 0;


            //las carpetas de cada corte
            int i = 0;

            foreach (Corte c in cortesList.traerTodas())
            {
                int sinprocesar = registro.traerRegSinProcesar(c, fecha);
                totalCola += sinprocesar;

                int procesados = registro.traerProcesados(c, fecha);
                totalProcesados += procesados;

                int importados = fallo.traerImportados(c, fecha);
                totalImportados += importados;

                rowIndicador += FirstTestCase.getRowTemplate(i++, fecha, c.jurisdiccion, c.loesid.ToString(), sinprocesar, procesados, importados);
            }

            rowIndicador += FirstTestCase.getRowTemplate(i++, fecha, "Total", "0", totalCola, totalProcesados, totalImportados);

            emailBody = emailBody.Replace("[##FALLOS##]", rowIndicador);
            FirstTestCase.grabarEmail(emailBody);
        }
예제 #3
0
        /**
         *
         *
         *
         */
        public static void cleanFile(string filePath, ref Fallo fallo)
        {
            string   line;
            string   fileText = string.Empty;
            FileInfo f        = new FileInfo(filePath);
            long     fileSize = f.Length;

            // Read the file and display it line by line.
            System.IO.StreamReader file = new System.IO.StreamReader(filePath, Encoding.Default);
            while ((line = file.ReadLine()) != null)
            {
                string text = FirstTestCase.ReplaceHexadecimalSymbols(line.Trim());

                if (text.Trim() == string.Empty)
                {
                    continue;
                }

                //Elimina codigo de barras
                if (text.Trim().Length == 10)
                { //PPNWKXXEXM
                  //CWEJGYQKZH
                    if (text.ToUpper() != text)
                    {
                        fileText += FirstTestCase.finalPoint(line);
                    }
                }

                if (text.Trim().Length == 18)
                {
                    //HXDCDFSXGVXLGCXGBB
                    if (text.ToUpper() != text)
                    {
                        fileText += FirstTestCase.finalPoint(line);
                    }
                }


                //Elimina numero de pagina
                else if (text.Trim().Length < 4)
                {
                    int    numeroPagina = 0;
                    string texto        = text.Trim();
                    if (!int.TryParse(texto, out numeroPagina))
                    {
                        fileText += FirstTestCase.finalPoint(texto);
                    }
                }
                else
                {
                    text      = FirstTestCase.finalPoint(text);
                    text      = FirstTestCase.doblePoint(text);
                    fileText += FirstTestCase.replaceCorreciones(text);
                }
            }

            /**
             * Procesamos las partes
             */
            string[] stringSeparatorsCon = new string[] { " CON " };
            string[] arrPartes           = fallo.partes.Split(stringSeparatorsCon, StringSplitOptions.None);
            string   parteActiva         = string.Empty;
            string   partePasiva         = string.Empty;

            if (arrPartes.Length == 2)
            { //Existen las partes
                parteActiva = arrPartes[0].Trim();
                partePasiva = arrPartes[1].Trim();
            }
            else
            {
                arrPartes = fallo.partes.Split("/".ToCharArray());
                if (arrPartes.Length == 2)
                { //Existen las partes
                    parteActiva = arrPartes[0].Trim();
                    partePasiva = arrPartes[1].Trim();
                }
                else   //CONTRA
                {
                    string[] stringSeparatorsContra = new string[] { " CONTRA " };
                    arrPartes = fallo.partes.Split(stringSeparatorsContra, StringSplitOptions.None);
                    if (arrPartes.Length == 2)
                    { //Existen las partes
                        parteActiva = arrPartes[0].Trim();
                        partePasiva = arrPartes[1].Trim();
                    }
                }
            }

            fallo.parteActiva      = parteActiva;
            fallo.partePasiva      = partePasiva;
            fallo.texto            = fileText.Trim();
            fallo.numeroCaracteres = fileText.Trim().Length;
            file.Close();
        }
예제 #4
0
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            string pathExcel = Settings.Default.ExcelPath;

            /**
             * Vamos a extraer el estado diario
             *   Rol
             *   Partes
             *   Fecha
             *   Tribunal
             *   Texto Completo
             */

            //Folder donde ejecutar, validar argumentos
            //1.- Download Excels diarios
            //2.- Procesar Excels
            //3.- Procesar Cola
            string command = args[0];

            switch (command)
            {
            //1.- Download Excels diarios
            case "1":
                Corte           corteInfo = new Corte();
                List <Corte>    cortes    = corteInfo.traerTodas();
                IFormatProvider culture   = new CultureInfo("es-ES", true);
                string          fecha     = DateTime.Today.AddDays(-1).ToString("dd/MM/yyyy", culture);

                foreach (Corte corte in cortes)
                {
                    if (corte.tienePlanillaDiaria(fecha))
                    {
                        continue;
                    }

                    Console.WriteLine("===================================================================");
                    Console.Write("Descargando planilla: " + corte.jurisdiccion);

                    string docImportSrc = string.Empty;
                    string excelDocPath = string.Empty;
                    string fileName     = string.Empty;

                    try
                    {
                        //Tratamos de descargar el archivo
                        using (WebClient webClient = new WebClient())
                        {
                            docImportSrc = "https://www.pjud.cl/estado-diario?p_p_id=estadodiario_WAR_estadodiarioportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-3&p_p_col_pos=1&p_p_col_count=2&_estadodiario_WAR_estadodiarioportlet_campoTribunal=" + corte.codtribunalpj + "&_estadodiario_WAR_estadodiarioportlet_cur=1&tipoArchivo=EXCEL&fechaComun=" + fecha + "&campoSecretaria=&codTribunal=" + corte.codtribunalpj;
                            fileName     = corte.jurisdiccion + "-" + fecha.Replace("/", "") + ".xls";
                            excelDocPath = @pathExcel + "\\" + fileName;
                            webClient.DownloadFile(docImportSrc, @excelDocPath);
                        }
                        Console.WriteLine("........Ok");
                    }
                    catch (Exception ex)
                    {
                        FirstTestCase.regLog("[Fatal Error]\r\n" + ex.Message + "\r\n" + ex.StackTrace + "\r\n" + ex.InnerException + "\r\n" + ex.Source);
                        Console.WriteLine("........Fail");
                        //si no logra descargar no registra nada en la db
                        continue;
                    }

                    Console.WriteLine("-Registramos en la base de datos");

                    Planilla planilla = new Planilla();
                    planilla.idtribunal = corte.id;
                    planilla.fecha      = fecha;
                    planilla.ruta       = fileName;
                    if (planilla.Grabar())
                    {
                        Console.WriteLine("Guardado...........................Ok");
                    }
                    else
                    {
                        Console.WriteLine("Guardado.........................Fail");
                    }
                }
                break;

            //2.- Procesar Excels
            case "2":
                Planilla planillaInfo = new Planilla();
                foreach (Planilla planilla in planillaInfo.traerSinProcesar())
                {
                    //Procesamos el excel e insertamos en la tabla registro
                    if (planilla.cargarExcel())
                    {
                        planilla.procesar = 1;
                        planilla.Grabar();
                    }
                }

                break;

            //3.- Procesar Cola
            case "3":
                Registro        registroInfo  = new Registro();
                List <Registro> registrosCola = registroInfo.traerSinProcesar(Settings.Default.DocumentosLote);

                //Limpiamos lod directorios

                //Principal pdf
                FirstTestCase.cleanWorkingDir(Settings.Default.PDFPath);

                Corte cortesList = new Corte();

                //las carpetas de cada corte
                foreach (Corte c in cortesList.traerTodas())
                {
                    FirstTestCase.cleanWorkingDir(@Settings.Default.PathTxt + "\\" + c.loesid.ToString());
                }


                foreach (Registro r in registrosCola)
                {
                    Corte corte = new Corte();
                    corte.id = r.idtribunal;
                    corte.traer();

                    try{
                        string fileName   = string.Empty;
                        string pdfDocPath = string.Empty;

                        //Descargamos el archivo
                        using (WebClient webClient = new WebClient())
                        {
                            //Antes de hacer la descarga verificamos que el documento no este registrado en la base de datos de manera de optimizar el proceso
                            Fallo fallo = new Fallo();
                            fallo.fecha    = r.fecha;
                            fallo.rol      = r.rol;
                            fallo.tribunal = corte.loesid.ToString();

                            if (fallo.Existe())
                            {
                                FirstTestCase.regLog("El fallo ROL: " + r.rol + ", del tribunal " + corte.jurisdiccion + ", y fecha " + fallo.fecha + ", ya se encuentra registrado.");
                                continue;
                            }

                            string falloImportSrc = "https://www.pjud.cl/estado-diario?p_p_id=estadodiario_WAR_estadodiarioportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage&p_p_col_id=column-3&p_p_col_pos=1&p_p_col_count=2&_estadodiario_WAR_estadodiarioportlet_campoTribunal=" + corte.codtribunalpj + "&_estadodiario_WAR_estadodiarioportlet_cur=1&crr_documento=" + r.traerNumerodocumento() + "&tipoModulo=" + corte.modulo + "&fuenteDocumento=" + corte.fuentedocumento;
                            fileName   = r.rol + "-" + r.ndocumento.ToString() + ".pdf";
                            pdfDocPath = @Settings.Default.PDFPath + "\\" + fileName;
                            webClient.DownloadFile(falloImportSrc, pdfDocPath);
                            FirstTestCase.regLog("El fallo ROL: " + r.rol + ", del tribunal " + corte.jurisdiccion + ", ha sido descargado");

                            ConvertFiles(r, corte, fileName);
                            r.procesado = 1;
                            r.Save();
                        }
                    }catch (Exception ex) {
                        FirstTestCase.regLog("El fallo ROL: " + r.rol + ", del tribunal " + corte.jurisdiccion + ", No ha podido ser descargado");
                    }
                }
                break;

            //3.- Procesar Cola
            case "4":
                FirstTestCase.enviarEmail();
                break;
            }
        }
예제 #5
0
        /**
         *
         *
         */
        private static void ConvertFiles(Registro registro, Corte corte, string FileName)
        {
            bool     procesar    = false;
            string   fileNameTxt = string.Empty;
            string   path        = Settings.Default.PDFPath;
            FileInfo file        = new FileInfo(Settings.Default.PDFPath + "\\" + FileName);

            try
            {
                //Intentamos convertirlo en pdf
                FirstTestCase.regLog("Convirtiendo archivo:" + FileName);

                System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                pProcess.StartInfo.FileName               = @Settings.Default.PathToPdfToText;
                pProcess.StartInfo.Arguments              = file.FullName;
                pProcess.StartInfo.UseShellExecute        = false;
                pProcess.StartInfo.RedirectStandardOutput = true;
                pProcess.StartInfo.WindowStyle            = System.Diagnostics.ProcessWindowStyle.Hidden;
                pProcess.StartInfo.CreateNoWindow         = true;       //not diplay a windows
                pProcess.Start();
                Console.WriteLine(pProcess.StandardOutput.ReadToEnd()); //The output result
                pProcess.WaitForExit();

                fileNameTxt = file.FullName.Replace(file.Extension, "") + ".txt";
                procesar    = true;
                FirstTestCase.regLog(FileName + ", Tranformado a PDF");
            }catch (Exception ex) {
                try{
                    //Tratamos de convertirlo en doc
                    FirstTestCase.regLog("Convirtiendo archivo:" + file.Name);

                    System.Diagnostics.Process pProcess = new System.Diagnostics.Process();
                    pProcess.StartInfo.FileName               = @Settings.Default.PathToLibreOffice;
                    pProcess.StartInfo.Arguments              = " --convert-to txt --outdir " + file.FullName;
                    pProcess.StartInfo.UseShellExecute        = false;
                    pProcess.StartInfo.RedirectStandardOutput = true;
                    pProcess.StartInfo.WindowStyle            = System.Diagnostics.ProcessWindowStyle.Hidden;
                    pProcess.StartInfo.CreateNoWindow         = true;       //not diplay a windows
                    pProcess.Start();
                    Console.WriteLine(pProcess.StandardOutput.ReadToEnd()); //The output result
                    pProcess.WaitForExit();

                    fileNameTxt = file.FullName.Replace(file.Extension, "") + ".txt";
                    procesar    = true;
                    FirstTestCase.regLog(FileName + ", Tranformado a DOC");
                }catch (Exception exp) {
                    fileNameTxt = file.FullName.Replace(file.Extension, "") + ".txt";
                    file.CopyTo(fileNameTxt);
                    procesar = true;
                    FirstTestCase.regLog(FileName + ", Tranformado a txt");
                }
            }

            //Guardamos los datos en la base de datos
            if (File.Exists(fileNameTxt) && procesar == true)
            {
                try
                {
                    //creamos el Fallo
                    Fallo fallo = new Fallo();
                    fallo.tribunal = corte.loesid.ToString();
                    fallo.rol      = registro.rol.Trim();
                    fallo.fecha    = registro.fecha.Trim();
                    fallo.partes   = registro.partes.Trim();

                    string fileNameTxtClean = @Settings.Default.PathTxt + "\\" + corte.loesid.ToString() + "\\" + fallo.rol + ".txt";
                    File.Copy(fileNameTxt, fileNameTxtClean, true);
                    FirstTestCase.regLog("Limpiando archivo (" + file.Name + ")" + fileNameTxtClean);
                    FirstTestCase.cleanFile(fileNameTxtClean, ref fallo);
                    FirstTestCase.saveAndValidate(fallo, corte);
                }
                catch (Exception ex)
                {
                    FirstTestCase.regLog(ex.Message + "\r\n" + ex.InnerException);
                    FirstTestCase.regLog("[ERROR] Linea 380, posiblemente copy, delete, clean o save and validate");
                }
            }
            else
            {
                FirstTestCase.regLog("[ERROR] El archivo " + fileNameTxt + ", no existe.");
            }
        }