From 5d94cd72b28993f58f0ae855e6f7c86134f4a357 Mon Sep 17 00:00:00 2001 From: 1tpp Date: Fri, 4 Aug 2023 13:24:33 +0700 Subject: [PATCH] chore: change tickets create response --- src/common/interfaces/member.interface.ts | 12 ++++----- src/projects/dto/buy-project.dto.ts | 7 +---- src/projects/projects.controller.ts | 7 +++-- src/projects/projects.service.ts | 32 ++++++++++------------- src/projects/schemas/project.schema.ts | 5 ++-- src/tickets/tickets.controller.ts | 6 ++--- src/tickets/tickets.service.ts | 31 ++-------------------- 7 files changed, 32 insertions(+), 68 deletions(-) diff --git a/src/common/interfaces/member.interface.ts b/src/common/interfaces/member.interface.ts index a6d3afa..f507a42 100644 --- a/src/common/interfaces/member.interface.ts +++ b/src/common/interfaces/member.interface.ts @@ -1,7 +1,7 @@ -import { User } from "@/users/schemas/user.schema"; +import { User } from '@/users/schemas/user.schema'; export interface Imember { - user: User; - amount: number; - lastbuy: Date; - percentage: number; -} \ No newline at end of file + user: User; + amount: number; + lastbuy: Date; + percentage: number; +} diff --git a/src/projects/dto/buy-project.dto.ts b/src/projects/dto/buy-project.dto.ts index fe7bc45..cfbdbcd 100644 --- a/src/projects/dto/buy-project.dto.ts +++ b/src/projects/dto/buy-project.dto.ts @@ -1,10 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; -import { - IsString, - IsNumber, -} from 'class-validator'; +import { IsString, IsNumber } from 'class-validator'; export class BuyProjectDto { - @ApiProperty({ description: 'project id', example: 'fk3jof83jdo3eiqeir', @@ -12,7 +8,6 @@ export class BuyProjectDto { @IsString() id: string; - @ApiProperty({ description: 'amount', example: 20, diff --git a/src/projects/projects.controller.ts b/src/projects/projects.controller.ts index 0605afa..46a82fe 100644 --- a/src/projects/projects.controller.ts +++ b/src/projects/projects.controller.ts @@ -28,7 +28,10 @@ export class ProjectsController { @UseGuards(JwtGuard, RolesGuard) @Roles(Role.Provider, Role.Admin) async create(@Body() createProjectDto: CreateProjectDto, @GetUser() user) { - const newProject = await this.projectsService.create(createProjectDto, user); + const newProject = await this.projectsService.create( + createProjectDto, + user, + ); return { success: true, message: 'Project created successfully', @@ -39,7 +42,7 @@ export class ProjectsController { @Post() @UseGuards(JwtGuard, RolesGuard) @Roles(Role.Provider, Role.Admin) - async Buy(@GetUser() user,@Body() buyProjectDto: BuyProjectDto) { + async Buy(@GetUser() user, @Body() buyProjectDto: BuyProjectDto) { const newProject = await this.projectsService.buy(buyProjectDto, user); return { success: true, diff --git a/src/projects/projects.service.ts b/src/projects/projects.service.ts index 2b8b6fb..425b835 100644 --- a/src/projects/projects.service.ts +++ b/src/projects/projects.service.ts @@ -4,7 +4,7 @@ import { UpdateProjectDto } from './dto/update-project.dto'; import { Project, ProjectDocument } from './schemas/project.schema'; import { Model } from 'mongoose'; import { BuyProjectDto } from './dto/buy-project.dto'; -import {InjectModel} from "@nestjs/mongoose"; +import { InjectModel } from '@nestjs/mongoose'; import { Imember } from '@/common/interfaces/member.interface'; @Injectable() export class ProjectsService { @@ -23,43 +23,39 @@ export class ProjectsService { return await this.projectModel.find().exec(); } - - async buy(buyProjectDto:BuyProjectDto,user) { + async buy(buyProjectDto: BuyProjectDto, user) { const project = await this.projectModel.findById(buyProjectDto.id).exec(); - + const maximum = project.maximum; if (project.amount + buyProjectDto.amount > project.maximum) { throw new Error('maximum amount exceeded'); - }else{ + } else { const customer = await project.member.find((member) => { return member.user == user._id; }); if (customer) { customer.amount += buyProjectDto.amount; } else { - let to_add:Imember = { + let to_add: Imember = { user: user._id, amount: buyProjectDto.amount, lastbuy: Date.now() as unknown as Date, percentage: 0, - } + }; // project.member.push({ - - // }); - project.amount += buyProjectDto.amount; - project.save(); - } + // }); + project.amount += buyProjectDto.amount; + project.save(); + } - project.member.push(user._id); - await project.save(); - } + project.member.push(user._id); + await project.save(); + } } - async findMember(id: string) { - - } + async findMember(id: string) {} findOne(id: number) { return `This action returns a #${id} project`; diff --git a/src/projects/schemas/project.schema.ts b/src/projects/schemas/project.schema.ts index ee86b61..11f98c5 100644 --- a/src/projects/schemas/project.schema.ts +++ b/src/projects/schemas/project.schema.ts @@ -42,9 +42,8 @@ export class Project extends Document { @Prop({ default: Date.now }) updatedAt: Date; - @Prop({ default:null}) - member : [Imember]; - + @Prop({ default: null }) + member: [Imember]; } export const ProjectSchema = SchemaFactory.createForClass(Project); diff --git a/src/tickets/tickets.controller.ts b/src/tickets/tickets.controller.ts index 17a01b4..f3d05ec 100644 --- a/src/tickets/tickets.controller.ts +++ b/src/tickets/tickets.controller.ts @@ -32,11 +32,10 @@ export class TicketsController { @UseGuards(JwtGuard, RolesGuard) @Roles(Role.Provider, Role.Admin) async create(@Body() createTicketDto: CreateTicketDto, @GetUser() user) { - const newTicket = await this.ticketsService.create(createTicketDto, user); + await this.ticketsService.create(createTicketDto, user); return { success: true, message: 'Ticket created successfully', - data: newTicket, }; } @@ -104,11 +103,10 @@ export class TicketsController { @UseGuards(JwtGuard, RolesGuard) @Roles(Role.Provider, Role.Admin) async remove(@Param('id') id: string) { - const ticketRemoved = await this.ticketsService.remove(id); + await this.ticketsService.remove(id); return { success: true, message: 'Ticket removed successfully', - data: ticketRemoved, }; } } diff --git a/src/tickets/tickets.service.ts b/src/tickets/tickets.service.ts index a05de9b..81364df 100644 --- a/src/tickets/tickets.service.ts +++ b/src/tickets/tickets.service.ts @@ -14,25 +14,10 @@ export class TicketsService { ) {} async create(createTicketDto: CreateTicketDto, user) { - const newTicket = await this.ticketModel.create({ + await this.ticketModel.create({ ...createTicketDto, provider: user._id, }); - - const ticket = await this.ticketModel - .findById(newTicket._id) - .populate( - 'provider', - '-__v -password -createdAt -updatedAt -role -birthDate -firstName -lastName', - ) - .select('-__v') - .exec(); - - return { - ...ticket.toJSON(), - seat_booked: ticket.seat_booked.length, - availableTickets: ticket.seat_limit - ticket.seat_booked.length, - }; } async findAll() { @@ -211,10 +196,6 @@ export class TicketsService { async remove(id: string) { const ticketExists = await this.ticketModel .findById(id) - .populate( - 'provider', - '-__v -password -createdAt -updatedAt -role -birthDate -firstName -lastName', - ) .select('-__v') .exec(); @@ -227,14 +208,6 @@ export class TicketsService { 404, ); } - - const ticketRemoved = await this.ticketModel.findByIdAndDelete(id); - - return { - ...ticketRemoved.toJSON(), - seat_booked: ticketRemoved.seat_booked.length, - availableTickets: - ticketRemoved.seat_limit - ticketRemoved.seat_booked.length, - }; + await this.ticketModel.findByIdAndDelete(id); } }