public void Build(byte[] binaryFile, string idArchivo, string nameFile)
 {
     try
     {
         this.idArchivo       = idArchivo;
         desactualizado       = new WrapperObject <tbl_variable_desactualizada, string, string>();
         variable_prioritaria = new WrapperObject <tbl_variable_prioritaria, string, string>();
         wrapper = new WrapperObject <string, int, tbl_paciente_prioritario>();
         IXLTableRows rows = initFileWorkSheet(binaryFile, nameFile);
         if (rows != null)
         {
             ValidatePriorityPatient(rows);
             SaveData();
             //Task.Factory.StartNew(() => ValidatePriorityPatient(rows));
             //Task.Factory.StartNew(() => SaveData());
             //Task.Factory.StartNew(() => Analsis());
         }
         else
         {
             throw new Exception("El archivo enviado no tiene un formato valido para se analizado. Debe ser CSV, XLS o XLSX");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary>
 /// Recorre las filas del archivo y ejecuta las reglas de cada columna de acuerdo al archivo JSON
 /// </summary>
 private void ValidatePriorityPatient(IXLTableRows rows)
 {
     try
     {
         List <Task> tasks = new List <Task>();
         int         k     = 0;
         foreach (var row in rows)
         {
             var v = insertPriorityPatient(row);
             if (v != null)
             {
                 var  cell = row.Cell(1).Value.ToString();
                 Task t1   = Task.Factory.StartNew(() => RowValidator(row));
                 tasks.Add(t1);
             }
             k++;
         }
         Task.WaitAll(tasks.ToArray());
         var exception = tasks.Exists(m => m.Exception != null || m.Status == TaskStatus.Faulted || m.Status == TaskStatus.Canceled);
         if (exception == true)
         {
             string cause = "";
             tasks.Where(m => m.Exception != null || m.Status == TaskStatus.Faulted || m.Status == TaskStatus.Canceled).ToList().ForEach(m => cause = $"Task ID:\t{m.Id}\tStatus:\t{m.Status}@{cause}");
             throw new Exception(cause);
         }
     }
     catch (Exception ex)
     {
         IOUtilities.WriteExceptionLog(ex, Configuration.GetClassName <PriorityPatient>());
     }
 }
Beispiel #3
0
 /// <summary>
 /// Carga el archivo binario de excel a la libreria para recorrerlo
 /// </summary>
 private void initFileWorkSheet()
 {
     try
     {
         if (nameFile.Contains(".csv") == true)
         {
             IConvertFormat convert      = new ConvertFormat();
             var            workBookCAC  = convert.Convert_CSV_ClosedXML("page1", binaryFile, ',');
             var            worksheetCAC = workBookCAC.Worksheet(1);
             var            range        = worksheetCAC.Range(worksheetCAC.FirstCellUsed(), worksheetCAC.LastCellUsed());
             range.Clear(XLClearOptions.Formats);
             var table = range.AsTable();
             table.DeleteComments();
             rows = table.DataRange.Rows();
         }
         else if (nameFile.Contains(".xls") == true || nameFile.Contains(".xlsx"))
         {
             using (Stream streamFile = new MemoryStream(binaryFile))
             {
                 using (var workBookCAC = new XLWorkbook(streamFile))
                 {
                     var worksheetCAC = workBookCAC.Worksheet(1);
                     var range        = worksheetCAC.Range(worksheetCAC.FirstCellUsed(), worksheetCAC.LastCellUsed());
                     range.Clear(XLClearOptions.Formats);
                     var table = range.AsTable();
                     table.DeleteComments();
                     rows = table.DataRange.Rows();
                 }
             }
         }
     }
     catch (Exception ex)
     {
         IOUtilities.WriteExceptionLog(ex, Configuration.GetClassName <PriorityPatient>());
         throw ex;
     }
 }