feat: add reject QR gate
continuous-integration/drone/tag Build is passing Details

feat/fix-couch-transaction 20.1.56-alpha.2
shancheas 2024-09-03 10:23:02 +07:00
parent 9d98003a2d
commit 665eacd39f
1 changed files with 27 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { Body, Controller, Get, Param, Post, Res } from '@nestjs/common';
import { Response } from 'express';
import { ApiTags } from '@nestjs/swagger'; import { ApiTags } from '@nestjs/swagger';
import { Public } from 'src/core/guards'; import { Public } from 'src/core/guards';
import { GateScanEntity } from '../domain/entity/gate-request.entity'; import { GateScanEntity } from '../domain/entity/gate-request.entity';
@ -21,16 +22,24 @@ const masterGates = [
'4c0e6924-baf5-47fb-a15b-fd1cd0958cc0', '4c0e6924-baf5-47fb-a15b-fd1cd0958cc0',
]; ];
const failedGates = [
'b3c3ae7b-daf5-4340-998b-ee35ed41323d',
'be157609-92b8-4989-920d-a81769bcb05a',
];
const gateResponses = [ const gateResponses = [
{ {
statusCode: 200,
code: 1, code: 1,
message: 'Berhasil Check In', message: 'Berhasil Check In',
}, },
{ {
statusCode: 403,
code: 2, code: 2,
message: 'Gagal melakukan Check In. Karena tiket telah kadaluarsa', message: 'Gagal melakukan Check In. Karena tiket telah kadaluarsa',
}, },
{ {
statusCode: 403,
code: 3, code: 3,
message: 'Gagal melakukan Check In. Tiket tidak tersedia', message: 'Gagal melakukan Check In. Tiket tidak tersedia',
}, },
@ -42,11 +51,25 @@ const gateResponses = [
@Gate() @Gate()
export class GateController { export class GateController {
@Post('scan') @Post('scan')
async scan(@Body() data: GateScanEntity): Promise<GateResponseEntity> { async scan(
if (masterGates.includes(data.uuid)) return gateResponses[0]; @Body() data: GateScanEntity,
@Res({ passthrough: true }) res: Response,
): Promise<GateResponseEntity> {
console.log(data);
if (masterGates.includes(data.uuid)) {
res.status(200);
return gateResponses[0];
}
if (failedGates.includes(data.uuid)) {
res.status(403);
return gateResponses[2];
}
const response = Math.floor(Math.random() * 3); const response = Math.floor(Math.random() * 3);
return gateResponses[response]; const responseValue = gateResponses[response];
res.status(responseValue.statusCode);
return responseValue;
} }
@Get(':id/master') @Get(':id/master')