diff --git a/backend/dist/src/main.js b/backend/dist/src/main.js index fc650a1..56edcc4 100644 --- a/backend/dist/src/main.js +++ b/backend/dist/src/main.js @@ -420,6 +420,19 @@ let AuthController = class AuthController { }, }; } + async promoteAdmin(body, req) { + const { secretKey } = body; + const adminSecret = this.configService.get('ADMIN_SECRET_KEY') || 'yotrip_secret_admin_key'; + if (secretKey !== adminSecret) { + throw new common_1.BadRequestException('Mã Secret Key không hợp lệ.'); + } + const updated = await this.prisma.user.update({ + where: { id: req.user.id }, + data: { isAdmin: true }, + select: { id: true, email: true, name: true, isAdmin: true } + }); + return { success: true, user: updated }; + } async createGuestUser() { const user = await this.prisma.user.create({ data: { @@ -601,6 +614,15 @@ __decorate([ __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], AuthController.prototype, "convertGuestToOfficial", null); +__decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Post)('promote-admin'), + __param(0, (0, common_1.Body)()), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", Promise) +], AuthController.prototype, "promoteAdmin", null); __decorate([ (0, common_1.Post)('create-guest'), __metadata("design:type", Function), @@ -720,10 +742,12 @@ let TourController = class TourController { } async createTour(body, req) { const { title, description, startDate, endDate, adultCount, childCount, childDiscount, tags, members } = body; + const filteredTitle = await filterText(this.prisma, title || ''); + const filteredDesc = await filterText(this.prisma, description || ''); const tour = await this.prisma.tour.create({ data: { - title, - description, + title: filteredTitle, + description: filteredDesc, startDate: startDate ? new Date(startDate) : null, endDate: endDate ? new Date(endDate) : null, tags: tags || [], @@ -939,18 +963,23 @@ let TourController = class TourController { }); } async updateTour(id, body) { + const updateData = { + startDate: body.startDate ? new Date(body.startDate) : undefined, + tags: body.tags, + endDate: body.endDate ? new Date(body.endDate) : undefined, + adultCount: body.adultCount !== undefined ? Number(body.adultCount) : undefined, + childCount: body.childCount !== undefined ? Number(body.childCount) : undefined, + childDiscount: body.childDiscount !== undefined ? Number(body.childDiscount) : undefined, + }; + if (body.title !== undefined) { + updateData.title = await filterText(this.prisma, body.title); + } + if (body.description !== undefined) { + updateData.description = await filterText(this.prisma, body.description); + } return this.prisma.tour.update({ where: { id }, - data: { - title: body.title, - description: body.description, - startDate: body.startDate ? new Date(body.startDate) : undefined, - tags: body.tags, - endDate: body.endDate ? new Date(body.endDate) : undefined, - adultCount: body.adultCount !== undefined ? Number(body.adultCount) : undefined, - childCount: body.childCount !== undefined ? Number(body.childCount) : undefined, - childDiscount: body.childDiscount !== undefined ? Number(body.childDiscount) : undefined, - }, + data: updateData, }).then(async (tour) => { await Promise.all([ this.cacheManager.del(id), @@ -2445,9 +2474,10 @@ let CommentController = class CommentController { }); } async addComment(locationId, body, req) { + const filteredContent = await filterText(this.prisma, body.content); const comment = await this.prisma.comment.create({ data: { - content: body.content, + content: filteredContent, locationId, userId: req.user.id }, @@ -2848,9 +2878,10 @@ let PublicPhotoController = class PublicPhotoController { if (!photo) { throw new common_1.NotFoundException('Không tìm thấy ảnh.'); } + const filteredContent = await filterText(this.prisma, content.trim()); const comment = await this.prisma.comment.create({ data: { - content: content.trim(), + content: filteredContent, photoId, userId: req.user.id }, @@ -2863,6 +2894,26 @@ let PublicPhotoController = class PublicPhotoController { this.commentGateway.notifyNewPhotoComment(photoId, comment); return comment; } + async deletePhotoComment(id, req) { + const comment = await this.prisma.comment.findUnique({ + where: { id }, + include: { photo: true } + }); + if (!comment) { + throw new common_1.NotFoundException('Không tìm thấy bình luận.'); + } + const isAuthorized = req.user.isAdmin || + comment.userId === req.user.id || + (comment.photo && comment.photo.uploaderId === req.user.id); + if (!isAuthorized) { + throw new common_1.ForbiddenException('Bạn không có quyền xóa bình luận này.'); + } + await this.prisma.comment.delete({ where: { id } }); + if (comment.photoId) { + this.commentGateway.server.to(`photo_${comment.photoId}`).emit('photoCommentDeleted', { id, photoId: comment.photoId }); + } + return { success: true, message: 'Đã xóa bình luận thành công.' }; + } async sharePhoto(photoId, req, res) { const photo = await this.prisma.photo.findUnique({ where: { id: photoId } @@ -2977,6 +3028,15 @@ __decorate([ __metadata("design:paramtypes", [String, Object, Object]), __metadata("design:returntype", Promise) ], PublicPhotoController.prototype, "addPhotoComment", null); +__decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Delete)('comments/:id'), + __param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object]), + __metadata("design:returntype", Promise) +], PublicPhotoController.prototype, "deletePhotoComment", null); __decorate([ (0, common_1.Get)(':photoId/share'), __param(0, (0, common_1.Param)('photoId', common_1.ParseUUIDPipe)), @@ -3224,11 +3284,12 @@ let DirectMessageController = class DirectMessageController { if (!conn) { throw new common_1.ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); } + const filteredContent = content ? await filterText(this.prisma, content) : ''; const message = await this.prisma.directMessage.create({ data: { senderId, receiverId, - content: content || '', + content: filteredContent, attachmentUrl, latitude, longitude @@ -3330,11 +3391,12 @@ let TourMessageController = class TourMessageController { if (!participant) { throw new common_1.ForbiddenException('Bạn không phải là thành viên của hành trình này.'); } + const filteredContent = content ? await filterText(this.prisma, content) : ''; const tourMessage = await this.prisma.tourMessage.create({ data: { tourId, senderId, - content: content || '', + content: filteredContent, attachmentUrl, latitude, longitude @@ -3365,13 +3427,14 @@ let TourMessageController = class TourMessageController { }); for (const p of otherParticipants) { if (p.userId) { + const filteredContent = content ? await filterText(this.prisma, content) : ''; const isTagged = hasTags && taggedUserIds.includes(p.userId); console.log(`[sendTourMessage] Emitting tourMessageNotification to user_${p.userId}, isTagged: ${isTagged}`); this.commentGateway.server.to(`user_${p.userId}`).emit('tourMessageNotification', { tourId, senderName: req.user.name || 'Thành viên', tourTitle: tour?.title || 'Hành trình', - content: isTagged ? `@Bạn: ${content || ''}` : content || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), + content: isTagged ? `@Bạn: ${filteredContent || ''}` : filteredContent || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), isTagged }); } @@ -3402,6 +3465,382 @@ TourMessageController = __decorate([ __metadata("design:paramtypes", [prisma_service_1.PrismaService, CommentGateway]) ], TourMessageController); +async function filterText(prisma, text) { + if (!text) + return text; + try { + const filters = await prisma.wordFilter.findMany(); + let result = text; + for (const filter of filters) { + const escapedWord = filter.word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + const regex = new RegExp(escapedWord, 'gi'); + result = result.replace(regex, filter.replacement); + } + return result; + } + catch (err) { + console.error('Lỗi khi lọc từ cấm:', err); + return text; + } +} +let ModerationController = class ModerationController { + constructor(prisma) { + this.prisma = prisma; + } + async getSettings() { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + settings = await this.prisma.moderationSetting.create({ + data: { blockNsfw: false, blurFaces: false } + }); + } + return settings; + } +}; +__decorate([ + (0, common_1.Get)('settings'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) +], ModerationController.prototype, "getSettings", null); +ModerationController = __decorate([ + (0, common_1.Controller)('moderation'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], ModerationController); +let AdminModerationController = class AdminModerationController { + constructor(prisma) { + this.prisma = prisma; + } + async getSettings() { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + settings = await this.prisma.moderationSetting.create({ + data: { blockNsfw: false, blurFaces: false } + }); + } + return settings; + } + async updateSettings(body) { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + return this.prisma.moderationSetting.create({ + data: { + blockNsfw: body.blockNsfw ?? false, + blurFaces: body.blurFaces ?? false + } + }); + } + return this.prisma.moderationSetting.update({ + where: { id: settings.id }, + data: { + blockNsfw: body.blockNsfw, + blurFaces: body.blurFaces + } + }); + } + async getWordFilters() { + return this.prisma.wordFilter.findMany({ + orderBy: { createdAt: 'desc' } + }); + } + async addWordFilter(body) { + const { word, replacement } = body; + if (!word || replacement === undefined) { + throw new common_1.BadRequestException('Từ khóa và từ thay thế không được để trống.'); + } + return this.prisma.wordFilter.create({ + data: { + word: word.trim(), + replacement: replacement.trim() + } + }); + } + async deleteWordFilter(id) { + await this.prisma.wordFilter.delete({ where: { id } }); + return { success: true }; + } +}; +__decorate([ + (0, common_1.Get)(), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) +], AdminModerationController.prototype, "getSettings", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], AdminModerationController.prototype, "updateSettings", null); +__decorate([ + (0, common_1.Get)('word-filters'), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) +], AdminModerationController.prototype, "getWordFilters", null); +__decorate([ + (0, common_1.Post)('word-filters'), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], AdminModerationController.prototype, "addWordFilter", null); +__decorate([ + (0, common_1.Delete)('word-filters/:id'), + __param(0, (0, common_1.Param)('id', common_1.ParseUUIDPipe)), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", Promise) +], AdminModerationController.prototype, "deleteWordFilter", null); +AdminModerationController = __decorate([ + (0, common_1.Controller)('admin/moderation'), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, admin_guard_1.AdminGuard), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], AdminModerationController); +let TrustedUsersController = class TrustedUsersController { + constructor(prisma) { + this.prisma = prisma; + } + async getTrustedUsers() { + const ratings = await this.prisma.tourRating.groupBy({ + by: ['targetUserId'], + _avg: { averageScore: true }, + _count: { id: true } + }); + const users = await this.prisma.user.findMany({ + where: { id: { in: ratings.map(r => r.targetUserId) } }, + select: { id: true, name: true, avatar: true } + }); + const result = ratings.map(r => { + const u = users.find(user => user.id === r.targetUserId); + return { + id: r.targetUserId, + name: u?.name || 'Ẩn danh', + avatar: u?.avatar || null, + averageScore: Math.round((r._avg.averageScore || 0) * 10) / 10, + ratingCount: r._count.id + }; + }); + return result.sort((a, b) => b.averageScore - a.averageScore || b.ratingCount - a.ratingCount); + } +}; +__decorate([ + (0, common_1.Get)(), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) +], TrustedUsersController.prototype, "getTrustedUsers", null); +TrustedUsersController = __decorate([ + (0, common_1.Controller)('users/trusted'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], TrustedUsersController); +let TourRatingController = class TourRatingController { + constructor(prisma) { + this.prisma = prisma; + } + async getTourRatings(tourId) { + return this.prisma.tourRating.findMany({ + where: { tourId }, + include: { + raterUser: { select: { id: true, name: true, avatar: true } }, + targetUser: { select: { id: true, name: true, avatar: true } } + }, + orderBy: { createdAt: 'desc' } + }); + } + async createTourRating(tourId, body, req) { + const raterUserId = req.user.id; + const { targetUserId, honesty, transparency, enthusiasm, cheerfulness, seriousness, planning, survival, comment } = body; + if (!targetUserId || honesty < 1 || honesty > 5 || transparency < 1 || transparency > 5 || enthusiasm < 1 || enthusiasm > 5 || cheerfulness < 1 || cheerfulness > 5 || seriousness < 1 || seriousness > 5 || planning < 1 || planning > 5 || survival < 1 || survival > 5) { + throw new common_1.BadRequestException('Dữ liệu đánh giá không hợp lệ.'); + } + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId: raterUserId } + }); + if (!participant) { + throw new common_1.ForbiddenException('Bạn không phải là thành viên của tour này.'); + } + const targetParticipant = await this.prisma.tourParticipant.findFirst({ + where: { + tourId, + userId: targetUserId, + role: { in: ['OWNER', 'MANAGER'] } + } + }); + if (!targetParticipant) { + throw new common_1.BadRequestException('Chỉ có thể đánh giá người tạo tour hoặc người quản lý.'); + } + const averageScore = (honesty + transparency + enthusiasm + cheerfulness + seriousness + planning + survival) / 7; + const existingRating = await this.prisma.tourRating.findUnique({ + where: { + tourId_targetUserId_raterUserId: { + tourId, + targetUserId, + raterUserId + } + } + }); + if (existingRating) { + return this.prisma.tourRating.update({ + where: { id: existingRating.id }, + data: { + honesty, + transparency, + enthusiasm, + cheerfulness, + seriousness, + planning, + survival, + averageScore, + comment, + createdAt: new Date() + } + }); + } + return this.prisma.tourRating.create({ + data: { + tourId, + targetUserId, + raterUserId, + honesty, + transparency, + enthusiasm, + cheerfulness, + seriousness, + planning, + survival, + averageScore, + comment + } + }); + } +}; +__decorate([ + (0, common_1.Get)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", Promise) +], TourRatingController.prototype, "getTourRatings", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Body)()), + __param(2, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object, Object]), + __metadata("design:returntype", Promise) +], TourRatingController.prototype, "createTourRating", null); +TourRatingController = __decorate([ + (0, common_1.Controller)('tours/:tourId/ratings'), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], TourRatingController); +let PublicTourShareController = class PublicTourShareController { + constructor(prisma) { + this.prisma = prisma; + } + async getSharedJourney(token) { + const tourShare = await this.prisma.tourShare.findUnique({ + where: { token, isEnabled: true }, + include: { + tour: { + include: { + creator: { select: { id: true, name: true, phone: true } }, + participants: { + select: { + id: true, + role: true, + displayName: true, + user: { select: { id: true, name: true, phone: true } } + } + }, + legs: { + include: { + locations: { + orderBy: { plannedStart: 'asc' } + } + }, + orderBy: { sequence: 'asc' } + } + } + } + } + }); + if (!tourShare || !tourShare.tour) { + throw new common_1.NotFoundException('Không tìm thấy hành trình chia sẻ hoặc liên kết đã bị vô hiệu hóa.'); + } + return { + tour: tourShare.tour, + isEnabled: tourShare.isEnabled + }; + } +}; +__decorate([ + (0, common_1.Get)('share/:token'), + __param(0, (0, common_1.Param)('token')), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", Promise) +], PublicTourShareController.prototype, "getSharedJourney", null); +PublicTourShareController = __decorate([ + (0, common_1.Controller)('tours'), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], PublicTourShareController); +let TourShareController = class TourShareController { + constructor(prisma) { + this.prisma = prisma; + } + async getShareStatus(tourId) { + let share = await this.prisma.tourShare.findUnique({ + where: { tourId } + }); + if (!share) { + share = await this.prisma.tourShare.create({ + data: { tourId, isEnabled: false } + }); + } + return share; + } + async toggleShare(tourId, body) { + let share = await this.prisma.tourShare.findUnique({ + where: { tourId } + }); + if (!share) { + return this.prisma.tourShare.create({ + data: { + tourId, + isEnabled: body.isEnabled + } + }); + } + return this.prisma.tourShare.update({ + where: { id: share.id }, + data: { isEnabled: body.isEnabled } + }); + } +}; +__decorate([ + (0, common_1.Get)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", Promise) +], TourShareController.prototype, "getShareStatus", null); +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object]), + __metadata("design:returntype", Promise) +], TourShareController.prototype, "toggleShare", null); +TourShareController = __decorate([ + (0, common_1.Controller)('tours/:tourId/share'), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + __metadata("design:paramtypes", [prisma_service_1.PrismaService]) +], TourShareController); let AppModule = class AppModule { }; AppModule = __decorate([ @@ -3426,7 +3865,7 @@ AppModule = __decorate([ signOptions: { expiresIn: '1d' }, }), ], - controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController], + controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController, ModerationController, AdminModerationController, TrustedUsersController, TourRatingController, PublicTourShareController, TourShareController], providers: [prisma_service_1.PrismaService, jwt_strategy_1.JwtStrategy, TourRoleGuard, jwt_auth_guard_1.JwtAuthGuard, admin_guard_1.AdminGuard, CommentGateway, core_2.Reflector, EmailService, config_1.ConfigService], exports: [prisma_service_1.PrismaService] }) diff --git a/backend/dist/src/main.js.map b/backend/dist/src/main.js.map index 5001391..d87a52c 100644 --- a/backend/dist/src/main.js.map +++ b/backend/dist/src/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/prisma/migrations/20260621051731_add_new_features/migration.sql b/backend/prisma/migrations/20260621051731_add_new_features/migration.sql new file mode 100644 index 0000000..c8727a3 --- /dev/null +++ b/backend/prisma/migrations/20260621051731_add_new_features/migration.sql @@ -0,0 +1,73 @@ +-- CreateTable +CREATE TABLE "WordFilter" ( + "id" TEXT NOT NULL, + "word" TEXT NOT NULL, + "replacement" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "WordFilter_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ModerationSetting" ( + "id" TEXT NOT NULL, + "blockNsfw" BOOLEAN NOT NULL DEFAULT false, + "blurFaces" BOOLEAN NOT NULL DEFAULT false, + + CONSTRAINT "ModerationSetting_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TourRating" ( + "id" TEXT NOT NULL, + "tourId" TEXT NOT NULL, + "targetUserId" TEXT NOT NULL, + "raterUserId" TEXT NOT NULL, + "honesty" INTEGER NOT NULL DEFAULT 5, + "transparency" INTEGER NOT NULL DEFAULT 5, + "enthusiasm" INTEGER NOT NULL DEFAULT 5, + "cheerfulness" INTEGER NOT NULL DEFAULT 5, + "seriousness" INTEGER NOT NULL DEFAULT 5, + "planning" INTEGER NOT NULL DEFAULT 5, + "survival" INTEGER NOT NULL DEFAULT 5, + "averageScore" DOUBLE PRECISION NOT NULL DEFAULT 5.0, + "comment" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "TourRating_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TourShare" ( + "id" TEXT NOT NULL, + "tourId" TEXT NOT NULL, + "token" TEXT NOT NULL, + "isEnabled" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "TourShare_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "WordFilter_word_key" ON "WordFilter"("word"); + +-- CreateIndex +CREATE UNIQUE INDEX "TourRating_tourId_targetUserId_raterUserId_key" ON "TourRating"("tourId", "targetUserId", "raterUserId"); + +-- CreateIndex +CREATE UNIQUE INDEX "TourShare_tourId_key" ON "TourShare"("tourId"); + +-- CreateIndex +CREATE UNIQUE INDEX "TourShare_token_key" ON "TourShare"("token"); + +-- AddForeignKey +ALTER TABLE "TourRating" ADD CONSTRAINT "TourRating_tourId_fkey" FOREIGN KEY ("tourId") REFERENCES "Tour"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TourRating" ADD CONSTRAINT "TourRating_targetUserId_fkey" FOREIGN KEY ("targetUserId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TourRating" ADD CONSTRAINT "TourRating_raterUserId_fkey" FOREIGN KEY ("raterUserId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TourShare" ADD CONSTRAINT "TourShare_tourId_fkey" FOREIGN KEY ("tourId") REFERENCES "Tour"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index af36f29..4573ea2 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -80,6 +80,8 @@ model User { sentMessages DirectMessage[] @relation("MessageSender") receivedMessages DirectMessage[] @relation("MessageReceiver") tourMessages TourMessage[] + receivedRatings TourRating[] @relation("RatedUser") + sentRatings TourRating[] @relation("RatingUser") } model Tour { @@ -105,6 +107,8 @@ model Tour { photos Photo[] invitations TourInvitation[] tourMessages TourMessage[] + ratings TourRating[] + share TourShare? } model JoinRequest { @@ -296,3 +300,50 @@ model TourMessage { @@index([tourId]) @@index([senderId]) } + +model WordFilter { + id String @id @default(uuid()) + word String @unique + replacement String + createdAt DateTime @default(now()) +} + +model ModerationSetting { + id String @id @default(uuid()) + blockNsfw Boolean @default(false) + blurFaces Boolean @default(false) +} + +model TourRating { + id String @id @default(uuid()) + tourId String + targetUserId String + raterUserId String + honesty Int @default(5) + transparency Int @default(5) + enthusiasm Int @default(5) + cheerfulness Int @default(5) + seriousness Int @default(5) + planning Int @default(5) + survival Int @default(5) + averageScore Float @default(5.0) + comment String? @db.Text + createdAt DateTime @default(now()) + + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) + targetUser User @relation("RatedUser", fields: [targetUserId], references: [id], onDelete: Cascade) + raterUser User @relation("RatingUser", fields: [raterUserId], references: [id], onDelete: Cascade) + + @@unique([tourId, targetUserId, raterUserId]) +} + +model TourShare { + id String @id @default(uuid()) + tourId String @unique + token String @unique @default(uuid()) + isEnabled Boolean @default(true) + createdAt DateTime @default(now()) + + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) +} + diff --git a/backend/src/main.ts b/backend/src/main.ts index 6ea8c5e..d7d2e94 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -409,6 +409,22 @@ class AuthController { }; } + @UseGuards(JwtAuthGuard) + @Post('promote-admin') + async promoteAdmin(@Body() body: { secretKey: string }, @Req() req: any) { + const { secretKey } = body; + const adminSecret = this.configService.get('ADMIN_SECRET_KEY') || 'yotrip_secret_admin_key'; + if (secretKey !== adminSecret) { + throw new BadRequestException('Mã Secret Key không hợp lệ.'); + } + const updated = await this.prisma.user.update({ + where: { id: req.user.id }, + data: { isAdmin: true }, + select: { id: true, email: true, name: true, isAdmin: true } + }); + return { success: true, user: updated }; + } + @Post('create-guest') async createGuestUser() { const user = await this.prisma.user.create({ @@ -687,10 +703,12 @@ class TourController { @Post() async createTour(@Body() body: any, @Req() req: any) { const { title, description, startDate, endDate, adultCount, childCount, childDiscount, tags, members } = body; + const filteredTitle = await filterText(this.prisma, title || ''); + const filteredDesc = await filterText(this.prisma, description || ''); const tour = await this.prisma.tour.create({ data: { - title, - description, + title: filteredTitle, + description: filteredDesc, startDate: startDate ? new Date(startDate) : null, endDate: endDate ? new Date(endDate) : null, tags: tags || [], @@ -959,19 +977,24 @@ class TourController { @UseGuards(JwtAuthGuard, TourRoleGuard) @Patch(':id') async updateTour(@Param('id', ParseUUIDPipe) id: string, @Body() body: any) { - // Lưu ý: Trong thực tế nên kiểm tra xem user có phải là OWNER không + const updateData: any = { + startDate: body.startDate ? new Date(body.startDate) : undefined, + tags: body.tags, + endDate: body.endDate ? new Date(body.endDate) : undefined, + adultCount: body.adultCount !== undefined ? Number(body.adultCount) : undefined, + childCount: body.childCount !== undefined ? Number(body.childCount) : undefined, + childDiscount: body.childDiscount !== undefined ? Number(body.childDiscount) : undefined, + }; + if (body.title !== undefined) { + updateData.title = await filterText(this.prisma, body.title); + } + if (body.description !== undefined) { + updateData.description = await filterText(this.prisma, body.description); + } + return this.prisma.tour.update({ where: { id }, - data: { - title: body.title, - description: body.description, - startDate: body.startDate ? new Date(body.startDate) : undefined, - tags: body.tags, - endDate: body.endDate ? new Date(body.endDate) : undefined, - adultCount: body.adultCount !== undefined ? Number(body.adultCount) : undefined, - childCount: body.childCount !== undefined ? Number(body.childCount) : undefined, - childDiscount: body.childDiscount !== undefined ? Number(body.childDiscount) : undefined, - }, + data: updateData, }).then(async (tour) => { await Promise.all([ this.cacheManager.del(id), @@ -2410,9 +2433,10 @@ class CommentController { @Body() body: { content: string }, @Req() req: any ) { + const filteredContent = await filterText(this.prisma, body.content); const comment = await this.prisma.comment.create({ data: { - content: body.content, + content: filteredContent, locationId, userId: req.user.id }, @@ -2800,9 +2824,10 @@ class PublicPhotoController { throw new NotFoundException('Không tìm thấy ảnh.'); } + const filteredContent = await filterText(this.prisma, content.trim()); const comment = await this.prisma.comment.create({ data: { - content: content.trim(), + content: filteredContent, photoId, userId: req.user.id }, @@ -2819,6 +2844,35 @@ class PublicPhotoController { return comment; } + @UseGuards(JwtAuthGuard) + @Delete('comments/:id') + async deletePhotoComment(@Param('id', ParseUUIDPipe) id: string, @Req() req: any) { + const comment = await this.prisma.comment.findUnique({ + where: { id }, + include: { photo: true } + }); + + if (!comment) { + throw new NotFoundException('Không tìm thấy bình luận.'); + } + + const isAuthorized = req.user.isAdmin || + comment.userId === req.user.id || + (comment.photo && comment.photo.uploaderId === req.user.id); + + if (!isAuthorized) { + throw new ForbiddenException('Bạn không có quyền xóa bình luận này.'); + } + + await this.prisma.comment.delete({ where: { id } }); + + if (comment.photoId) { + this.commentGateway.server.to(`photo_${comment.photoId}`).emit('photoCommentDeleted', { id, photoId: comment.photoId }); + } + + return { success: true, message: 'Đã xóa bình luận thành công.' }; + } + @Get(':photoId/share') async sharePhoto( @Param('photoId', ParseUUIDPipe) photoId: string, @@ -3185,11 +3239,12 @@ class DirectMessageController { throw new ForbiddenException('Bạn chỉ có thể nhắn tin với người đã kết nối.'); } + const filteredContent = content ? await filterText(this.prisma, content) : ''; const message = await this.prisma.directMessage.create({ data: { senderId, receiverId, - content: content || '', + content: filteredContent, attachmentUrl, latitude, longitude @@ -3289,11 +3344,12 @@ class TourMessageController { throw new ForbiddenException('Bạn không phải là thành viên của hành trình này.'); } + const filteredContent = content ? await filterText(this.prisma, content) : ''; const tourMessage = await this.prisma.tourMessage.create({ data: { tourId, senderId, - content: content || '', + content: filteredContent, attachmentUrl, latitude, longitude @@ -3333,13 +3389,14 @@ class TourMessageController { for (const p of otherParticipants) { if (p.userId) { + const filteredContent = content ? await filterText(this.prisma, content) : ''; const isTagged = hasTags && taggedUserIds.includes(p.userId); console.log(`[sendTourMessage] Emitting tourMessageNotification to user_${p.userId}, isTagged: ${isTagged}`); this.commentGateway.server.to(`user_${p.userId}`).emit('tourMessageNotification', { tourId, senderName: req.user.name || 'Thành viên', tourTitle: tour?.title || 'Hành trình', - content: isTagged ? `@Bạn: ${content || ''}` : content || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), + content: isTagged ? `@Bạn: ${filteredContent || ''}` : filteredContent || (attachmentUrl ? '[Hình ảnh]' : '[Vị trí]'), isTagged }); } @@ -3349,6 +3406,327 @@ class TourMessageController { } } +async function filterText(prisma: PrismaService, text: string): Promise { + if (!text) return text; + try { + const filters = await prisma.wordFilter.findMany(); + let result = text; + for (const filter of filters) { + const escapedWord = filter.word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + const regex = new RegExp(escapedWord, 'gi'); + result = result.replace(regex, filter.replacement); + } + return result; + } catch (err) { + console.error('Lỗi khi lọc từ cấm:', err); + return text; + } +} + +@Controller('moderation') +class ModerationController { + constructor(private prisma: PrismaService) {} + + @Get('settings') + async getSettings() { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + settings = await this.prisma.moderationSetting.create({ + data: { blockNsfw: false, blurFaces: false } + }); + } + return settings; + } +} + +@Controller('admin/moderation') +@UseGuards(JwtAuthGuard, AdminGuard) +class AdminModerationController { + constructor(private prisma: PrismaService) {} + + @Get() + async getSettings() { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + settings = await this.prisma.moderationSetting.create({ + data: { blockNsfw: false, blurFaces: false } + }); + } + return settings; + } + + @Post() + async updateSettings(@Body() body: { blockNsfw?: boolean, blurFaces?: boolean }) { + let settings = await this.prisma.moderationSetting.findFirst(); + if (!settings) { + return this.prisma.moderationSetting.create({ + data: { + blockNsfw: body.blockNsfw ?? false, + blurFaces: body.blurFaces ?? false + } + }); + } + return this.prisma.moderationSetting.update({ + where: { id: settings.id }, + data: { + blockNsfw: body.blockNsfw, + blurFaces: body.blurFaces + } + }); + } + + @Get('word-filters') + async getWordFilters() { + return this.prisma.wordFilter.findMany({ + orderBy: { createdAt: 'desc' } + }); + } + + @Post('word-filters') + async addWordFilter(@Body() body: { word: string, replacement: string }) { + const { word, replacement } = body; + if (!word || replacement === undefined) { + throw new BadRequestException('Từ khóa và từ thay thế không được để trống.'); + } + return this.prisma.wordFilter.create({ + data: { + word: word.trim(), + replacement: replacement.trim() + } + }); + } + + @Delete('word-filters/:id') + async deleteWordFilter(@Param('id', ParseUUIDPipe) id: string) { + await this.prisma.wordFilter.delete({ where: { id } }); + return { success: true }; + } +} + +@Controller('users/trusted') +class TrustedUsersController { + constructor(private prisma: PrismaService) {} + + @Get() + async getTrustedUsers() { + const ratings = await this.prisma.tourRating.groupBy({ + by: ['targetUserId'], + _avg: { averageScore: true }, + _count: { id: true } + }); + + const users = await this.prisma.user.findMany({ + where: { id: { in: ratings.map(r => r.targetUserId) } }, + select: { id: true, name: true, avatar: true } + }); + + const result = ratings.map(r => { + const u = users.find(user => user.id === r.targetUserId); + return { + id: r.targetUserId, + name: u?.name || 'Ẩn danh', + avatar: u?.avatar || null, + averageScore: Math.round((r._avg.averageScore || 0) * 10) / 10, + ratingCount: r._count.id + }; + }); + + return result.sort((a, b) => b.averageScore - a.averageScore || b.ratingCount - a.ratingCount); + } +} + +@Controller('tours/:tourId/ratings') +@UseGuards(JwtAuthGuard) +class TourRatingController { + constructor(private prisma: PrismaService) {} + + @Get() + async getTourRatings(@Param('tourId', ParseUUIDPipe) tourId: string) { + return this.prisma.tourRating.findMany({ + where: { tourId }, + include: { + raterUser: { select: { id: true, name: true, avatar: true } }, + targetUser: { select: { id: true, name: true, avatar: true } } + }, + orderBy: { createdAt: 'desc' } + }); + } + + @Post() + async createTourRating( + @Param('tourId', ParseUUIDPipe) tourId: string, + @Body() body: { + targetUserId: string; + honesty: number; + transparency: number; + enthusiasm: number; + cheerfulness: number; + seriousness: number; + planning: number; + survival: number; + comment?: string; + }, + @Req() req: any + ) { + const raterUserId = req.user.id; + const { targetUserId, honesty, transparency, enthusiasm, cheerfulness, seriousness, planning, survival, comment } = body; + + if (!targetUserId || honesty < 1 || honesty > 5 || transparency < 1 || transparency > 5 || enthusiasm < 1 || enthusiasm > 5 || cheerfulness < 1 || cheerfulness > 5 || seriousness < 1 || seriousness > 5 || planning < 1 || planning > 5 || survival < 1 || survival > 5) { + throw new BadRequestException('Dữ liệu đánh giá không hợp lệ.'); + } + + const participant = await this.prisma.tourParticipant.findFirst({ + where: { tourId, userId: raterUserId } + }); + if (!participant) { + throw new ForbiddenException('Bạn không phải là thành viên của tour này.'); + } + + const targetParticipant = await this.prisma.tourParticipant.findFirst({ + where: { + tourId, + userId: targetUserId, + role: { in: ['OWNER', 'MANAGER'] } + } + }); + if (!targetParticipant) { + throw new BadRequestException('Chỉ có thể đánh giá người tạo tour hoặc người quản lý.'); + } + + const averageScore = (honesty + transparency + enthusiasm + cheerfulness + seriousness + planning + survival) / 7; + + const existingRating = await this.prisma.tourRating.findUnique({ + where: { + tourId_targetUserId_raterUserId: { + tourId, + targetUserId, + raterUserId + } + } + }); + + if (existingRating) { + return this.prisma.tourRating.update({ + where: { id: existingRating.id }, + data: { + honesty, + transparency, + enthusiasm, + cheerfulness, + seriousness, + planning, + survival, + averageScore, + comment, + createdAt: new Date() + } + }); + } + + return this.prisma.tourRating.create({ + data: { + tourId, + targetUserId, + raterUserId, + honesty, + transparency, + enthusiasm, + cheerfulness, + seriousness, + planning, + survival, + averageScore, + comment + } + }); + } +} + +@Controller('tours') +class PublicTourShareController { + constructor(private prisma: PrismaService) {} + + @Get('share/:token') + async getSharedJourney(@Param('token') token: string) { + const tourShare = await this.prisma.tourShare.findUnique({ + where: { token, isEnabled: true }, + include: { + tour: { + include: { + creator: { select: { id: true, name: true, phone: true } }, + participants: { + select: { + id: true, + role: true, + displayName: true, + user: { select: { id: true, name: true, phone: true } } + } + }, + legs: { + include: { + locations: { + orderBy: { plannedStart: 'asc' } + } + }, + orderBy: { sequence: 'asc' } + } + } + } + } + }); + + if (!tourShare || !tourShare.tour) { + throw new NotFoundException('Không tìm thấy hành trình chia sẻ hoặc liên kết đã bị vô hiệu hóa.'); + } + + return { + tour: tourShare.tour, + isEnabled: tourShare.isEnabled + }; + } +} + +@Controller('tours/:tourId/share') +@UseGuards(JwtAuthGuard) +class TourShareController { + constructor(private prisma: PrismaService) {} + + @Get() + async getShareStatus(@Param('tourId', ParseUUIDPipe) tourId: string) { + let share = await this.prisma.tourShare.findUnique({ + where: { tourId } + }); + if (!share) { + share = await this.prisma.tourShare.create({ + data: { tourId, isEnabled: false } + }); + } + return share; + } + + @Post() + async toggleShare( + @Param('tourId', ParseUUIDPipe) tourId: string, + @Body() body: { isEnabled: boolean } + ) { + let share = await this.prisma.tourShare.findUnique({ + where: { tourId } + }); + if (!share) { + return this.prisma.tourShare.create({ + data: { + tourId, + isEnabled: body.isEnabled + } + }); + } + return this.prisma.tourShare.update({ + where: { id: share.id }, + data: { isEnabled: body.isEnabled } + }); + } +} + @Module({ imports: [ ConfigModule.forRoot({ @@ -3372,7 +3750,7 @@ class TourMessageController { signOptions: { expiresIn: '1d' }, }) as any, ], - controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController], + controllers: [AppController, AuthController, PublicTourController, TourController, UserController, RoutingController, LegController, LocationController, CommentController, PhotoController, PublicPhotoController, AdminOtpController, AdminController, ConnectionController, DirectMessageController, UploadController, TourMessageController, ModerationController, AdminModerationController, TrustedUsersController, TourRatingController, PublicTourShareController, TourShareController], providers: [PrismaService, JwtStrategy, TourRoleGuard, JwtAuthGuard, AdminGuard, CommentGateway, Reflector, EmailService, ConfigService], exports: [PrismaService] }) diff --git a/backend/uploads/members/1666804b-16d0-4d9d-9499-18e929844482/originals/1782010807886-951640419.jpg b/backend/uploads/members/1666804b-16d0-4d9d-9499-18e929844482/originals/1782010807886-951640419.jpg new file mode 100644 index 0000000..231071f Binary files /dev/null and b/backend/uploads/members/1666804b-16d0-4d9d-9499-18e929844482/originals/1782010807886-951640419.jpg differ diff --git a/backend/uploads/tours/1782010807886-951640419.jpg b/backend/uploads/tours/1782010807886-951640419.jpg new file mode 100644 index 0000000..dde3788 Binary files /dev/null and b/backend/uploads/tours/1782010807886-951640419.jpg differ diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico index 60b94ea..4955c48 100644 Binary files a/frontend/public/favicon.ico and b/frontend/public/favicon.ico differ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 23c0e9a..86e74e0 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import { useState, useEffect } from 'react'; import { LandingPage } from './pages/LandingPage'; import { ExploreMap } from './pages/ExploreMap'; import { TourDetailPage } from './pages/TourDetailPage'; @@ -7,30 +7,32 @@ import { MyPhotosPage } from './pages/MyPhotosPage'; import { MyNotePage } from './pages/MyNotePage'; import { JoinTourPage } from './pages/JoinTourPage'; import { MemberDashboard } from './pages/MemberDashboard'; -import { useTourStore } from './store/useTourStore'; +import { ShareJourneyPage } from './pages/ShareJourneyPage'; import { ConfirmProvider } from './hooks/useConfirm'; import { NotificationProvider } from './hooks/useNotification'; function App() { const params = new URLSearchParams(window.location.search); const viewTourId = params.get('viewTour'); + const pathParts = window.location.pathname.split('/'); + const isJourneyShare = pathParts[1] === 'journey' && pathParts[2]; + const journeyTokenVal = isJourneyShare ? pathParts[2] : null; const [user, setUser] = useState(null); - const [currentPage, setCurrentPage] = useState<'landing' | 'dashboard' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes' | 'joinTour'>( - viewTourId ? 'tourDetail' : (window.location.pathname === '/join-tour' || params.has('token') ? 'joinTour' : 'landing') + const [shareJourneyToken, setShareJourneyToken] = useState(journeyTokenVal); + const [currentPage, setCurrentPage] = useState<'landing' | 'dashboard' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes' | 'joinTour' | 'shareJourney'>( + journeyTokenVal ? 'shareJourney' : (viewTourId ? 'tourDetail' : (window.location.pathname === '/join-tour' || params.has('token') ? 'joinTour' : 'landing')) ); const [currentTourId, setCurrentTourId] = useState(viewTourId); const [isPublicTourView, setIsPublicTourView] = useState(!!viewTourId); const [previousPage, setPreviousPage] = useState<'explore' | 'dashboard' | 'landing'>('explore'); - // Lấy action từ store - const fetchTour = useTourStore(state => state.fetchTour); - const fetchPublicTourDetails = useTourStore(state => state.fetchPublicTourDetails); - useEffect(() => { const params = new URLSearchParams(window.location.search); const viewTourId = params.get('viewTour'); const isJoinTour = window.location.pathname === '/join-tour' || params.has('token'); + const pathParts = window.location.pathname.split('/'); + const journeyToken = pathParts[1] === 'journey' && pathParts[2] ? pathParts[2] : null; // Khôi phục thông tin đăng nhập nếu có const token = localStorage.getItem('token'); @@ -46,7 +48,10 @@ function App() { } } - if (isJoinTour) { + if (journeyToken) { + setShareJourneyToken(journeyToken); + setCurrentPage('shareJourney'); + } else if (isJoinTour) { setCurrentPage('joinTour'); } else if (viewTourId) { setCurrentPage('tourDetail'); @@ -139,6 +144,13 @@ function App() { } }; + const handleGoToHome = () => { + window.history.pushState({}, '', '/'); + setShareJourneyToken(null); + const loggedIn = !!localStorage.getItem('token'); + setCurrentPage(loggedIn ? 'dashboard' : 'landing'); + }; + return ( @@ -211,6 +223,15 @@ function App() { ); } + if (currentPage === 'shareJourney') { + return ( + + ); + } + return setCurrentPage('explore')} onGoToSignup={() => setCurrentPage('signup')} onGoToMap={() => setCurrentPage('explore')} onLoginSuccess={handleLoginSuccess} isInitialSetup={false} />; })()} diff --git a/frontend/src/components/AddPhotoModal.tsx b/frontend/src/components/AddPhotoModal.tsx index f4f74af..f6b6274 100644 --- a/frontend/src/components/AddPhotoModal.tsx +++ b/frontend/src/components/AddPhotoModal.tsx @@ -2,6 +2,7 @@ import React, { useState, useRef } from 'react'; import { X, Upload, Image as ImageIcon, Loader2 } from 'lucide-react'; import { useNotification } from '@/hooks/useNotification'; import { useTourStore } from '@/store/useTourStore'; +import { processImageModeration } from '@/hooks/useImageModeration'; interface AddPhotoModalProps { isOpen: boolean; @@ -14,6 +15,7 @@ export const AddPhotoModal: React.FC = ({ isOpen, onClose, t const [selectedFiles, setSelectedFiles] = useState([]); const [previews, setPreviews] = useState([]); const [isUploading, setIsUploading] = useState(false); + const [isProcessing, setIsProcessing] = useState(false); const fileInputRef = useRef(null); const notify = useNotification(); const fetchTour = useTourStore(state => state.fetchTour); @@ -26,34 +28,52 @@ export const AddPhotoModal: React.FC = ({ isOpen, onClose, t const newValidFiles: File[] = []; const newValidPreviews: string[] = []; - for (const file of files) { - // 1. Kiểm tra cơ bản: Tệp có dung lượng hay không - if (!file || file.size === 0) { - notify({ title: 'Lỗi tệp', message: `Tệp ${file.name} trống hoặc không khả dụng.`, type: 'error' }); - continue; + setIsProcessing(true); + notify({ title: 'Đang kiểm duyệt...', message: 'Đang kiểm tra và lọc hình ảnh của bạn...', type: 'info' }); + + try { + for (const file of files) { + // 1. Kiểm tra cơ bản: Tệp có dung lượng hay không + if (!file || file.size === 0) { + notify({ title: 'Lỗi tệp', message: `Tệp ${file.name} trống hoặc không khả dụng.`, type: 'error' }); + continue; + } + + // 2. Chạy kiểm duyệt hình ảnh + const moderationResult = await processImageModeration(file); + if (moderationResult.blocked) { + notify({ title: 'Ảnh bị từ chối', message: `Ảnh ${file.name} chứa nội dung không phù hợp và bị chặn.`, type: 'error' }); + continue; + } + + const processedFile = moderationResult.file; + const previewUrl = URL.createObjectURL(processedFile); + + // 3. Kiểm tra tính toàn vẹn: Thử load ảnh vào bộ nhớ để xác nhận file "tồn tại" và đọc được + const isValidImage = await new Promise((resolve) => { + const img = new Image(); + img.onload = () => resolve(true); + img.onerror = () => resolve(false); + img.src = previewUrl; + }); + + if (isValidImage) { + newValidFiles.push(processedFile); + newValidPreviews.push(previewUrl); + } else { + URL.revokeObjectURL(previewUrl); // Thu hồi ngay nếu không hợp lệ + notify({ title: 'Lỗi ảnh', message: `Không thể đọc nội dung ảnh: ${file.name}. Vui lòng kiểm tra lại file.`, type: 'error' }); + } } - const previewUrl = URL.createObjectURL(file); - - // 2. Kiểm tra tính toàn vẹn: Thử load ảnh vào bộ nhớ để xác nhận file "tồn tại" và đọc được - const isValidImage = await new Promise((resolve) => { - const img = new Image(); - img.onload = () => resolve(true); - img.onerror = () => resolve(false); - img.src = previewUrl; - }); - - if (isValidImage) { - newValidFiles.push(file); - newValidPreviews.push(previewUrl); - } else { - URL.revokeObjectURL(previewUrl); // Thu hồi ngay nếu không hợp lệ - notify({ title: 'Lỗi ảnh', message: `Không thể đọc nội dung ảnh: ${file.name}. Vui lòng kiểm tra lại file.`, type: 'error' }); - } + setSelectedFiles(prev => [...prev, ...newValidFiles]); + setPreviews(prev => [...prev, ...newValidPreviews]); + } catch (err) { + console.error('File checking error:', err); + notify({ title: 'Lỗi', message: 'Lỗi trong quá trình kiểm duyệt ảnh.', type: 'error' }); + } finally { + setIsProcessing(false); } - - setSelectedFiles(prev => [...prev, ...newValidFiles]); - setPreviews(prev => [...prev, ...newValidPreviews]); } }; @@ -130,6 +150,7 @@ export const AddPhotoModal: React.FC = ({ isOpen, onClose, t } }; + return (
@@ -177,10 +198,19 @@ export const AddPhotoModal: React.FC = ({ isOpen, onClose, t )}
diff --git a/frontend/src/components/CoordinateSelectModal.tsx b/frontend/src/components/CoordinateSelectModal.tsx index a083889..d8b51b9 100644 --- a/frontend/src/components/CoordinateSelectModal.tsx +++ b/frontend/src/components/CoordinateSelectModal.tsx @@ -1,8 +1,9 @@ import React, { useState, useEffect } from 'react'; -import { X, MapPin } from 'lucide-react'; +import { X, MapPin, Search, Loader2 } from 'lucide-react'; import { MapContainer, TileLayer, Marker, useMap, useMapEvents } from 'react-leaflet'; import L from 'leaflet'; import 'leaflet/dist/leaflet.css'; +import { useTranslation } from '../hooks/useTranslation'; // Fix Leaflet default marker icon bug const DefaultIcon = L.icon({ @@ -55,10 +56,16 @@ export const CoordinateSelectModal: React.FC = ({ initialLng, onSelect }) => { + const { t } = useTranslation(); const defaultCenter: [number, number] = [10.7769, 106.7009]; // TP.HCM default const [position, setPosition] = useState<[number, number]>(defaultCenter); const [hasSelected, setHasSelected] = useState(false); + // Search States + const [searchQuery, setSearchQuery] = useState(''); + const [searchResults, setSearchResults] = useState([]); + const [isSearching, setIsSearching] = useState(false); + useEffect(() => { if (isOpen) { if (typeof initialLat === 'number' && typeof initialLng === 'number' && !isNaN(initialLat) && !isNaN(initialLng)) { @@ -68,6 +75,8 @@ export const CoordinateSelectModal: React.FC = ({ setPosition(defaultCenter); setHasSelected(false); } + setSearchQuery(''); + setSearchResults([]); } }, [isOpen, initialLat, initialLng]); @@ -83,6 +92,31 @@ export const CoordinateSelectModal: React.FC = ({ onClose(); }; + const handleSearch = async () => { + if (!searchQuery.trim()) return; + setIsSearching(true); + try { + const res = await fetch(`https://nominatim.openstreetmap.org/search?format=json&q=${encodeURIComponent(searchQuery)}&accept-language=vi&limit=5`); + if (res.ok) { + const data = await res.json(); + setSearchResults(data); + } + } catch (e) { + console.error('Error during Nominatim search:', e); + } finally { + setIsSearching(false); + } + }; + + const handleSelectResult = (place: any) => { + const lat = parseFloat(place.lat); + const lng = parseFloat(place.lon); + setPosition([lat, lng]); + setHasSelected(true); + setSearchResults([]); + setSearchQuery(place.display_name); + }; + return (
{/* Backdrop */} @@ -92,33 +126,75 @@ export const CoordinateSelectModal: React.FC = ({ /> {/* Content */} -
+
{/* Header */} -
+
-

Chọn vị trí trên bản đồ

-

Click lên bản đồ để chọn tọa độ

+

{t('chooseLocationMap')}

+

{t('clickMapSelectCoords')}

{/* Map Body */} -
+
+ + {/* Floating Search Panel */} +
+
+
+ setSearchQuery(e.target.value)} + onKeyDown={(e) => e.key === 'Enter' && handleSearch()} + placeholder={t('searchPlaceholder')} + className="w-full bg-slate-50 dark:bg-slate-800 border-0 outline-none rounded-xl pl-8 pr-3 py-2 text-xs text-slate-800 dark:text-slate-100" + /> + +
+ +
+ + {searchResults.length > 0 && ( +
+ {searchResults.map((r, i) => ( + + ))} +
+ )} +
+ @@ -131,29 +207,29 @@ export const CoordinateSelectModal: React.FC = ({
{/* Footer */} -
-
+
+
{hasSelected ? ( - - Tọa độ: {position[0].toFixed(6)}, {position[1].toFixed(6)} + + {t('coordsLabel')}: {position[0].toFixed(6)}, {position[1].toFixed(6)} ) : ( - Chưa chọn vị trí + {t('noCoordsSelected')} )}
diff --git a/frontend/src/components/ItineraryTimeline.tsx b/frontend/src/components/ItineraryTimeline.tsx index 91d8a8d..99d3683 100644 --- a/frontend/src/components/ItineraryTimeline.tsx +++ b/frontend/src/components/ItineraryTimeline.tsx @@ -201,7 +201,7 @@ export const ItineraryTimeline = ({ }, [legs]); return ( -
+
{legs.length === 0 ? (
@@ -397,7 +397,10 @@ export const ItineraryTimeline = ({ {isEndPoint && ( Điểm kết thúc )} -

+

onNavigate?.(location)} + className={`font-semibold text-lg cursor-pointer hover:text-blue-600 transition-colors select-none ${location.status === 'COMPLETED' ? 'text-gray-500 line-through' : 'text-gray-800'}`} + > {location.name}

diff --git a/frontend/src/components/PublicPhotoModal.tsx b/frontend/src/components/PublicPhotoModal.tsx index 637adff..044b2d3 100644 --- a/frontend/src/components/PublicPhotoModal.tsx +++ b/frontend/src/components/PublicPhotoModal.tsx @@ -1,7 +1,8 @@ import React, { useState, useEffect, useRef } from 'react'; -import { X, Send, MessageSquare, User, Loader2, Calendar, MapPin, Download, Edit, Heart } from 'lucide-react'; +import { X, Send, MessageSquare, User, Loader2, Calendar, MapPin, Download, Edit, Heart, Trash2 } from 'lucide-react'; import { io } from 'socket.io-client'; import { CoordinateSelectModal } from './CoordinateSelectModal'; +import { useTranslation } from '../hooks/useTranslation'; interface Comment { id: string; @@ -46,6 +47,7 @@ export const PublicPhotoModal: React.FC = ({ onLoginSuccess, onUpdatePhoto }) => { + const { t } = useTranslation(); const [comments, setComments] = useState([]); const [newComment, setNewComment] = useState(''); const [isLoading, setIsLoading] = useState(false); @@ -260,6 +262,12 @@ export const PublicPhotoModal: React.FC = ({ } }); + socket.on('photoCommentDeleted', (deleted: any) => { + if (deleted.photoId === photo.id) { + setComments(prev => prev.filter(c => c.id !== deleted.id)); + } + }); + return () => { socket.disconnect(); }; @@ -348,6 +356,28 @@ export const PublicPhotoModal: React.FC = ({ } }; + const handleDeleteComment = async (commentId: string) => { + if (!confirm(t('confirmDeleteComment') || 'Bạn có chắc chắn muốn xóa bình luận này không?')) return; + try { + const token = localStorage.getItem('token') || localStorage.getItem('guest_token'); + const res = await fetch(`/api/v1/public-photos/comments/${commentId}`, { + method: 'DELETE', + headers: { + 'Authorization': `Bearer ${token}` + } + }); + if (res.ok) { + setComments(prev => prev.filter(c => c.id !== commentId)); + } else { + const err = await res.json(); + alert(err.message || 'Lỗi khi xóa bình luận.'); + } + } catch (error) { + console.error('Lỗi khi xóa bình luận:', error); + alert('Không thể kết nối đến máy chủ.'); + } + }; + const isAuthorized = currentUser?.isAdmin || (currentUser && photo.uploader && currentUser.id === photo.uploader.id) || (currentUser && photo.uploaderId && currentUser.id === photo.uploaderId); @@ -630,7 +660,7 @@ export const PublicPhotoModal: React.FC = ({

- Bình luận cộng đồng + {t('commentSectionTitle')}

Ảnh chia sẻ công khai trên bản đồ

@@ -641,7 +671,7 @@ export const PublicPhotoModal: React.FC = ({ {isLoading ? (
- Đang tải bình luận... + {t('loading')}
) : comments.length === 0 ? (
@@ -661,9 +691,23 @@ export const PublicPhotoModal: React.FC = ({
{c.userName} - - {new Date(c.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} - +
+ + {new Date(c.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} + + {(currentUser?.isAdmin || + currentUser?.id === c.userId || + currentUser?.id === photo.uploaderId || + currentUser?.id === photo.uploader?.id) && ( + + )} +

{c.content}

@@ -672,6 +716,7 @@ export const PublicPhotoModal: React.FC = ({ ); }) )} +
diff --git a/frontend/src/components/UserManagementModal.tsx b/frontend/src/components/UserManagementModal.tsx index 068a354..4b4eaf1 100644 --- a/frontend/src/components/UserManagementModal.tsx +++ b/frontend/src/components/UserManagementModal.tsx @@ -7,10 +7,14 @@ interface UserManagementModalProps { } export const UserManagementModal: React.FC = ({ isOpen, onClose }) => { - const [activeTab, setActiveTab] = useState<'users' | 'photos' | 'trash'>('users'); + const [activeTab, setActiveTab] = useState<'users' | 'photos' | 'trash' | 'filters'>('users'); const [users, setUsers] = useState([]); const [photos, setPhotos] = useState([]); const [trashPhotos, setTrashPhotos] = useState([]); + const [moderationSetting, setModerationSetting] = useState({ blockNsfw: false, blurFaces: false }); + const [wordFilters, setWordFilters] = useState([]); + const [newWord, setNewWord] = useState(''); + const [newReplacement, setNewReplacement] = useState(''); const [loading, setLoading] = useState(false); const [photosLoading, setPhotosLoading] = useState(false); const [trashLoading, setTrashLoading] = useState(false); @@ -105,6 +109,84 @@ export const UserManagementModal: React.FC = ({ isOpen } }; + const fetchModerationSettings = async () => { + try { + const res = await fetch('/api/v1/moderation/settings'); + if (res.ok) { + const data = await res.json(); + setModerationSetting({ blockNsfw: data.blockNsfw, blurFaces: data.blurFaces }); + } + } catch (e) { + console.error(e); + } + }; + + const fetchWordFilters = async () => { + try { + const res = await fetch('/api/v1/admin/moderation/word-filters', { + headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}` } + }); + if (res.ok) { + const data = await res.json(); + setWordFilters(data); + } + } catch (e) { + console.error(e); + } + }; + + const handleUpdateModeration = async (field: 'blockNsfw' | 'blurFaces', value: boolean) => { + const updated = { ...moderationSetting, [field]: value }; + setModerationSetting(updated); + try { + await fetch('/api/v1/admin/moderation', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + }, + body: JSON.stringify(updated) + }); + } catch (e) { + console.error(e); + } + }; + + const handleAddWordFilter = async () => { + if (!newWord.trim()) return; + try { + const res = await fetch('/api/v1/admin/moderation/word-filters', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + }, + body: JSON.stringify({ word: newWord, replacement: newReplacement }) + }); + if (res.ok) { + setNewWord(''); + setNewReplacement(''); + fetchWordFilters(); + } + } catch (e) { + console.error(e); + } + }; + + const handleDeleteWordFilter = async (id: string) => { + try { + const res = await fetch(`/api/v1/admin/moderation/word-filters/${id}`, { + method: 'DELETE', + headers: { 'Authorization': `Bearer ${localStorage.getItem('token')}` } + }); + if (res.ok) { + fetchWordFilters(); + } + } catch (e) { + console.error(e); + } + }; + useEffect(() => { if (isOpen) { if (activeTab === 'users') { @@ -113,6 +195,9 @@ export const UserManagementModal: React.FC = ({ isOpen fetchPhotos(); } else if (activeTab === 'trash') { fetchTrashPhotos(); + } else if (activeTab === 'filters') { + fetchModerationSettings(); + fetchWordFilters(); } } }, [isOpen, activeTab]); @@ -212,6 +297,15 @@ export const UserManagementModal: React.FC = ({ isOpen Ảnh rác +
{/* Content Body */} @@ -409,6 +503,121 @@ export const UserManagementModal: React.FC = ({ isOpen
) )} + + {activeTab === 'filters' && ( +
+
+

+ ⚙️ Cấu hình kiểm duyệt hình ảnh +

+ +
+
+ Lọc hình ảnh khiêu dâm (NSFW) + Tự động phát hiện và chặn tải lên các hình ảnh có nội dung người lớn nhạy cảm. +
+ +
+ +
+
+ Tự động làm mờ khuôn mặt + Tự động nhận diện khuôn mặt người trong ảnh để làm mờ bảo mật trước khi lưu trữ. +
+ +
+
+ +
+

+ 📝 Cấu hình bộ lọc văn bản +

+ + {/* Add Word Filter Form */} +
+
+ + setNewWord(e.target.value)} + className="w-full px-4 py-2 border border-gray-200 rounded-xl text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 bg-gray-50/20" + /> +
+
+ + setNewReplacement(e.target.value)} + className="w-full px-4 py-2 border border-gray-200 rounded-xl text-sm focus:outline-none focus:ring-1 focus:ring-blue-500 bg-gray-50/20" + /> +
+
+ +
+
+ + {/* Word Filter List */} + {wordFilters.length === 0 ? ( +
Chưa cấu hình bộ lọc từ khóa nào.
+ ) : ( +
+ + + + + + + + + + {wordFilters.map((wf) => ( + + + + + + ))} + +
Từ cấmTừ thay thếThao tác
{wf.word}{wf.replacement} + +
+
+ )} +
+
+ )}
diff --git a/frontend/src/hooks/useImageModeration.ts b/frontend/src/hooks/useImageModeration.ts new file mode 100644 index 0000000..5359648 --- /dev/null +++ b/frontend/src/hooks/useImageModeration.ts @@ -0,0 +1,120 @@ +const loadScript = (src: string): Promise => { + return new Promise((resolve, reject) => { + if (document.querySelector(`script[src="${src}"]`)) { + resolve(); + return; + } + const script = document.createElement('script'); + script.src = src; + script.onload = () => resolve(); + script.onerror = () => reject(new Error(`Failed to load script ${src}`)); + document.head.appendChild(script); + }); +}; + +const loadModerationLibraries = async () => { + // Load TensorFlow first + await loadScript('https://cdn.jsdelivr.net/npm/@tensorflow/tfjs'); + // Load models after tfjs is available + await Promise.all([ + loadScript('https://cdn.jsdelivr.net/npm/@tensorflow-models/blazeface'), + loadScript('https://cdn.jsdelivr.net/npm/nsfwjs@2.4.0/dist/bundle.js') + ]); +}; + +export const processImageModeration = async (file: File): Promise<{ file: File; blocked: boolean }> => { + try { + const settingsRes = await fetch('/api/v1/moderation/settings'); + if (!settingsRes.ok) return { file, blocked: false }; + const settings = await settingsRes.json(); + const { blockNsfw, blurFaces } = settings; + + if (!blockNsfw && !blurFaces) { + return { file, blocked: false }; + } + + await loadModerationLibraries(); + + return new Promise((resolve) => { + const img = new Image(); + img.onload = async () => { + const canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + const ctx = canvas.getContext('2d'); + if (!ctx) { + resolve({ file, blocked: false }); + return; + } + ctx.drawImage(img, 0, 0); + + if (blockNsfw) { + try { + const nsfwModel = await (window as any).nsfwjs.load(); + const predictions = await nsfwModel.classify(canvas); + const pornOrHentai = predictions.find((p: any) => p.className === 'Porn' || p.className === 'Hentai'); + const pornProb = pornOrHentai ? pornOrHentai.probability : 0; + if (pornProb > 0.5) { + resolve({ file, blocked: true }); + return; + } + } catch (e) { + console.error('NSFW validation error:', e); + } + } + + let modified = false; + if (blurFaces) { + try { + const blazefaceModel = await (window as any).blazeface.load(); + const predictions = await blazefaceModel.estimateFaces(canvas, false); + if (predictions && predictions.length > 0) { + modified = true; + predictions.forEach((prediction: any) => { + const startX = prediction.topLeft[0]; + const startY = prediction.topLeft[1]; + const endX = prediction.bottomRight[0]; + const endY = prediction.bottomRight[1]; + const width = endX - startX; + const height = endY - startY; + + const faceCanvas = document.createElement('canvas'); + faceCanvas.width = width; + faceCanvas.height = height; + const faceCtx = faceCanvas.getContext('2d'); + if (faceCtx) { + faceCtx.drawImage(canvas, startX, startY, width, height, 0, 0, width, height); + ctx.filter = 'blur(15px)'; + ctx.drawImage(faceCanvas, startX, startY, width, height); + ctx.filter = 'none'; + } + }); + } + } catch (e) { + console.error('Face blur error:', e); + } + } + + if (modified) { + canvas.toBlob((blob) => { + if (blob) { + const processedFile = new File([blob], file.name, { type: file.type }); + resolve({ file: processedFile, blocked: false }); + } else { + resolve({ file, blocked: false }); + } + }, file.type); + } else { + resolve({ file, blocked: false }); + } + }; + img.onerror = () => { + resolve({ file, blocked: false }); + }; + img.src = URL.createObjectURL(file); + }); + } catch (err) { + console.error('Image moderation failed:', err); + return { file, blocked: false }; + } +}; diff --git a/frontend/src/hooks/useTheme.ts b/frontend/src/hooks/useTheme.ts new file mode 100644 index 0000000..8b7a4a7 --- /dev/null +++ b/frontend/src/hooks/useTheme.ts @@ -0,0 +1,68 @@ +import { useState, useEffect } from 'react'; + +export type Theme = 'light' | 'dark' | 'system'; + +export const useTheme = () => { + const [theme, setTheme] = useState(() => { + return (localStorage.getItem('theme') as Theme) || 'system'; + }); + + const applyTheme = (currentTheme: Theme) => { + const root = document.documentElement; + root.classList.remove('light', 'dark'); + + if (currentTheme === 'dark') { + root.classList.add('dark'); + root.style.colorScheme = 'dark'; + } else if (currentTheme === 'light') { + root.classList.add('light'); + root.style.colorScheme = 'light'; + } else { + // System + const systemIsDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + if (systemIsDark) { + root.classList.add('dark'); + root.style.colorScheme = 'dark'; + } else { + root.classList.add('light'); + root.style.colorScheme = 'light'; + } + } + }; + + const changeTheme = (newTheme: Theme) => { + localStorage.setItem('theme', newTheme); + setTheme(newTheme); + applyTheme(newTheme); + window.dispatchEvent(new Event('themeChange')); + }; + + useEffect(() => { + applyTheme(theme); + + // Listen for system theme changes if theme is set to 'system' + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + const handleSystemThemeChange = () => { + if (localStorage.getItem('theme') === 'system' || !localStorage.getItem('theme')) { + applyTheme('system'); + } + }; + + mediaQuery.addEventListener('change', handleSystemThemeChange); + + const handleStorageChange = () => { + const storedTheme = (localStorage.getItem('theme') as Theme) || 'system'; + setTheme(storedTheme); + applyTheme(storedTheme); + }; + + window.addEventListener('themeChange', handleStorageChange); + + return () => { + mediaQuery.removeEventListener('change', handleSystemThemeChange); + window.removeEventListener('themeChange', handleStorageChange); + }; + }, [theme]); + + return { theme, changeTheme }; +}; diff --git a/frontend/src/hooks/useTranslation.ts b/frontend/src/hooks/useTranslation.ts new file mode 100644 index 0000000..aa36123 --- /dev/null +++ b/frontend/src/hooks/useTranslation.ts @@ -0,0 +1,147 @@ +import { useState, useEffect } from 'react'; + +export type Language = 'vi' | 'en' | 'zh'; + +const translations: Record> = { + // Common + appName: { vi: 'Travel Planner', en: 'Travel Planner', zh: '旅行规划' }, + login: { vi: 'Đăng nhập', en: 'Log In', zh: '登录' }, + signup: { vi: 'Đăng ký', en: 'Sign Up', zh: '注册' }, + logout: { vi: 'Đăng xuất', en: 'Log Out', zh: '登出' }, + cancel: { vi: 'Hủy', en: 'Cancel', zh: '取消' }, + confirm: { vi: 'Xác nhận', en: 'Confirm', zh: '确认' }, + save: { vi: 'Lưu', en: 'Save', zh: '保存' }, + saving: { vi: 'Đang lưu...', en: 'Saving...', zh: '保存中...' }, + loading: { vi: 'Đang tải...', en: 'Loading...', zh: '加载中...' }, + success: { vi: 'Thành công', en: 'Success', zh: '成功' }, + error: { vi: 'Lỗi', en: 'Error', zh: '错误' }, + info: { vi: 'Thông tin', en: 'Info', zh: '信息' }, + delete: { vi: 'Xóa', en: 'Delete', zh: '删除' }, + edit: { vi: 'Chỉnh sửa', en: 'Edit', zh: '编辑' }, + + // Landing Page + welcomeBack: { vi: 'Chào mừng bạn quay trở lại!', en: 'Welcome back!', zh: '欢迎回来!' }, + emailLabel: { vi: 'Email', en: 'Email', zh: '邮箱' }, + passwordLabel: { vi: 'Mật khẩu', en: 'Password', zh: '密码' }, + forgotPassword: { vi: 'Quên mật khẩu?', en: 'Forgot password?', zh: '忘记密码?' }, + orLabel: { vi: 'Hoặc', en: 'Or', zh: '或' }, + noAccount: { vi: 'Chưa có tài khoản?', en: "Don't have an account?", zh: '还没有账号?' }, + createAccountNow: { vi: 'Tạo tài khoản ngay', en: 'Create one now', zh: '立即注册' }, + quickCamera: { vi: 'Chụp ảnh nhanh', en: 'Quick Camera', zh: '快速相机' }, + momentsTitle: { vi: 'Khoảnh khắc cộng đồng', en: 'Community Moments', zh: '社区精彩瞬间' }, + trustedMembers: { vi: 'Thành viên uy tín', en: 'Trusted Members', zh: '信用会员' }, + exploreToursBtn: { vi: 'Khám phá các hành trình du lịch', en: 'Explore Travel Itineraries', zh: '探索旅行行程' }, + + // Explore Map + systemBtn: { vi: 'Hệ thống', en: 'System', zh: '系统管理' }, + createTourBtn: { vi: 'Tạo Tour', en: 'Create Tour', zh: '创建行程' }, + chooseLocationMap: { vi: 'Chọn vị trí trên bản đồ', en: 'Choose location on map', zh: '在地图上选择位置' }, + clickMapSelectCoords: { vi: 'Click lên bản đồ để chọn tọa độ', en: 'Click on map to select coordinates', zh: '在地图上点击以选择坐标' }, + coordsLabel: { vi: 'Tọa độ', en: 'Coordinates', zh: '坐标' }, + noCoordsSelected: { vi: 'Chưa chọn vị trí', en: 'No location selected', zh: '未选择位置' }, + searchPlaceholder: { vi: 'Tìm kiếm địa điểm...', en: 'Search places...', zh: '搜索地点...' }, + + // Itinerary Timeline + legLabel: { vi: 'Chặng', en: 'Leg', zh: '航段' }, + legSequence: { vi: 'Chi tiết Chặng', en: 'Leg Details', zh: '航段详情' }, + startDate: { vi: 'Bắt đầu', en: 'Start Date', zh: '开始日期' }, + endDate: { vi: 'Kết thúc', en: 'End Date', zh: '结束日期' }, + addLocation: { vi: 'Thêm địa điểm', en: 'Add Location', zh: '添加地点' }, + dwellTime: { vi: 'Thời gian dừng', en: 'Dwell Time', zh: '停留时间' }, + expenseLabel: { vi: 'Chi phí', en: 'Expense', zh: '费用' }, + paidByLabel: { vi: 'Người chi trả', en: 'Paid By', zh: '付款人' }, + optimizeBtn: { vi: 'Tối ưu', en: 'Optimize', zh: '优化' }, + startPoint: { vi: 'Điểm bắt đầu', en: 'Start Point', zh: '起点' }, + endPoint: { vi: 'Điểm kết thúc', en: 'End Point', zh: '终点' }, + pinStartHelper: { vi: 'Nhấn để ghim điểm bắt đầu cho Tour...', en: 'Click to pin starting point...', zh: '点击锁定行程起点...' }, + pinEndHelper: { vi: 'Nhấn để ghim điểm kết thúc cho Tour...', en: 'Click to pin ending point...', zh: '点击锁定行程终点...' }, + noLegs: { vi: 'Chưa có chặng nào trong lộ trình.', en: 'No legs in the itinerary yet.', zh: '行程中暂无航段。' }, + declareLegsBtn: { vi: 'Khai báo số chặng', en: 'Declare Leg Count', zh: '申报航段数' }, + addSingleLeg: { vi: 'Thêm chặng lẻ vào cuối', en: 'Add leg to end', zh: '末尾添加单个航段' }, + exportPDF: { vi: 'Xuất PDF', en: 'Export PDF', zh: '导出 PDF' }, + + // Tour Detail / Organizer Rating + rateOrganizer: { vi: 'Đánh giá ban tổ chức', en: 'Rate Organizer', zh: '评估组织者' }, + honesty: { vi: 'Trung thực', en: 'Honesty', zh: '诚实度' }, + transparency: { vi: 'Minh bạch', en: 'Transparency', zh: '透明度' }, + enthusiasm: { vi: 'Nhiệt tình', en: 'Enthusiasm', zh: '热情度' }, + cheerfulness: { vi: 'Vui vẻ', en: 'Cheerfulness', zh: '愉快度' }, + seriousness: { vi: 'Nhiêm túc', en: 'Seriousness', zh: '认真度' }, + planning: { vi: 'Có kế hoạch', en: 'Planning Skills', zh: '计划性' }, + survival: { vi: 'Kỹ năng sinh tồn', en: 'Survival Skills', zh: '生存技能' }, + rateTitle: { vi: 'Đánh giá Người tạo Tour', en: 'Rate Tour Creator', zh: '评价行程发起人' }, + rateCommentPlaceholder: { vi: 'Nhập ý kiến đánh giá khác...', en: 'Enter other comments...', zh: '输入其他评价...' }, + emergencyShare: { vi: 'Chia sẻ khẩn cấp', en: 'Emergency Share', zh: '紧急分享' }, + emergencyShareTooltip: { vi: 'Bật chia sẻ để người thân có thể định vị bạn khi khẩn cấp', en: 'Enable sharing so family can locate you in emergencies', zh: '开启分享以便家人在紧急情况下定位您' }, + copyShareLink: { vi: 'Sao chép liên kết chia sẻ', en: 'Copy share link', zh: '复制分享链接' }, + + // User Management / Moderation + tabUsers: { vi: 'Người dùng', en: 'Users', zh: '用户管理' }, + tabPhotos: { vi: 'Ảnh công khai', en: 'Public Photos', zh: '公开照片' }, + tabTrash: { vi: 'Ảnh rác', en: 'Trash Photos', zh: '垃圾照片' }, + tabFilters: { vi: 'Bộ lọc', en: 'Filters', zh: '过滤器' }, + filterNsfwToggle: { vi: 'Lọc hình ảnh khiêu dâm', en: 'Block NSFW Images', zh: '过滤淫秽图片' }, + filterFaceBlurToggle: { vi: 'Làm mờ khuôn mặt', en: 'Automatic Face Blur', zh: '自动模糊人脸' }, + wordFiltersTitle: { vi: 'Từ khóa cấm & Thay thế', en: 'Banned Words & Replacements', zh: '禁用词及替换词' }, + addWordBtn: { vi: 'Thêm từ khóa', en: 'Add Word', zh: '添加词汇' }, + wordLabel: { vi: 'Từ cấm', en: 'Banned Word', zh: '敏感词' }, + replacementLabel: { vi: 'Từ thay thế', en: 'Replacement', zh: '替换词' }, + commentSectionTitle: { vi: 'Bình luận cộng đồng', en: 'Community Comments', zh: '社区评论' }, + + // Dashboard / General Settings + myItineraries: { vi: 'Hành trình của tôi', en: 'My Itineraries', zh: '我的行程' }, + chatMenu: { vi: 'Trò chuyện', en: 'Chat', zh: '聊天' }, + friendsMenu: { vi: 'Danh sách bạn bè', en: 'Friends List', zh: '好友列表' }, + muteNotifications: { vi: 'Tắt thông báo đẩy', en: 'Mute Notifications', zh: '关闭推送通知' }, + unmuteNotifications: { vi: 'Bật thông báo đẩy', en: 'Unmute Notifications', zh: '开启推送通知' }, + enterSecretKey: { vi: 'Nhập Admin Secret Key để mở khóa', en: 'Enter Admin Secret Key to unlock', zh: '输入管理员密钥解锁' }, + invalidSecretKey: { vi: 'Mã Secret Key không hợp lệ', en: 'Invalid Secret Key', zh: '密钥无效' }, + languageSelect: { vi: 'Ngôn ngữ', en: 'Language', zh: '语言' }, + themeSelect: { vi: 'Giao diện', en: 'Theme', zh: '主题' }, + themeLight: { vi: 'Sáng', en: 'Light', zh: '浅色' }, + themeDark: { vi: 'Tối', en: 'Dark', zh: '深色' }, + themeSystem: { vi: 'Hệ thống', en: 'System', zh: '跟随系统' }, + + // Emergency Share Journey Page + emergencyContacts: { vi: 'Liên hệ khẩn cấp', en: 'Emergency Contacts', zh: '紧急联系人' }, + tourOwner: { vi: 'Người tạo Tour (Owner)', en: 'Tour Owner', zh: '发起人' }, + tourManager: { vi: 'Người quản lý (Manager)', en: 'Tour Manager', zh: '管理员' }, + phoneNumber: { vi: 'Số điện thoại', en: 'Phone Number', zh: '电话号码' }, + emergencyJourney: { vi: 'Hành trình Cứu hộ Khẩn cấp', en: 'Emergency Rescue Journey', zh: '紧急救援行程' }, + noPhone: { vi: 'Không có số điện thoại', en: 'No phone number', zh: '暂无电话' }, + noStops: { vi: 'Chưa có điểm dừng nào', en: 'No stops declared', zh: '暂无停留点' }, + viewMap: { vi: 'Bản đồ', en: 'Map', zh: '地图' }, + viewTimeline: { vi: 'Lịch trình', en: 'Itinerary', zh: '行程表' }, + sharedJourneyTitle: { vi: 'Hành trình chia sẻ khẩn cấp', en: 'Emergency Shared Journey', zh: '紧急分享行程' }, + linkExpired: { vi: 'Liên kết không tồn tại hoặc đã bị vô hiệu hóa.', en: 'Link does not exist or has been disabled.', zh: '链接不存在或已被禁用。' } +}; + +export const useTranslation = () => { + const [lang, setLang] = useState(() => { + return (localStorage.getItem('language') as Language) || 'vi'; + }); + + const changeLanguage = (newLang: Language) => { + localStorage.setItem('language', newLang); + setLang(newLang); + // Dispatch custom event to sync across components + window.dispatchEvent(new Event('languageChange')); + }; + + useEffect(() => { + const handleLangChange = () => { + setLang((localStorage.getItem('language') as Language) || 'vi'); + }; + window.addEventListener('languageChange', handleLangChange); + return () => window.removeEventListener('languageChange', handleLangChange); + }, []); + + const t = (key: string): string => { + if (!translations[key]) { + return key; + } + return translations[key][lang]; + }; + + return { t, lang, changeLanguage }; +}; diff --git a/frontend/src/pages/ExploreMap.tsx b/frontend/src/pages/ExploreMap.tsx index 8465ecc..7a6bf08 100644 --- a/frontend/src/pages/ExploreMap.tsx +++ b/frontend/src/pages/ExploreMap.tsx @@ -5,11 +5,13 @@ const MarkerClusterGroup = (_MarkerClusterGroup as any).default || _MarkerCluste import L from 'leaflet'; import 'leaflet/dist/leaflet.css'; import { useTourStore } from '@/store/useTourStore'; -import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2, UserPlus, Clock, ChevronLeft } from 'lucide-react'; +import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2, UserPlus, Clock, ChevronLeft, Lock, Globe, Sun, Moon, Laptop, Users } from 'lucide-react'; import { UserManagementModal } from '@/components/UserManagementModal'; import { useNotification } from '@/hooks/useNotification'; import { useConfirm } from '@/hooks/useConfirm'; import { CreateTourModal } from '../components/CreateTourModal'; +import { useTranslation } from '@/hooks/useTranslation'; +import { useTheme } from '@/hooks/useTheme'; import { PublicPhotoModal } from '../components/PublicPhotoModal'; // Fix lỗi icon mặc định của Leaflet @@ -67,6 +69,36 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, const notify = useNotification(); const confirm = useConfirm(); + const { t, lang, changeLanguage } = useTranslation(); + const { theme, changeTheme } = useTheme(); + + const handlePromoteAdmin = async (secretKey: string) => { + try { + const response = await fetch('/api/v1/auth/promote-admin', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + }, + body: JSON.stringify({ secretKey }) + }); + const data = await response.json(); + if (response.ok && data.success) { + const updatedUser = { ...user, isAdmin: true }; + localStorage.setItem('user', JSON.stringify(updatedUser)); + if (onLoginSuccess) { + onLoginSuccess(updatedUser); + } + notify({ title: t('success'), message: 'Đã kích hoạt quyền quản trị thành công!', type: 'success' }); + setIsAdminModalOpen(true); + } else { + notify({ title: t('error'), message: data.message || t('invalidSecretKey'), type: 'error' }); + } + } catch (err) { + console.error(err); + notify({ title: t('error'), message: 'Lỗi mạng khi kích hoạt Admin.', type: 'error' }); + } + }; // Refs for mobile long-press detection const touchTimerRef = React.useRef(null); @@ -193,6 +225,24 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, }; const [isAdminModalOpen, setIsAdminModalOpen] = useState(false); const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); + const [trustedUsers, setTrustedUsers] = useState([]); + const [isLeaderboardOpen, setIsLeaderboardOpen] = useState(false); + + const fetchTrustedUsers = async () => { + try { + const res = await fetch('/api/v1/users/trusted'); + if (res.ok) { + const data = await res.json(); + setTrustedUsers(data); + } + } catch (e) { + console.error('Lỗi khi tải thành viên uy tín:', e); + } + }; + + useEffect(() => { + fetchTrustedUsers(); + }, []); const [isFilterDropdownOpen, setIsFilterDropdownOpen] = useState(false); // State để điều khiển hiển thị dropdown lọc const [searchQuery, setSearchQuery] = useState(''); // State cho giá trị tìm kiếm const [suggestions, setSuggestions] = useState<{ type: 'tour' | 'location', id: string, name: string, lat?: number, lon?: number }[]>([]); @@ -515,15 +565,58 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, )} + {/* Lựa chọn Ngôn ngữ */} +
+ +
+ + + +
+
+ + {/* Lựa chọn Giao diện */} +
+ +
+ + + +
+
+ {/* Nút quản lý người dùng cho Admin */} - {user?.isAdmin && ( + {user && ( )} @@ -832,6 +925,46 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, }} /> )} + + {/* Floating Trusted Leaderboard Panel (Bottom Left) */} +
+ + + {isLeaderboardOpen && ( +
+

+ 🏆 {t('trustedMembers')} +

+ {trustedUsers.length === 0 ? ( +

Chưa có thành viên nào được đánh giá.

+ ) : ( +
+ {trustedUsers.map((u, idx) => ( +
+
+
+ {idx + 1} +
+ {u.name} +
+
+ + {u.averageScore} + ({u.ratingCount}) +
+
+ ))} +
+ )} +
+ )} +
); }; \ No newline at end of file diff --git a/frontend/src/pages/LandingPage.tsx b/frontend/src/pages/LandingPage.tsx index b6dea2c..c757446 100644 --- a/frontend/src/pages/LandingPage.tsx +++ b/frontend/src/pages/LandingPage.tsx @@ -2,6 +2,9 @@ import React, { useState, useRef, useEffect } from 'react'; import { LogIn, Compass, Map as MapIcon, Camera } from 'lucide-react'; import { LoginModal } from '../components/LoginModal'; import { useNotification } from '@/hooks/useNotification'; +import { processImageModeration } from '../hooks/useImageModeration'; +import { useTranslation } from '../hooks/useTranslation'; +import { useTheme } from '../hooks/useTheme'; interface LandingPageProps { onContinue?: () => void; @@ -41,8 +44,11 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); const fileInputRef = useRef(null); const notify = useNotification(); + const { t, lang, changeLanguage } = useTranslation(); + const { theme, changeTheme } = useTheme(); const [publicPhotos, setPublicPhotos] = useState([]); + const [trustedUsers, setTrustedUsers] = useState([]); const [currentBgIndex, setCurrentBgIndex] = useState(0); const [bg1, setBg1] = useState('/background.avif'); const [bg2, setBg2] = useState(''); @@ -87,8 +93,21 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign } }; + const fetchTrustedUsers = async () => { + try { + const res = await fetch('/api/v1/users/trusted'); + if (res.ok) { + const data = await res.json(); + setTrustedUsers(data); + } + } catch (e) { + console.error('Lỗi khi tải thành viên uy tín:', e); + } + }; + useEffect(() => { fetchPublicPhotos(); + fetchTrustedUsers(); }, []); useEffect(() => { @@ -106,6 +125,14 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign notify({ title: 'Đang xử lý...', message: 'Vui lòng chờ trong giây lát.', type: 'info' }); try { + // 0. Kiểm duyệt ảnh + const moderationResult = await processImageModeration(file); + if (moderationResult.blocked) { + notify({ title: 'Ảnh bị từ chối', message: `Ảnh ${file.name} chứa nội dung không phù hợp và bị chặn.`, type: 'error' }); + return; + } + const processedFile = moderationResult.file; + // Lấy tọa độ hiện tại của người dùng với cơ chế chống treo (Promise.race) const location = await Promise.race([ new Promise((resolve) => { @@ -138,7 +165,7 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign // 2. Tải ảnh lên const formData = new FormData(); - formData.append('images', file); + formData.append('images', processedFile); if (location) { formData.append('latitude', location.coords.latitude.toString()); formData.append('longitude', location.coords.longitude.toString()); @@ -247,20 +274,99 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign `} {/* Top Bar - Thanh điều hướng trên cùng */} -
+
- Travel Planner + YoTrip +
+ +
+ {/* Language Selector */} + + + {/* Theme Selector */} + + +
-
+ {/* Floating Trusted Leaderboard Panel (Left Side on Desktop) */} +
+

+ 🏆 {t('trustedMembers')} +

+
+ {trustedUsers.length === 0 ? ( +
Chưa có đánh giá nào.
+ ) : ( + trustedUsers.map((u, idx) => ( +
+
+
+ {u.avatar ? ( + Avatar + ) : ( + {u.name.charAt(0)} + )} +
+ + {idx + 1} + +
+
+
{u.name}
+
+ ★ {u.averageScore} + ({u.ratingCount}) +
+
+
+ )) + )} +
+
+ + {/* Mobile Only: Trusted Members Top Bar */} + {trustedUsers.length > 0 && ( +
+ + 🏆 {t('trustedMembers')} + +
+ {trustedUsers.slice(0, 5).map((u, idx) => ( +
+ #{idx + 1} + {u.name} + ★ {u.averageScore} +
+ ))} +
+
+ )} + {/* Body: Animation người lữ hành */}
{/* Kích hoạt click vào file input để chọn hoặc chụp ảnh */} @@ -279,20 +385,24 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign {/* Community Gallery Previews */} {publicPhotos.length > 0 && ( -
+
- Khoảnh khắc từ cộng đồng ({publicPhotos.length}) + {t('momentsTitle')} ({publicPhotos.length})
{publicPhotos.slice(0, 8).map((photo, index) => ( ))}
@@ -310,13 +420,21 @@ export const LandingPage: React.FC = ({ onContinue, onGoToSign )} {/* Bottom Bar - Nút hành động chính */} -
+
+ +
diff --git a/frontend/src/pages/ShareJourneyPage.tsx b/frontend/src/pages/ShareJourneyPage.tsx new file mode 100644 index 0000000..1a33678 --- /dev/null +++ b/frontend/src/pages/ShareJourneyPage.tsx @@ -0,0 +1,542 @@ +import React, { useState, useEffect, useMemo } from 'react'; +import { MapContainer, TileLayer, Marker, Popup, Polyline, useMap } from 'react-leaflet'; +import L from 'leaflet'; +import 'leaflet/dist/leaflet.css'; +import { + Phone, + MapPin, + Calendar, + ShieldAlert, + ChevronLeft, + LocateFixed, + Loader2, + PhoneCall, + Compass, + Map as MapIcon, + List +} from 'lucide-react'; +import { useTranslation } from '../hooks/useTranslation'; +import { useTheme } from '../hooks/useTheme'; + +interface UserInfo { + id: string; + name: string | null; + phone: string | null; +} + +interface ParticipantInfo { + id: string; + role: string; + displayName: string | null; + user: UserInfo | null; +} + +interface LocationInfo { + id: string; + name: string; + address: string | null; + latitude: number; + longitude: number; + plannedStart: string | null; + plannedEnd: string | null; + status: string; +} + +interface LegInfo { + id: string; + sequence: number; + note: string | null; + description: string | null; + startDate: string | null; + endDate: string | null; + locations: LocationInfo[]; +} + +interface TourInfo { + id: string; + title: string; + description: string | null; + startDate: string | null; + endDate: string | null; + creator: UserInfo; + participants: ParticipantInfo[]; + legs: LegInfo[]; +} + +interface ShareJourneyPageProps { + token: string; + onGoToHome: () => void; +} + +// Component to dynamically recenter map to a location coordinate +const MapRecenter = ({ position }: { position: [number, number] | null }) => { + const map = useMap(); + useEffect(() => { + if (position) { + map.setView(position, 15, { animate: true }); + } + }, [position, map]); + return null; +}; + +// Component to adjust bounds to fit all stop locations +const MapBoundsFit = ({ locations, trigger }: { locations: LocationInfo[]; trigger: number }) => { + const map = useMap(); + useEffect(() => { + if (locations.length > 0) { + const bounds = L.latLngBounds(locations.map(l => [l.latitude, l.longitude])); + if (locations.length === 1) { + map.setView([locations[0].latitude, locations[0].longitude], 14, { animate: true }); + } else { + map.fitBounds(bounds, { padding: [50, 50], maxZoom: 15 }); + } + } + }, [locations, trigger, map]); + return null; +}; + +export const ShareJourneyPage: React.FC = ({ token, onGoToHome }) => { + const { t, lang, changeLanguage } = useTranslation(); + const { theme, changeTheme } = useTheme(); + + const [tour, setTour] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + const [focusedLocation, setFocusedLocation] = useState<[number, number] | null>(null); + const [fitBoundsTrigger, setFitBoundsTrigger] = useState(0); + const [activeTab, setActiveTab] = useState<'map' | 'itinerary'>('map'); + + // Viewer's own GPS tracking + const [userLocation, setUserLocation] = useState<[number, number] | null>(null); + const [isLocating, setIsLocating] = useState(false); + + useEffect(() => { + const fetchSharedTour = async () => { + try { + setLoading(true); + const res = await fetch(`/api/v1/tours/share/${token}`); + if (!res.ok) { + throw new Error('Not found or disabled'); + } + const data = await res.json(); + setTour(data.tour); + } catch (err: any) { + console.error(err); + setError('expired_or_not_found'); + } finally { + setLoading(false); + } + }; + if (token) { + fetchSharedTour(); + } + }, [token]); + + const allLocations = useMemo(() => { + if (!tour) return []; + const locs: LocationInfo[] = []; + tour.legs.forEach(leg => { + leg.locations.forEach(loc => { + locs.push(loc); + }); + }); + return locs; + }, [tour]); + + const ownerContact = tour?.creator; + const managerContacts = useMemo(() => { + if (!tour) return []; + return tour.participants + .filter(p => p.role === 'MANAGER' && p.user) + .map(p => ({ + name: p.displayName || p.user?.name || '', + phone: p.user?.phone || '' + })) + .filter(c => c.phone); + }, [tour]); + + const handleLocateMe = () => { + if (!navigator.geolocation) { + alert('Trình duyệt của bạn không hỗ trợ định vị.'); + return; + } + setIsLocating(true); + navigator.geolocation.getCurrentPosition( + (position) => { + const coords: [number, number] = [position.coords.latitude, position.coords.longitude]; + setUserLocation(coords); + setFocusedLocation(coords); + setIsLocating(false); + }, + (err) => { + console.error(err); + setIsLocating(false); + alert('Không thể lấy vị trí hiện tại. Vui lòng bật định vị GPS.'); + }, + { enableHighAccuracy: true } + ); + }; + + // Custom Map Markers + const mapIcons = useMemo(() => { + if (typeof window === 'undefined') return {}; + return { + start: L.divIcon({ + className: '!bg-transparent !border-none', + html: `
S
`, + iconSize: [32, 32], + iconAnchor: [16, 16] + }), + end: L.divIcon({ + className: '!bg-transparent !border-none', + html: `
E
`, + iconSize: [32, 32], + iconAnchor: [16, 16] + }), + visit: L.divIcon({ + className: '!bg-transparent !border-none', + html: `
`, + iconSize: [24, 24], + iconAnchor: [12, 12] + }), + user: L.divIcon({ + className: '!bg-transparent !border-none', + html: ` +
+
+
+
+ `, + iconSize: [32, 32], + iconAnchor: [16, 16] + }) + }; + }, []); + + if (loading) { + return ( +
+ +

{t('loading')}

+
+ ); + } + + if (error || !tour) { + return ( +
+
+
+ +
+

{t('error')}

+

+ {t('linkExpired')} +

+ +
+
+ ); + } + + return ( +
+ {/* Header */} +
+
+ +
+
+ +

{t('emergencyJourney')}

+
+

{tour.title}

+
+
+ +
+ {/* Language Selector */} + + + {/* Theme Selector */} + +
+
+ + {/* Mobile Tab Switcher */} +
+ + +
+ + {/* Main Layout Area */} +
+ {/* Left Side Pane (Itinerary and Contacts) */} +
+
+ {/* Tour Meta Info */} +
+

{tour.title}

+ {tour.startDate && ( +
+ + + {new Date(tour.startDate).toLocaleDateString()} + {tour.endDate && ` - ${new Date(tour.endDate).toLocaleDateString()}`} + +
+ )} + {tour.description && ( +

+ {tour.description} +

+ )} +
+ + {/* Emergency Contacts */} +
+

+ + {t('emergencyContacts')} +

+ +
+ {/* Creator/Owner contact */} + {ownerContact && ( +
+
+
{t('tourOwner')}
+
{ownerContact.name || 'Anonymous'}
+
{ownerContact.phone || t('noPhone')}
+
+ {ownerContact.phone && ( + + + + )} +
+ )} + + {/* Manager contacts */} + {managerContacts.map((mgr, idx) => ( +
+
+
{t('tourManager')}
+
{mgr.name}
+
{mgr.phone}
+
+ + + +
+ ))} + + {!ownerContact?.phone && managerContacts.length === 0 && ( +

{t('noPhone')}

+ )} +
+
+ + {/* Stops Hierarchy List */} +
+

+ {t('viewTimeline')} +

+ +
+ {allLocations.length === 0 ? ( +

{t('noStops')}

+ ) : ( + allLocations.map((loc, idx) => { + const isStart = idx === 0; + const isEnd = idx === allLocations.length - 1; + return ( +
{ + setFocusedLocation([loc.latitude, loc.longitude]); + // Auto switch to map tab on mobile when clicking a location + setActiveTab('map'); + }} + className="group flex items-start gap-4 cursor-pointer pl-1 transition-all" + > + {/* Dot indicator */} +
+ {isStart ? ( +
S
+ ) : isEnd ? ( +
E
+ ) : ( +
+ )} +
+ + {/* Details */} +
+

+ {loc.name} +

+ {loc.address && ( +

{loc.address}

+ )} + {loc.plannedStart && ( +

+ {new Date(loc.plannedStart).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} + {loc.plannedEnd && ` - ${new Date(loc.plannedEnd).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}`} +

+ )} +
+
+ ); + }) + )} +
+
+
+
+ + {/* Right Side Map Pane */} +
+ {allLocations.length > 0 ? ( + + + + {/* Fit map bounds helper */} + + + {/* Recenter helper */} + + + {/* Polyline Route */} + {allLocations.length > 1 && ( + [l.latitude, l.longitude])} + color="#ec4899" + weight={4} + dashArray="6, 12" + /> + )} + + {/* Location Stop Markers */} + {allLocations.map((loc, idx) => { + const isStart = idx === 0; + const isEnd = idx === allLocations.length - 1; + const markerIcon = isStart ? mapIcons.start : isEnd ? mapIcons.end : mapIcons.visit; + + return ( + + +
+
{loc.name}
+ {loc.address &&
{loc.address}
} +
+
+
+ ); + })} + + {/* Viewer's GPS tracking marker */} + {userLocation && ( + + +
{t('myCoords') || 'Vị trí của tôi'}
+
+
+ )} +
+ ) : ( +
+ +

{t('noStops')}

+
+ )} + + {/* Floating Actions on Map */} +
+ {/* Locate Me button */} + + + {/* Fit bounds button */} + {allLocations.length > 0 && ( + + )} +
+
+
+
+ ); +}; diff --git a/frontend/src/pages/TourDetailPage.tsx b/frontend/src/pages/TourDetailPage.tsx index c1d19e5..1be87ad 100644 --- a/frontend/src/pages/TourDetailPage.tsx +++ b/frontend/src/pages/TourDetailPage.tsx @@ -3,6 +3,7 @@ import { io } from 'socket.io-client'; import { ItineraryTimeline } from '../components/ItineraryTimeline'; import { ExpenseManager } from '../components/ExpenseManager'; import { useTourStore } from '@/store/useTourStore'; +import { useTranslation } from '../hooks/useTranslation'; import { AddLocationModal } from '@/components/AddLocationModal'; import { AddMemberModal } from '../components/AddMemberModal'; import { MembersTab } from '../components/MembersTab'; @@ -253,7 +254,7 @@ const MapHoverTip = ({ canEdit }: { canEdit: boolean }) => { ); }; // Menu ngữ cảnh cho bản đồ -const MapContextMenu = ({ onAction }: { onAction: (action: string, latlng: L.LatLng) => void }) => { +const MapContextMenu = ({ onAction, onOpen }: { onAction: (action: string, latlng: L.LatLng) => void; onOpen?: () => void }) => { const [menuPos, setMenuPos] = useState<{ x: number, y: number, latlng: L.LatLng } | null>(null); const menuRef = React.useRef(null); @@ -271,6 +272,7 @@ const MapContextMenu = ({ onAction }: { onAction: (action: string, latlng: L.Lat console.log(`[MAP] Context menu triggered at: ${e.latlng.lat}, ${e.latlng.lng}`); setMenuPos({ x: e.containerPoint.x, y: e.containerPoint.y, latlng: e.latlng }); + if (onOpen) onOpen(); }, moveend: (e) => { @@ -352,6 +354,9 @@ export const TourDetailPage = ({ onOpenNotes?: () => void }) => { // Tách biệt các state và actions để tối ưu performance - Chuyển lên đầu để tránh lỗi initialization + const { t } = useTranslation(); + const notify = useNotification(); + const confirm = useConfirm(); const currentTour = useTourStore(state => state.currentTour); const legs = useTourStore(state => state.legs); const publicTours = useTourStore(state => state.publicTours); @@ -378,6 +383,187 @@ export const TourDetailPage = ({ const [isAddMemberOpen, setIsAddMemberOpen] = useState(false); const [isAddPhotoOpen, setIsAddPhotoOpen] = useState(false); + const [isRatingModalOpen, setIsRatingModalOpen] = useState(false); + const [ratingTargetUser, setRatingTargetUser] = useState(null); + const [ratingScores, setRatingScores] = useState({ + honesty: 5, + transparency: 5, + enthusiasm: 5, + cheerfulness: 5, + seriousness: 5, + planning: 5, + survival: 5 + }); + const [ratingComment, setRatingComment] = useState(''); + const [isSubmittingRating, setIsSubmittingRating] = useState(false); + + const handleSubmitRating = async () => { + if (!ratingTargetUser) return; + setIsSubmittingRating(true); + try { + const token = localStorage.getItem('token'); + const res = await fetch(`/api/v1/tours/${tourId}/ratings`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}` + }, + body: JSON.stringify({ + targetUserId: ratingTargetUser.userId || ratingTargetUser.user?.id, + ...ratingScores, + comment: ratingComment + }) + }); + if (res.ok) { + notify({ title: 'Thành công', message: 'Cảm ơn bạn đã gửi đánh giá!', type: 'success' }); + setIsRatingModalOpen(false); + setRatingComment(''); + setRatingScores({ + honesty: 5, + transparency: 5, + enthusiasm: 5, + cheerfulness: 5, + seriousness: 5, + planning: 5, + survival: 5 + }); + } else { + const err = await res.json(); + notify({ title: 'Lỗi', message: err.message || 'Lỗi khi gửi đánh giá.', type: 'error' }); + } + } catch (error) { + console.error(error); + notify({ title: 'Lỗi', message: 'Lỗi mạng khi gửi đánh giá.', type: 'error' }); + } finally { + setIsSubmittingRating(false); + } + }; + + const [shareStatus, setShareStatus] = useState<{ isEnabled: boolean; token: string } | null>(null); + + const fetchShareStatus = async () => { + if (isPublicView) return; + try { + const token = localStorage.getItem('token'); + const res = await fetch(`/api/v1/tours/${tourId}/share`, { + headers: { 'Authorization': `Bearer ${token}` } + }); + if (res.ok) { + const data = await res.json(); + setShareStatus(data); + } + } catch (e) { + console.error('Error fetching share status:', e); + } + }; + + const handleToggleShare = async (isEnabled: boolean) => { + try { + const token = localStorage.getItem('token'); + const res = await fetch(`/api/v1/tours/${tourId}/share`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${token}` + }, + body: JSON.stringify({ isEnabled }) + }); + if (res.ok) { + const data = await res.json(); + setShareStatus(data); + notify({ + title: 'Thành công', + message: isEnabled ? 'Đã bật chia sẻ hành trình cứu hộ.' : 'Đã tắt chia sẻ.', + type: 'success' + }); + } + } catch (e) { + console.error(e); + } + }; + + const handleExportPDF = async () => { + if (!(window as any).html2pdf) { + await new Promise((resolve, reject) => { + const script = document.createElement('script'); + script.src = 'https://cdnjs.cloudflare.com/ajax/libs/html2pdf.js/0.10.1/html2pdf.bundle.min.js'; + script.onload = () => resolve(); + script.onerror = () => reject(new Error('Failed to load html2pdf')); + document.head.appendChild(script); + }); + } + + const style = document.createElement('style'); + style.innerHTML = ` + .pdf-exclude { display: none !important; } + .pdf-container { padding: 40px !important; color: #000 !important; background: #fff !important; } + .pdf-title { font-size: 24px !important; font-weight: bold !important; margin-bottom: 20px !important; text-align: center !important; } + .pdf-timeline { margin-top: 20px; } + .pdf-location-card { border: 1px solid #e5e7eb; padding: 15px; border-radius: 12px; margin-bottom: 15px; background: #fafafa; } + .pdf-leg-header { font-size: 16px; font-weight: bold; margin-top: 25px; margin-bottom: 10px; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; } + `; + document.head.appendChild(style); + + const element = document.createElement('div'); + element.className = 'pdf-container font-sans text-black bg-white'; + + const titleEl = document.createElement('h1'); + titleEl.className = 'pdf-title'; + titleEl.innerText = `Hành Trình: ${currentTour?.title || 'Tour Itinerary'}`; + element.appendChild(titleEl); + + const subEl = document.createElement('div'); + subEl.style.textAlign = 'center'; + subEl.style.marginBottom = '30px'; + subEl.style.fontSize = '12px'; + subEl.style.color = '#555'; + subEl.innerText = `Thời gian: ${currentTour?.startDate ? new Date(currentTour.startDate).toLocaleDateString('vi-VN') : ''} - ${currentTour?.endDate ? new Date(currentTour.endDate).toLocaleDateString('vi-VN') : ''}`; + element.appendChild(subEl); + + const printDom = document.getElementById('itinerary-timeline-print-zone'); + if (printDom) { + const clone = printDom.cloneNode(true) as HTMLElement; + + // Clean clone layout by removing action buttons and interactive inputs, expenses + clone.querySelectorAll('button, input, textarea, .pdf-exclude, .expense-badge, .paid-by-badge, .comment-section, .location-actions, .mt-2.text-indigo-650, .flex.gap-2.mt-2').forEach(el => { + el.remove(); + }); + + // Clear styles or apply simple standard styles so PDF generation is clean + clone.style.background = 'white'; + clone.style.color = 'black'; + + element.appendChild(clone); + } else { + notify({ title: 'Lỗi', message: 'Không tìm thấy vùng hiển thị lịch trình để xuất PDF.', type: 'error' }); + document.head.removeChild(style); + return; + } + + const opt = { + margin: 10, + filename: `Lich_trinh_${currentTour?.title || 'tour'}.pdf`, + image: { type: 'jpeg', quality: 0.98 }, + html2canvas: { scale: 2, useCORS: true }, + jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' } + }; + + try { + notify({ title: 'Đang tạo PDF...', message: 'Vui lòng chờ trong giây lát.', type: 'info' }); + await (window as any).html2pdf().from(element).set(opt).save(); + notify({ title: 'Thành công', message: 'Lịch trình đã được xuất ra tập tin PDF thành công.', type: 'success' }); + } catch (err) { + console.error(err); + notify({ title: 'Lỗi', message: 'Không thể xuất PDF lịch trình.', type: 'error' }); + } finally { + document.head.removeChild(style); + } + }; + + useEffect(() => { + fetchShareStatus(); + }, [tourId]); + // State cho vị trí và hướng của người dùng @@ -834,8 +1020,6 @@ export const TourDetailPage = ({ const rejectJoinRequest = useTourStore(state => state.rejectJoinRequest); const deleteTour = useTourStore(state => state.deleteTour); - const confirm = useConfirm(); - const notify = useNotification(); // Khôi phục vị trí và mức zoom từ localStorage const [initialViewState] = useState(() => { @@ -1071,8 +1255,8 @@ export const TourDetailPage = ({ const handleNavigateToLocation = (location: any) => { setMapCenter([location.latitude, location.longitude]); + setViewMode('map'); setLocateTrigger(prev => prev + 1); - setIsMapFullscreen(true); notify({ title: 'Bắt đầu chỉ đường', @@ -1784,21 +1968,30 @@ export const TourDetailPage = ({ {activeTab === 'plan' && (
{/* View Mode Toggle */} -
-
+
+
+
+
+ +
{viewMode === 'timeline' ? ( @@ -2538,6 +2731,54 @@ export const TourDetailPage = ({
+ {/* Emergency Sharing Settings */} +
+
+
+ 🚨 +
+

{t('emergencyShare')}

+

{t('emergencyShareTooltip')}

+
+
+ {shareStatus && ( + + )} +
+ + {shareStatus?.isEnabled && ( +
+
Đường dẫn chia sẻ khẩn cấp:
+
+ + +
+
+ )} +
+ {canEdit && (
@@ -2930,6 +3171,20 @@ export const TourDetailPage = ({ )}
+ + {!isPublicView && currentUser && selectedMember && (selectedMember.userId || selectedMember.user?.id) && currentUser.id !== (selectedMember.userId || selectedMember.user?.id) && (selectedMember.role === 'OWNER' || selectedMember.role === 'MANAGER') && ( + + )} + {canEdit && selectedMember.role !== 'OWNER' && (
)} + + {/* Organizer Rating Modal */} + {isRatingModalOpen && ratingTargetUser && ( +
+
setIsRatingModalOpen(false)} /> +
+
+

+ ⭐ {t('rateTitle') || 'Đánh giá Người tạo Tour'} +

+ +
+ +
+
+ {ratingTargetUser.avatar ? ( + Avatar + ) : ( + {ratingTargetUser.user?.name?.charAt(0) || ratingTargetUser.displayName?.charAt(0) || '?'} + )} +
+
+
{ratingTargetUser.user?.name || ratingTargetUser.displayName}
+
{ratingTargetUser.role}
+
+
+ +
+ {[ + { key: 'honesty', label: t('honesty') || 'Trung thực' }, + { key: 'transparency', label: t('transparency') || 'Minh bạch' }, + { key: 'enthusiasm', label: t('enthusiasm') || 'Nhiệt tình' }, + { key: 'cheerfulness', label: t('cheerfulness') || 'Vui vẻ' }, + { key: 'seriousness', label: t('seriousness') || 'Nghiêm túc' }, + { key: 'planning', label: t('planning') || 'Có kế hoạch' }, + { key: 'survival', label: t('survival') || 'Kỹ năng sinh tồn' } + ].map((c) => ( +
+ {c.label} +
+ {[1, 2, 3, 4, 5].map((star) => { + const currentVal = (ratingScores as any)[c.key]; + return ( + + ); + })} +
+
+ ))} + +
+ +