add: create product based on csv

This commit is contained in:
ilham 2021-12-23 12:41:41 +07:00
parent ee6bcea111
commit 1d71ddd2e1
4 changed files with 22 additions and 7 deletions

View File

@ -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

View File

@ -0,0 +1,6 @@
import { IsNotEmpty, IsUUID } from 'class-validator';
export class UploadProductDto {
@IsNotEmpty()
fileName: string;
}

View File

@ -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,

View File

@ -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) => {