Merge branch 'development' into 'devops-staging'

feat: add endpoint get product history price

See merge request empatnusabangsa/ppob/ppob-backend!44
This commit is contained in:
Catur Bagaskara 2021-12-21 14:38:18 +00:00
commit 2c151488a6
2 changed files with 70 additions and 7 deletions

View File

@ -1,7 +1,6 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { EntityNotFoundError, IsNull, Repository } from 'typeorm'; import { EntityNotFoundError, IsNull, Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { ProductCategories } from '../entities/product-category.entity';
import { ProductHistoryPrice } from '../entities/product-history-price.entity'; import { ProductHistoryPrice } from '../entities/product-history-price.entity';
@Injectable() @Injectable()
@ -34,4 +33,49 @@ export class ProductHistoryPriceService {
} }
} }
} }
async findOneByProductId(
page: number,
productId: string,
supplierId: string,
) {
try {
const query = this.productHistoryPriceService
.createQueryBuilder('product_history_price')
.leftJoin('product_history_price.product', 'product')
.where({ product: productId })
.andWhere('product_history_price.endDate IS NULL');
if (supplierId !== 'null' && supplierId) {
query.andWhere('product.supplier = :supplierId', {
supplierId: supplierId,
});
}
const data = await query
.orderBy('product_history_price.createdAt', 'DESC')
.skip(page * 10)
.take(10)
.getMany();
const totalData = await query.getCount();
return {
data,
count: totalData,
};
} catch (e) {
if (e instanceof EntityNotFoundError) {
throw new HttpException(
{
statusCode: HttpStatus.NOT_FOUND,
error: 'Product History Price not found',
},
HttpStatus.NOT_FOUND,
);
} else {
throw e;
}
}
}
} }

View File

@ -1,13 +1,13 @@
import { import {
Controller,
Get,
Post,
Body, Body,
Put, Controller,
Param,
Delete, Delete,
ParseUUIDPipe, Get,
HttpStatus, HttpStatus,
Param,
ParseUUIDPipe,
Post,
Put,
Query, Query,
Request, Request,
} from '@nestjs/common'; } from '@nestjs/common';
@ -179,6 +179,25 @@ export class ProductController {
}; };
} }
@Get('price-history/:id')
async findPriceHistoryByProductId(
@Param('id', ParseUUIDPipe) id: string,
@Query('page') page: number,
@Query('supplier') supplier: string,
) {
const data = await this.productHistoryPriceService.findOneByProductId(
page,
id,
supplier,
);
return {
...data,
statusCode: HttpStatus.OK,
message: 'success',
};
}
@Put(':id') @Put(':id')
async update( async update(
@Param('id', ParseUUIDPipe) id: string, @Param('id', ParseUUIDPipe) id: string,