protected async void Page_Load(object sender, EventArgs e)
        {
            _arquivoRepository = ArquivoRepositoryFactory.Create();

            Response.Clear();

            long   idDiretorio = Convert.ToInt64(Request.Params["parentFolderId"]);
            string token       = Request.Params["token"];
            string fileName    = Request.Params["fileName"];
            string mimeType    = Request.Params["mimeType"];

            Arquivo arquivoReferencia = await ArquivoRules.AddAsync(fileName, false, idDiretorio);

            IFileManager fileManager = FileManagerFactory.Create();

            long fileSize = await fileManager.MergeChunksAsync(arquivoReferencia.Url, token);

            arquivoReferencia.Tamanho  = fileSize;
            arquivoReferencia.MimeType = mimeType;

            await _arquivoRepository.UpdateAsync(arquivoReferencia);

            Response.Write(fileSize);
            Response.End();
        }
        private async Task <string> CriarReferenciaArquivoAsync(HttpPostedFile arquivo)
        {
            long idDiretorio = Convert.ToInt64(Request.Params["idDiretorio"]);

            Arquivo novoArquivo = await ArquivoRules.AddAsync(arquivo.FileName, false, idDiretorio);

            novoArquivo.Tamanho  = arquivo.ContentLength;
            novoArquivo.MimeType = arquivo.ContentType;

            await _arquivoRepository.UpdateAsync(novoArquivo);

            return(novoArquivo.Url);
        }
示例#3
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);
            }
        }