/// <summary> /// Importa os registros do arquivo de log(.CSV) e insere no banco de dados /// </summary> public Boolean ImportFile(String fileName) { DateTime?fileDate = PrintLogFile.GetDate(fileName); // Informações de trace são enviadas ao listener através de NotifyListener() // O listener grava essas informações em log de arquivo CSVReader reader = new CSVReader(fileName, listener); NotifyListener("Fazendo a leitura do CSV."); DataTable printedDocumentTable = reader.Read(); int rowCount = printedDocumentTable.Rows.Count; // Verifica se existem registros no CSV if (rowCount < 1) { NotifyListener("CSV inválido. Nenhum registro encontrado."); return(false); } // Informa a quantidade de registros no CSV e uma amostra de seu conteúdo NotifyListener("Quantidade de registros no CSV - " + rowCount); String sampleData = printedDocumentTable.Rows[0]["Time"].ToString() + " - " + printedDocumentTable.Rows[0]["Document Name"].ToString(); NotifyListener("Amostra dos dados - " + sampleData); PrintedDocumentDAO printedDocumentDAO = new PrintedDocumentDAO(sqlConnection); CreateDigest(fileDate); PrintedDocument printedDocument; foreach (DataRow row in printedDocumentTable.Rows) { printedDocument = new PrintedDocument(); printedDocument.tenantId = tenantId; printedDocument.jobTime = DateTime.Parse(row["Time"].ToString()); printedDocument.userName = row["User"].ToString(); printedDocument.printerName = row["Printer"].ToString(); printedDocument.name = row["Document Name"].ToString(); printedDocument.pageCount = int.Parse(row["Pages"].ToString()); printedDocument.copyCount = int.Parse(row["Copies"].ToString()); printedDocument.duplex = ConvertToBool(row["Duplex"].ToString()); printedDocument.color = !ConvertToBool(row["Grayscale"].ToString()); printedDocumentDAO.InsertPrintedDocument(printedDocument); AddToDigest(printedDocument, row["Language"].ToString(), row["Size"].ToString()); } return(true); }
public int LogPrintedDocuments(List <PrintedDocument> printedDocuments) { if (printedDocuments == null) { return(0); } if (printedDocuments.Count == 0) { return(0); } StartDBAccess(); int tenantId = printedDocuments[0].tenantId; DateTime startDate = DateTime.Now.Date; DateTime endDate = startDate.Add(new TimeSpan(23, 59, 59)); JobDataDependency jobDataDependency = new JobDataDependency(printedDocuments, dataAccess.GetConnection(), tenantId); jobDataDependency.CreateDataDependency(); PrintedDocumentDAO printedDocumentDAO = new PrintedDocumentDAO(dataAccess.GetConnection()); List <Object> alreadyInserted = printedDocumentDAO.GetPrintedDocuments(tenantId, startDate, endDate, null, null); int rowCount = 0; foreach (PrintedDocument printedDocument in printedDocuments) { currentJob = printedDocument; if (alreadyInserted.Find(CheckPrintedDocument) == null) // Verifica se o registro já existe { // Caso não exista insere no banco printedDocumentDAO.InsertPrintedDocument(printedDocument); rowCount++; } } FinishDBAccess(); return(rowCount); }