/// <summary> /// /// </summary> /// <param name="file"></param> /// <param name="campanhaFaseAtual"></param> /// <returns></returns> //private async Task<bool> ProcessFile(Arquivo file, CampanhaFase campanhaFaseAtual) private async Task <bool> ProcessFile(Arquivo file, Campanha campanhaFaseAtual) { try { var contentsFile = new List <IArquivo>(); switch (file.GetTypeFileEnum()) { case TipoArquivoSeuDesejo.UsuarioStatus: file.DataInicioProcessamento = DateTime.Now; file = await _arquivoRepository.InsertAsync(file); file.QtdeValidos = await _fileUserStatusService.ProcessBulkCopyAsync(file, campanhaFaseAtual); break; case TipoArquivoSeuDesejo.Cadastro: file.DataInicioProcessamento = DateTime.Now; file = await _arquivoRepository.InsertAsync(file); await _fileUserService.ProcessBulkCopyAsync(file, campanhaFaseAtual); break; default: var validFile = await ReadFile(contentsFile, file); if (!validFile) { _logger.LogInformation($"Invalid file. [{file.Nome}]-[{file.NomeProcessado}]"); return(false); } file.DataInicioProcessamento = DateTime.Now; file = await _arquivoRepository.InsertAsync(file); break; } switch (file.GetTypeFileEnum()) { //case TipoArquivoSeuDesejo.Cadastro: // await _fileUserService.ProcessAsync(contentsFile.Cast<UsuarioArquivo>(), file, campanhaFaseAtual); // break; //case TipoArquivoSeuDesejo.UsuarioStatus: // await _fileUserStatusService.ProcessAsync(contentsFile.Cast<UsuarioStatusArquivo>(), file, campanhaFaseAtual); // break; //case TipoArquivoSeuDesejo.Produto: // await _fileProductService.ProcessAsync(contentsFile.Cast<ProdutoArquivo>(), file, campanhaFaseAtual); // break; } file.DataFimProcessamento = DateTime.Now; file.QtdeRejeitados = contentsFile.Count(x => !string.IsNullOrEmpty(x.Erro) && !x.Valido); if (file.QtdeValidos == 0) { file.QtdeValidos = contentsFile.Count(x => x.Valido); } await _arquivoRepository.UpdateAsync(file); _logger.LogInformation($"File: {file.Nome} id: {file.Id} valids: {file.QtdeValidos} - errors: {file.QtdeRejeitados}"); _logger.LogInformation("Finished."); return(true); } catch (Exception ex) { if (file.Id > 0) { _logger.LogError(ex, $"{file.Id} {ex.Message}"); file.Erro = ex.Message; await _arquivoRepository.UpdateAsync(file); } else { _logger.LogError(ex, $"{file.Nome} {ex.Message}"); } _logger.LogInformation("Finished with error."); return(false); } }