From 95f620d745f14941e393601faec55139f7805213 Mon Sep 17 00:00:00 2001 From: 0xaldric Date: Mon, 16 Mar 2026 17:13:22 +0700 Subject: [PATCH 1/2] feat: update regulations --- src/modules/campaign/dto/create-campaign.dto.ts | 5 +++++ src/modules/campaign/schemas/campaign.schema.ts | 3 +++ src/modules/upload/upload.service.ts | 3 ++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/campaign/dto/create-campaign.dto.ts b/src/modules/campaign/dto/create-campaign.dto.ts index 475f9c7..7aff343 100644 --- a/src/modules/campaign/dto/create-campaign.dto.ts +++ b/src/modules/campaign/dto/create-campaign.dto.ts @@ -76,6 +76,11 @@ export class CreateCampaignDto { @IsString() regulationsUrl?: string; + @ApiPropertyOptional({ description: 'Nội dung thể lệ (Markdown)' }) + @IsOptional() + @IsString() + regulations?: string; + @ApiPropertyOptional({ description: 'Link fanpage' }) @IsOptional() @IsString() diff --git a/src/modules/campaign/schemas/campaign.schema.ts b/src/modules/campaign/schemas/campaign.schema.ts index a2f5d9c..2c57b43 100644 --- a/src/modules/campaign/schemas/campaign.schema.ts +++ b/src/modules/campaign/schemas/campaign.schema.ts @@ -51,6 +51,9 @@ export class Campaign { @Prop() regulationsUrl: string; + @Prop({ type: String }) + regulations: string; + @Prop() fanpageUrl: string; diff --git a/src/modules/upload/upload.service.ts b/src/modules/upload/upload.service.ts index b6ccc76..bfce4ba 100644 --- a/src/modules/upload/upload.service.ts +++ b/src/modules/upload/upload.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, BadRequestException } from '@nestjs/common'; import { S3Client, PutObjectCommand, @@ -13,6 +13,7 @@ export class UploadService { constructor(private readonly s3Client: S3Client) {} async uploadFile(file: Express.Multer.File): Promise { + if (!file) throw new BadRequestException('No file uploaded. Send as multipart/form-data with field name "file"'); try { const randomString = Math.random().toString(36).substring(2, 15); const now = new Date(); From c3c306cfec189a6b9ec8ae0b58ec690cfc8a5051 Mon Sep 17 00:00:00 2001 From: 0xaldric Date: Mon, 16 Mar 2026 17:24:01 +0700 Subject: [PATCH 2/2] feat: update public --- src/modules/campaign/campaign.service.ts | 1 + src/modules/campaign/dto/campaign-public-response.dto.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/modules/campaign/campaign.service.ts b/src/modules/campaign/campaign.service.ts index e54355e..6457a83 100644 --- a/src/modules/campaign/campaign.service.ts +++ b/src/modules/campaign/campaign.service.ts @@ -111,6 +111,7 @@ export class CampaignService { zaloGroupUrl: obj.zaloGroupUrl, hotline: obj.hotline, regulationsUrl: obj.regulationsUrl, + regulations: obj.regulations, fanpageUrl: obj.fanpageUrl, sizeShirtOptions: obj.sizeShirtOptions || [], createdAt: obj.createdAt, diff --git a/src/modules/campaign/dto/campaign-public-response.dto.ts b/src/modules/campaign/dto/campaign-public-response.dto.ts index b1b7cd7..fc0c1b8 100644 --- a/src/modules/campaign/dto/campaign-public-response.dto.ts +++ b/src/modules/campaign/dto/campaign-public-response.dto.ts @@ -55,6 +55,9 @@ export class CampaignPublicResponseDto { @ApiPropertyOptional({ example: 'https://example.com/regulations.pdf', description: 'Link điều lệ' }) regulationsUrl?: string; + @ApiPropertyOptional({ example: '## Thể lệ\n- Điều 1: ...', description: 'Nội dung thể lệ (Markdown)' }) + regulations?: string; + @ApiPropertyOptional({ example: 'https://facebook.com/5bib', description: 'Link fanpage' }) fanpageUrl?: string;