Tạo UI cho người dùng tạo Tour
This commit is contained in:
Vendored
+59
-1
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||
};
|
||||
import 'reflect-metadata';
|
||||
import { NestFactory } from '@nestjs/core';
|
||||
import { Module, Controller, Get, Post, Body, Param, Patch, Delete, ParseUUIDPipe, NotFoundException, BadRequestException, UnauthorizedException, UseGuards } from '@nestjs/common';
|
||||
import { Module, Controller, Get, Post, Body, Param, Patch, Delete, ParseUUIDPipe, NotFoundException, BadRequestException, UnauthorizedException, UseGuards, Req } from '@nestjs/common';
|
||||
import { PrismaService } from './prisma.service.js';
|
||||
import 'dotenv/config';
|
||||
import * as bcrypt from 'bcrypt';
|
||||
@@ -106,6 +106,46 @@ let TourController = class TourController {
|
||||
constructor(prisma) {
|
||||
this.prisma = prisma;
|
||||
}
|
||||
async createTour(body, req) {
|
||||
const { title, startDate, endDate } = body;
|
||||
return this.prisma.tour.create({
|
||||
data: {
|
||||
title,
|
||||
startDate: startDate ? new Date(startDate) : null,
|
||||
endDate: endDate ? new Date(endDate) : null,
|
||||
createdById: req.user.id,
|
||||
participants: {
|
||||
create: {
|
||||
userId: req.user.id,
|
||||
role: 'OWNER'
|
||||
}
|
||||
},
|
||||
legs: {
|
||||
create: {
|
||||
sequence: 1,
|
||||
note: 'Chặng khởi đầu'
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
async addLocation(tourId, body) {
|
||||
const leg = await this.prisma.leg.findFirst({ where: { tourId } });
|
||||
if (!leg)
|
||||
throw new NotFoundException('Không tìm thấy chặng nào trong tour');
|
||||
return this.prisma.location.create({
|
||||
data: {
|
||||
name: body.name,
|
||||
address: body.address,
|
||||
latitude: body.latitude,
|
||||
longitude: body.longitude,
|
||||
type: body.type,
|
||||
legId: leg.id,
|
||||
plannedStart: body.plannedStart ? new Date(body.plannedStart) : null,
|
||||
plannedEnd: body.plannedEnd ? new Date(body.plannedEnd) : null,
|
||||
}
|
||||
});
|
||||
}
|
||||
async getPublicTours() {
|
||||
return this.prisma.tour.findMany({
|
||||
take: 20,
|
||||
@@ -140,6 +180,24 @@ let TourController = class TourController {
|
||||
return tour;
|
||||
}
|
||||
};
|
||||
__decorate([
|
||||
UseGuards(JwtAuthGuard),
|
||||
Post(),
|
||||
__param(0, Body()),
|
||||
__param(1, Req()),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [Object, Object]),
|
||||
__metadata("design:returntype", Promise)
|
||||
], TourController.prototype, "createTour", null);
|
||||
__decorate([
|
||||
UseGuards(JwtAuthGuard),
|
||||
Post(':tourId/locations'),
|
||||
__param(0, Param('tourId', ParseUUIDPipe)),
|
||||
__param(1, Body()),
|
||||
__metadata("design:type", Function),
|
||||
__metadata("design:paramtypes", [String, Object]),
|
||||
__metadata("design:returntype", Promise)
|
||||
], TourController.prototype, "addLocation", null);
|
||||
__decorate([
|
||||
Get('explore'),
|
||||
__metadata("design:type", Function),
|
||||
|
||||
Reference in New Issue
Block a user