Beispiel #1
0
 /// <summary>
 /// Private constructor.
 /// </summary>
 private ProcesoPrincipal()
 {
     // Limpio Vista.
     Vista.AsignacionCantidadProcesados(0);
     Vista.AsignacionCantidadProcesadosError(0);
     Vista.AsignacioncantidadProcesadosOk(0);
 }
Beispiel #2
0
 /// <summary>
 /// Setea el estado de las variables contadoras y los Timers en su "Estado inicial".
 /// </summary>
 public void Initialize(string ruta)
 {
     try
     {
         Vista.StartTimer();
         this.Start(ruta);
     }
     catch (Exception e)
     {
         Logger.Default.Fatal(e, "No es posible comenzar la pila de procesos.");
     }
 }
Beispiel #3
0
 /// <summary>
 /// Indica el final de la rutina de procesos, actualiza la vista, genera un reporte final y detiene el timer indicando el tiempo que demoró el proceso.
 /// </summary>
 private void FinalizeProcessor()
 {
     try
     {
         Vista.EndTimer();
         Task.WaitAll();
         Vista.SetEstaProcesando(false);
     }
     catch (Exception e)
     {
         Logger.Default.Fatal(e, "No es posible finalizar la pila de procesos.");
     }
 }
Beispiel #4
0
        /// <summary>
        /// Método encargado de retornar el porcentaje de tareas completadas y tareas restantes.
        /// </summary>
        /// <returns></returns>
        public static int GetPorcentajeProcesamientoRestante()
        {
            int totalEnviadosProcesar = Vista.GetCantidadProcesados();
            int elementosTrabajados   = (Vista.GetCantidadProcesadosError() + Vista.GetCantidadProcesadosOk());

            if (totalEnviadosProcesar == 0)
            {
                return(0);
            }
            else
            {
                return((elementosTrabajados * 100) / totalEnviadosProcesar);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Abre el archivo de origen, lo recorre realizando un SPLIT validando cada campo y genera una Lista de personas para Procesar.
        /// </summary>
        /// <param name="Path">Ruta del fichero de Origen.</param>
        private void cargarListasPersonas(string path)
        {
            try
            {
                Thread.Sleep(2000);
                if (!File.Exists(path))
                {
                    throw new Exception("El archivo especificado a la hora de generar las listas de las personas no existe.");
                }
                else
                {
                    List <Persona> colaMasculinos = new List <Persona>();
                    List <Persona> colaFemeninos  = new List <Persona>();
                    using (StreamReader reader = new StreamReader(path))
                    {
                        while (!reader.EndOfStream)
                        {
                            string  auxString = reader.ReadLine();
                            Persona auxPerson = new Persona(auxString);
                            switch (auxPerson.Sexo)
                            {
                            case "M":
                                AgregarMasculinoEnCola(ref colaMasculinos, auxPerson);
                                Vista.AdicionCantidadProcesados();
                                break;

                            case "F":
                                AgregarFemeninoEnCola(ref colaFemeninos, auxPerson);
                                Vista.AdicionCantidadProcesados();
                                break;

                            default:
                                Logger.Default.Warn(string.Format("Error a la hora de procesar una persona: No respeta el formato. ({0})", auxPerson.ToString()));
                                Vista.AdicionCantidadProcesadosError();
                                break;
                            }
                        }
                    }
                    this.procesarDuplicados(ref colaMasculinos);
                    this.procesarDuplicados(ref colaFemeninos);
                    this.almacenarListasPersonas(colaFemeninos, colaMasculinos);
                }
            }
            catch (Exception e)
            {
                Logger.Default.Fatal(e, "No es posible finalizar la pila de procesos.");
                throw e;
            }
        }
Beispiel #6
0
 /// <summary>
 /// Método empleado para finalizar de contabilizar el tiempo.
 /// </summary>
 public static void EndTimer()
 {
     try
     {
         if (!timer.IsRunning)
         {
             Exception IsNotRunningException = new Exception("Imposible detener la contabilizacion de tiempo, el timer actualmente se encuentra pausado");
             throw IsNotRunningException;
         }
         else
         {
             timer.Stop(); // Detiene la contabilización de tiempo.
             Vista.SetEstaProcesando(true);
         }
     }
     catch (Exception e)
     {
         Logger.Default.Error(e, "Error: Es imposible comenzar a contabilizar el tiempo.");
     }
 }
Beispiel #7
0
 /// <summary>
 /// Método empleado para comenzar a contabilizar el tiempo.
 /// </summary>
 public static void StartTimer()
 {
     try
     {
         if (timer.IsRunning)
         {
             Exception IsRunningException = new Exception("Imposible comenzar a contabilizar el tiempo, el timer actualmente se esta ejecutando");
             throw IsRunningException;
         }
         else
         {
             timer.Start(); // Comienza a contabilizar.
             Vista.SetEstaProcesando(true);
         }
     }
     catch (Exception e)
     {
         Logger.Default.Error(e, "Error: Es imposible comenzar a contabilizar el tiempo.");
     }
 }
 /// <summary>
 /// Agrega la persona en la DB
 /// </summary>
 /// <param name="Femenino"></param>
 public void AgregarFem(Persona Femenino)
 {
     try
     {
         Femenino.Id = this.ExecuteScalarInt32("qry_Femeninos_ADD",
                                               Femenino.Cuit,
                                               Femenino.Nombre,
                                               Femenino.FechaNacimiento,
                                               "Marcos");
         Vista.AdicionCantidadProcesadosOk();
     }
     catch (SqlException e)
     {
         Vista.AdicionCantidadProcesadosError();
         if (e.ErrorCode == -2146232060)
         {
             Vista.AdicionRechazadosDatabase();
             Logger.Default.Warn(e, "Registro duplicado: El registro se encuentra actualmente en la Base de Datos..");
         }
     }
 }
 /// <summary>
 /// Agrega la persona en la DB
 /// </summary>
 /// <param name="Masculino"></param>
 public void AgregarMasc(Persona Masculino)
 {
     try
     {
         //Masculino.Id = this.ExecuteScalarInt32("qry_Masculinos_ADD_Marcos",
         //Masculino.Cuit,
         //Masculino.Nombre,
         //Masculino.FechaNacimiento,
         //"Marcos");
         Thread.Sleep(500);
         Vista.AdicionCantidadProcesadosOk();
     }
     catch (SqlException e)
     {
         Vista.AdicionCantidadProcesadosError();
         if (e.ErrorCode == -2146232060)
         {
             Logger.Default.Warn(e, "[Registro duplicado] El registro se encuentra actualmente en la Base de Datos..");
         }
     }
 }
Beispiel #10
0
 /// <summary>
 /// Procesa una Lista de personas excluyendo aquellas que poseen CUIT Duplicado.
 /// </summary>
 private void procesarDuplicados(ref List <Persona> listaDuplicados)
 {
     try
     {
         var distinct   = listaDuplicados.GroupBy(x => x.Cuit).Select(g => g.First()).ToList();
         int diferencia = listaDuplicados.Count - distinct.Count;
         // Si existe diferencia.
         if (diferencia > 0)
         {
             listaDuplicados = distinct;
             // La cantidad de registros excluidos por duplicidad pasan a ser Registros con ERROR.
             Vista.AsignacionCantidadProcesadosError(Vista.GetCantidadProcesadosError() + diferencia);
             Vista.AsignacionCantidadRepetidos(Vista.GetCantidadRepetidos() + diferencia);
         }
     }
     catch (Exception e)
     {
         Logger.Default.Fatal(e, "Error a la hora de procesar los registros duplicados.");
         throw e;
     }
 }