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>()); } }
/// <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; } }