bid-tool/auto-bid-server/src/modules/bids/controllers/client/bids.controller.ts

96 lines
2.6 KiB
TypeScript

import {
Body,
Controller,
Get,
Param,
Post,
Put,
UploadedFile,
UseInterceptors,
} from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { FileInterceptor } from '@nestjs/platform-express';
import { plainToClass } from 'class-transformer';
import { memoryStorage } from 'multer';
import { ClientUpdateBidDto } from '../../dto/bid/client-update-bid.dto';
import { CreateBidDto } from '../../dto/bid/create-bid.dto';
import { UpdateStatusByPriceDto } from '../../dto/bid/update-status-by-price.dto';
import { Bid } from '../../entities/bid.entity';
import { WebBid } from '../../entities/wed-bid.entity';
import { BidsService } from '../../services/bids.service';
import { WebBidsService } from '../../services/web-bids.service';
import { Event } from '../../utils/events';
import AppResponse from '@/response/app-response';
import { ClientUpdateLoginStatusDto } from '../../dto/bid/client-update-login-status.dto';
@Controller('bids')
export class BidsController {
constructor(
private readonly bidsService: BidsService,
private readonly eventEmitter: EventEmitter2,
private readonly webBidService: WebBidsService,
) {}
@Get()
index() {
return this.bidsService.clientIndex();
}
@Post()
create(@Body() data: CreateBidDto) {
return this.bidsService.create(data);
}
@Put(':id')
update(@Param('id') id: Bid['id'], @Body() data: ClientUpdateBidDto) {
return this.bidsService.clientUpdate(id, data);
}
@Post('out-bid/:id')
outBidStatus(@Param('id') id: Bid['id']) {
return this.bidsService.outBid(id);
}
@Post('update-status/:id')
updateStatusByPrice(
@Param('id') id: Bid['id'],
@Body() data: UpdateStatusByPriceDto,
) {
return this.bidsService.updateStatusByPrice(id, data);
}
@Post('update-status-work/:type/:id')
@UseInterceptors(FileInterceptor('image', { storage: memoryStorage() }))
async updateStatusWork(
@Param('id') id: Bid['id'],
@Param('type') type: string,
@UploadedFile() image: Express.Multer.File,
) {
return this.bidsService.updateStatusWork(id, type, image);
}
@Post('update-login-status')
async updateLoginStatus(
@Body() data: ClientUpdateLoginStatusDto
) {
return await this.bidsService.emitLoginStatus(data)
}
@Post('test')
async test(@Body('code') code: string) {
const webBid = await this.webBidService.webBidRepo.findOne({
// where: { id: 4 },
where: { id: 1 },
});
this.eventEmitter.emit(Event.verifyCode(webBid), {
code,
// name: 'LAWSONS',
name: 'LANGTONS',
web_bid: plainToClass(WebBid, webBid),
});
return AppResponse.toResponse({ code });
}
}