Ejemplo n.º 1
0
        public async Task <ProductsImportResult> Handle(CreateProductsImport request)
        {
            // salva planilha no storage

            var fileId        = Guid.NewGuid();
            var fileExtension = Path.GetExtension(request.FileName);
            var fileNewName   = $"{fileId}{fileExtension}";
            var result        = await _fileService.Upload(fileNewName, request.Data);

            // registra importação no banco de dados

            var import = new Import(result.FilePath);

            await _importRepository.Create(import);

            // Envia mensagem para o tópico

            var importCreated = new ImportCreated
            {
                Id                 = import.Id,
                CreatedAt          = import.CreatedAt,
                SpreadsheetFileUrl = import.SpreadsheetFileUrl
            };

            await SendEvent(importCreated);

            return(new ProductsImportResult
            {
                ImportId = import.Id,
                FilePath = result.FilePath
            });
        }
        public async Task <IActionResult> CreateImport(IFormFile spreadsheetFile)
        {
            if (spreadsheetFile is null)
            {
                return(BadRequest("Spreadsheet file is required"));
            }

            using var memoryStream = new MemoryStream();
            await spreadsheetFile.CopyToAsync(memoryStream);

            var request = new CreateProductsImport(spreadsheetFile.FileName, memoryStream.ToArray());
            await memoryStream.DisposeAsync();

            var result = await _productImportHandler.Handle(request);

            return(Ok(result));
        }