Skip to content

Commit

Permalink
chore: change tickets create response
Browse files Browse the repository at this point in the history
  • Loading branch information
1tpp committed Aug 4, 2023
1 parent 3860633 commit 5d94cd7
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 68 deletions.
12 changes: 6 additions & 6 deletions src/common/interfaces/member.interface.ts
Original file line number Diff line number Diff line change
@@ -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;
}
user: User;
amount: number;
lastbuy: Date;
percentage: number;
}
7 changes: 1 addition & 6 deletions src/projects/dto/buy-project.dto.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
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',
})
@IsString()
id: string;


@ApiProperty({
description: 'amount',
example: 20,
Expand Down
7 changes: 5 additions & 2 deletions src/projects/projects.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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,
Expand Down
32 changes: 14 additions & 18 deletions src/projects/projects.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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`;
Expand Down
5 changes: 2 additions & 3 deletions src/projects/schemas/project.schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
6 changes: 2 additions & 4 deletions src/tickets/tickets.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};
}

Expand Down Expand Up @@ -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,
};
}
}
31 changes: 2 additions & 29 deletions src/tickets/tickets.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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();

Expand All @@ -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);
}
}

0 comments on commit 5d94cd7

Please sign in to comment.