Exemple #1
0
        private void processLine(FileContent fileContent, string line)
        {
            string lineId = "";

            if (line.Length > 3)
            {
                lineId = line.Substring(0, 3);
            }
            switch (lineId)
            {
            case "001":
                processSeller(fileContent, line);
                break;

            case "002":
                processCustomer(fileContent, line);
                break;

            case "003":
                processSales(fileContent, line);
                break;

            default:
                LoggerService.WriteLog(string.Format("Identificador de linha inválido, linha ignorada. Linha: {0}", line), LoggerService.LogType.alert);
                break;
            }
        }
Exemple #2
0
        private SalesItem processSalesItem(string itemField)
        {
            try
            {
                string[] itens = itemField.Split(_fileImporterConfiguration.itemSeparator);

                if (itens.Length != 3)
                {
                    LoggerService.WriteLog(string.Format("Formato da linha de item da venda é inválido, linha ignorada. Item: {0}", itemField), LoggerService.LogType.alert);
                    return(null);
                }

                SalesItem saleItem = new SalesItem();
                saleItem.Id       = Convert.ToInt32(itens[0]);
                saleItem.Quantity = Convert.ToInt32(itens[1]);
                saleItem.Price    = Convert.ToDecimal(itens[2], new CultureInfo("en-US"));

                return(saleItem);
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog(string.Format("Não foi possível processar o item da venda. Item: {0}", itemField), LoggerService.LogType.error, ex);
                return(null); //Retorna vendas vazia
            }
        }
Exemple #3
0
        private void importFile(string fullFileName)
        {
            try
            {
                string fileName = Path.GetFileName(fullFileName);
                LoggerService.WriteLog(string.Format("Importando arquivo: {0}", fileName), LoggerService.LogType.info);

                using (StreamReader sr = new StreamReader(fullFileName))
                {
                    string      line        = null;
                    FileContent fileContent = new FileContent();
                    while ((line = sr.ReadLine()) != null)
                    {
                        processLine(fileContent, line);
                    }
                    sr.Close();
                    OutputFileContent outputFileContent = summarizeFile(fileContent);
                    saveReport(outputFileContent, fileName);
                    LoggerService.WriteLog(string.Format("Arquivo {0} processado", fileName), LoggerService.LogType.info);

                    string processedFile = Path.Combine(_fileImporterConfiguration.processedFilesDir, fileName);
                    moveAndReplaceFile(fullFileName, processedFile);
                }
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog("Erro procesando arquivo.", LoggerService.LogType.error, ex);
            }
        }
Exemple #4
0
        /// <summary>
        /// Formato esperado para linha de vendedor
        /// 001ç3245678865434çPauloç40000.99
        /// </summary>
        private void processSeller(FileContent fileContent, string line)
        {
            try
            {
                string[] sellerLine = line.Split(_fileImporterConfiguration.separator);
                if (sellerLine.Length != 4)
                {
                    LoggerService.WriteLog(string.Format("Formato da linha de vendedor é inválido, linha ignorada. Linha: {0}", line), LoggerService.LogType.alert);
                    return;
                }

                Seller seller = new Seller();
                seller.CPF    = sellerLine[1];
                seller.Name   = sellerLine[2];
                seller.Salary = Convert.ToDecimal(sellerLine[3], new CultureInfo("en-US"));

                if (!CPFCNPJValidator.IsCpf(seller.CPF))
                {
                    LoggerService.WriteLog(string.Format("Vendedor {0} contém um CPF inválido. CPF: {1}", seller.Name, seller.CPF), LoggerService.LogType.alert);
                }

                fileContent.Sellers.Add(seller);
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog(string.Format("Formato da linha de vendedor é inválido, Linha ignorada. Linha: {0}", line), LoggerService.LogType.error, ex);
            }
        }
Exemple #5
0
        private void ignoreFile(string fullFileName)
        {
            try
            {
                string fileName = Path.GetFileName(fullFileName);
                LoggerService.WriteLog(string.Format("Ignorando arquivo com extenção inválida. Arquivo: {0}", fileName), LoggerService.LogType.info);

                string ignoredFile = Path.Combine(_fileImporterConfiguration.ignoredFilesDir, fileName);
                moveAndReplaceFile(fullFileName, ignoredFile);
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog("Não foi possível mover arquivo", LoggerService.LogType.error, ex);
            }
        }
