コード例 #1
0
        /// <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);
            }
        }