Exemplo n.º 1
0
        public async Task <ActionResult <ImportDataPreview> > GetImportPreview([FromBody] ImportDataPreviewRequest request)
        {
            if (request.FilePath.IsNullOrEmpty())
            {
                return(BadRequest($"{nameof(request.FilePath)} can not be null"));
            }

            var blobInfo = await _blobStorageProvider.GetBlobInfoAsync(request.FilePath);

            if (blobInfo == null)
            {
                return(BadRequest("Blob with the such url does not exist."));
            }

            using var csvDataSource = _csvPagedPriceDataSourceFactory.Create(request.FilePath, 10);

            var result = new ImportDataPreview
            {
                TotalCount = csvDataSource.GetTotalCount()
            };

            await csvDataSource.FetchAsync();

            result.Results = csvDataSource.Items;

            return(Ok(result));
        }
        public async Task <ActionResult <ImportDataPreview> > GetImportPreview([FromBody] ImportDataPreviewRequest request)
        {
            if (request.FilePath.IsNullOrEmpty())
            {
                return(BadRequest($"{nameof(request.FilePath)} can not be null"));
            }

            var blobInfo = await _blobStorageProvider.GetBlobInfoAsync(request.FilePath);

            if (blobInfo == null)
            {
                return(BadRequest("Blob with the such url does not exist."));
            }

            var result = new ImportDataPreview();

            switch (request.DataType)
            {
            case nameof(Contact):
                using (var csvDataSource = await _customerImportPagedDataSourceFactory.CreateAsync <ImportableContact, Contact>(request.FilePath,
                                                                                                                                10, null))
                {
                    result.TotalCount = csvDataSource.GetTotalCount();
                    await csvDataSource.FetchAsync();

                    result.Results = csvDataSource.Items.Select(item => item.Record).ToArray();
                }
                break;

            case nameof(Organization):
                using (var csvDataSource = await _customerImportPagedDataSourceFactory.CreateAsync <ImportableOrganization, Organization>(request.FilePath,
                                                                                                                                          10, null))
                {
                    result.TotalCount = csvDataSource.GetTotalCount();
                    await csvDataSource.FetchAsync();

                    result.Results = csvDataSource.Items.Select(item => item.Record).ToArray();
                }
                break;
            }

            return(Ok(result));
        }