From 091d4220db684e1ee764fa881b15289fe632c062 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 14 Dec 2021 19:57:07 +0700 Subject: [PATCH 1/2] feat: add update supplier endpoint --- src/users/dto/update-supplier.dto.ts | 4 ++++ src/users/supplier/supplier.service.ts | 31 +++++++++++++++++++++++++- src/users/users.controller.ts | 13 +++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/users/dto/update-supplier.dto.ts diff --git a/src/users/dto/update-supplier.dto.ts b/src/users/dto/update-supplier.dto.ts new file mode 100644 index 0000000..40a7218 --- /dev/null +++ b/src/users/dto/update-supplier.dto.ts @@ -0,0 +1,4 @@ +import { PartialType } from '@nestjs/mapped-types'; +import { CreateSupplierDto } from './create-supplier.dto'; + +export class UpdateSupplierDto extends PartialType(CreateSupplierDto) {} diff --git a/src/users/supplier/supplier.service.ts b/src/users/supplier/supplier.service.ts index 3bff728..54f1b22 100644 --- a/src/users/supplier/supplier.service.ts +++ b/src/users/supplier/supplier.service.ts @@ -6,13 +6,14 @@ import { Injectable, } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Connection, EntityNotFoundError, Repository } from 'typeorm'; +import { Connection, EntityNotFoundError, Not, Repository } from 'typeorm'; import { Supplier } from '../entities/supplier.entity'; import { InputCoaDto } from '../../transaction/dto/input-coa.dto'; import { balanceType, coaType } from '../../helper/enum-list'; import { CreateSupplierDto } from '../dto/create-supplier.dto'; import { CoaService } from '../../transaction/coa.service'; import * as uuid from 'uuid'; +import { UpdateSupplierDto } from '../dto/update-supplier.dto'; @Injectable() export class SupplierService { @@ -84,6 +85,34 @@ export class SupplierService { return supplierData; } + async update(id: string, updateSupplierDto: UpdateSupplierDto) { + const check = await this.supplierRepository.findOne({ + code: updateSupplierDto.code, + id: Not(id), + }); + + if (check) { + throw new HttpException( + { + statusCode: HttpStatus.NOT_ACCEPTABLE, + error: 'Supplier Already Exist', + }, + HttpStatus.NOT_FOUND, + ); + } + + const supplierData = new Supplier(); + + supplierData.name = updateSupplierDto.name; + supplierData.status = true; + + await this.connection.transaction(async (manager) => { + await manager.update(Supplier, { id: id }, supplierData); + }); + + return supplierData; + } + findAllSupplier(page) { return this.supplierRepository.findAndCount({ skip: page * 10, diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index f078627..ff4b8b7 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -20,6 +20,7 @@ import { SupplierService } from './supplier/supplier.service'; import { PartnerService } from './partner/partner.service'; import { CreatePartnerDto } from './dto/create-partner.dto'; import { UpdatePartnerDto } from './dto/update-partner.dto'; +import { UpdateSupplierDto } from './dto/update-supplier.dto'; @Controller({ path: 'users', @@ -50,6 +51,18 @@ export class UsersController { }; } + @Put('supplier/:id') + async updateSupplier( + @Param('id', ParseUUIDPipe) id: string, + @Body() updatePartnerDto: UpdateSupplierDto, + ) { + return { + data: await this.supplierService.update(id, updatePartnerDto), + statusCode: HttpStatus.CREATED, + message: 'success', + }; + } + @Post('partner') async createPartner( @Request() req, From cab057f68378d2cfdb422b7634f7d073ef23d4a0 Mon Sep 17 00:00:00 2001 From: caturbgs Date: Tue, 14 Dec 2021 20:05:13 +0700 Subject: [PATCH 2/2] feat: add set status supplier endpoint --- src/users/supplier/supplier.service.ts | 16 ++++++++++++++++ src/users/users.controller.ts | 14 +++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/users/supplier/supplier.service.ts b/src/users/supplier/supplier.service.ts index 54f1b22..491b858 100644 --- a/src/users/supplier/supplier.service.ts +++ b/src/users/supplier/supplier.service.ts @@ -113,6 +113,22 @@ export class SupplierService { return supplierData; } + setStatus = async (id: string, type: string) => { + const supplierData = new Supplier(); + + if (type === 'active') { + supplierData.status = true; + } else { + supplierData.status = false; + } + + await this.connection.transaction(async (manager) => { + await manager.update(Supplier, { id: id }, supplierData); + }); + + return supplierData; + }; + findAllSupplier(page) { return this.supplierRepository.findAndCount({ skip: page * 10, diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index ff4b8b7..f8e4e9c 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -51,8 +51,20 @@ export class UsersController { }; } - @Put('supplier/:id') + @Get('supplier/:id/:type') async updateSupplier( + @Param('id', ParseUUIDPipe) id: string, + @Param('type') type: string, + ) { + return { + data: await this.supplierService.setStatus(id, type), + statusCode: HttpStatus.CREATED, + message: 'success', + }; + } + + @Put('supplier/:id') + async setStatusSupplier( @Param('id', ParseUUIDPipe) id: string, @Body() updatePartnerDto: UpdateSupplierDto, ) {