diff --git a/src/helper/csv-parser.ts b/src/helper/csv-parser.ts index 63c08f3..91b2675 100644 --- a/src/helper/csv-parser.ts +++ b/src/helper/csv-parser.ts @@ -7,10 +7,7 @@ export async function parsingFile(dataFile) { const results = []; const file = createReadStream( - path.join( - process.cwd(), - './files/Template Upload Product - Sheet1-a532.csv', - ), + path.join(process.cwd(), `./files/${dataFile}`), ); file diff --git a/src/product/dto/product/upload-product.dto.ts b/src/product/dto/product/upload-product.dto.ts new file mode 100644 index 0000000..c6cceb4 --- /dev/null +++ b/src/product/dto/product/upload-product.dto.ts @@ -0,0 +1,6 @@ +import { IsNotEmpty, IsUUID } from 'class-validator'; + +export class UploadProductDto { + @IsNotEmpty() + fileName: string; +} diff --git a/src/product/product.controller.ts b/src/product/product.controller.ts index de6443e..49b23e9 100644 --- a/src/product/product.controller.ts +++ b/src/product/product.controller.ts @@ -21,6 +21,7 @@ import { CreateSubCategoriesProductDto } from './dto/sub-categories/create-sub-c import { CreateProductDto } from './dto/product/create-product.dto'; import { UpdateProductDto } from './dto/product/update-product.dto'; import { ProductHistoryPriceService } from './history-price/history-price.service'; +import { UploadProductDto } from './dto/product/upload-product.dto'; @Controller({ path: 'product', @@ -69,6 +70,17 @@ export class ProductController { }; } + @Post('upload-product') + async createProductBaseOnCSV(@Body() uploadProductDto: UploadProductDto) { + await this.productService.processUploadCSV(uploadProductDto.fileName); + + return { + data: 'Done', + statusCode: HttpStatus.CREATED, + message: 'success', + }; + } + @Get('all') async findAll( @Query('page') page: number, @@ -92,7 +104,7 @@ export class ProductController { @Get('test') async test(@Request() req) { - const data = await this.productService.processUploadCSV(); + const data = await this.productService.processUploadCSV(''); return { data, diff --git a/src/product/product.service.ts b/src/product/product.service.ts index fc72d7c..cadcdcd 100644 --- a/src/product/product.service.ts +++ b/src/product/product.service.ts @@ -50,8 +50,8 @@ export class ProductService { return this.productRepository.findOneOrFail(result.identifiers[0].id); } - async processUploadCSV() { - const data = await parsingFile(''); + async processUploadCSV(uploadFile: string) { + const data = await parsingFile(uploadFile); data.shift(); await Promise.all( data.map(async (it) => {