Exemplo n.º 1
0
        /// <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);
        }