Exemple #6
0
        /// <summary>
        /// Formato esperado para linha de vendas
        /// 003ç10ç[1-10-100,2-30-2.50,3-40-3.10]çPedro
        /// </summary>
        private void processSales(FileContent fileContent, string line)
        {
            string[] salesLine = line.Split(_fileImporterConfiguration.separator);
            if (salesLine.Length != 4)
            {
                LoggerService.WriteLog(string.Format("Formato da linha de vendas é inválido, linha ignorada. Linha: {0}", line), LoggerService.LogType.alert);
                return;
            }
            Sales sale = new Sales();

            sale.SaleId       = Convert.ToInt32(salesLine[1]);
            sale.SalesmanName = salesLine[3];

            sale.SalesItens = processSalesItens(salesLine[2]);

            sale.SalesTotalValue = sale.SalesItens.Select(o => o.Price * o.Quantity).Sum();
            fileContent.Sales.Add(sale);
        }
Exemple #7
0
        private void saveReport(OutputFileContent outputFileContent, string fileName)
        {
            try
            {
                string outputFileName = fileName.ToLower().Replace(_fileImporterConfiguration.extentionFile.ToLower(), _fileImporterConfiguration.processedExtentionFile.ToLower());
                string outputString   = Newtonsoft.Json.JsonConvert.SerializeObject(outputFileContent);

                LoggerService.WriteLog(string.Format("Criando relatório {0}", outputFileName), LoggerService.LogType.info);
                using (StreamWriter sw = new StreamWriter(Path.Combine(_fileImporterConfiguration.outputDir, outputFileName)))
                {
                    sw.WriteLine(outputString);
                    sw.Close();
                }
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog("Não foi possível mover arquivo", LoggerService.LogType.error, ex);
            }
        }
Exemple #8
0
 public void ProcessFile(string fullFileName)
 {
     try
     {
         if (Path.GetExtension(fullFileName).ToLower() == _fileImporterConfiguration.extentionFile.ToLower())
         {
             importFile(fullFileName);
             LoggerService.WriteLog("Arquivo importado!", LoggerService.LogType.info);
         }
         else
         {
             ignoreFile(fullFileName);
             LoggerService.WriteLog("Arquivo ignorado!", LoggerService.LogType.info);
         }
     }
     catch (Exception ex)
     {
         LoggerService.WriteLog("Ocorreu um erro durante o processamento.", LoggerService.LogType.error, ex);
     }
 }
Exemple #9
0
        /// <summary>
        /// Formato esperado para linha de cliente
        /// 002ç2345675434544345çJose da SilvaçRural
        /// </summary>
        private void processCustomer(FileContent fileContent, string line)
        {
            string[] customerLine = line.Split(_fileImporterConfiguration.separator);
            if (customerLine.Length != 4)
            {
                LoggerService.WriteLog(string.Format("Formato da linha de cliente é inválido, linha ignorada. Linha: {0}", line), LoggerService.LogType.alert);
                return;
            }
            Customer customer = new Customer();

            customer.CNPJ         = customerLine[1];
            customer.Name         = customerLine[2];
            customer.BusinessArea = customerLine[3];

            if (!CPFCNPJValidator.IsCnpj(customer.CNPJ))
            {
                LoggerService.WriteLog(string.Format("Cliente {0} contém um CNPJ inválido. CNPJ: {1}", customer.Name, customer.CNPJ), LoggerService.LogType.alert);
            }

            fileContent.Customers.Add(customer);
        }
Exemple #10
0
        /// <summary>
        /// Formato esperado para Item da venda
        /// [1-10-100,2-30-2.50,3-40-3.10]
        /// </summary>
        private IEnumerable <SalesItem> processSalesItens(string itensField)
        {
            List <SalesItem> salesItens = new List <SalesItem>();

            try
            {
                string[] itens = itensField.Split(_fileImporterConfiguration.itensInitialMark, _fileImporterConfiguration.itensFinalMark)[1].Split(_fileImporterConfiguration.itensSeparator);
                foreach (string item in itens)
                {
                    SalesItem saleItem = processSalesItem(item);
                    if (saleItem != null)
                    {
                        salesItens.Add(saleItem);
                    }
                }

                return(salesItens);
            }
            catch (Exception ex)
            {
                LoggerService.WriteLog(string.Format("Não foi possível processar a linha de vendas. Itens: {0}", itensField), LoggerService.LogType.error, ex);
                return(salesItens); //Retorna vendas vazia
            }
        }