2. Membuat Detail, Update Order dan Delete Order
1. Membuat Endpoint Detail order
Service detail order
order.service.ts
async findById(id: number): Promise<ResponseSuccess> {
const result = await this.orderRepository.findOne({
where: {
id: id,
},
relations: [
'created_by',
'konsumen',
'order_detail',
'order_detail.produk',
],
select: {
id: true,
nomor_order: true,
status: true,
total_bayar: true,
tanggal_order: true,
konsumen: {
id: true,
nama_konsumen: true,
},
created_by: {
id: true,
nama: true,
},
order_detail: {
id: true,
jumlah: true,
produk: {
id: true,
nama_produk: true,
harga: true,
},
},
},
});
return this._success('OK', result);
}
Controller detail order
service.controller.ts
@Get('detail/:id')
async detailOrder(@Param('id') id: string) {
return this.orderService.findById(+id);
}
Pengujian Pada Postman
2. Membuat Endpoint update order
Service update order
order.service.ts
async updateOrder(
id: number,
payload: UpdateOrderDto,
): Promise<ResponseSuccess> {
const check = await this.orderRepository.findOne({
where: {
id: id,
},
});
if (!check) {
throw new HttpException('Data tidak ditemukan', HttpStatus.NOT_FOUND);
}
payload.order_detail &&
payload.order_detail.forEach((item) => {
item.created_by = this.req.user.id;
});
const order = await this.orderRepository.save({ ...payload, id: id });
return this._success('OK', order);
}
Controller update order
order.controller.ts
@Put('update/:id')
async updateOrder(
@Param('id') id: number,
@InjectUpdatedBy() payload: UpdateOrderDto,
) {
return this.orderService.updateOrder(+id, payload);
}
Pengujian Pada Postman
payload
{
"id": 29,
"nomor_order": "INV1691115536547",
"tanggal_order": "2023-09-01T00:00:00.000Z",
"status": "bayar",
"total_bayar": 200000,
"created_by": {
"id": 1,
"nama": "ihsan santana w"
},
"konsumen": {
"id": 1,
"nama_konsumen": "Nafisa Amatullah"
},
"order_detail": [
{
"id": 18,
"jumlah": 10,
"produk": {
"id": 1
}
},
{
"id": 19,
"jumlah": 10,
"produk": {
"id": 3
}
},
{
"jumlah": 12,
"produk": {
"id": 4
}
}
]
}
Setelah success silahkan cek di tabel order dan tabel detail_order
tabel order
tabel order_detail
3. Membuat Endpoint Delete Order
Service delete order
order.service.ts
async deleteOrder(id: number): Promise<ResponseSuccess> {
const check = await this.orderRepository.findOne({
where: {
id,
},
});
if (!check)
throw new NotFoundException(`Buku dengan id ${id} tidak ditemukan`);
await this.orderRepository.delete(id);
return this._success('Berhasil menghapus buku');
}
Service update order
order.controller.ts
@Delete('delete/:id')
async deleteOrder(@Param('id') id: number) {
return this.orderService.deleteOrder(+id);
}
Pengujian Pada Postman
tabel order
tabel order_detail
Karena kita sudah menerapkan CASCADE
, ketika order di hapus maka semua data yang berelasi akan ikut terhapus