From 008351acd2da0af47b30c491bf32c3306d44ca74 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 15 Nov 2025 12:01:57 +0330 Subject: [PATCH] fix schedule --- .../restaurants/dto/create-schedule.dto.ts | 16 +++++++++++----- .../restaurants/entities/schedule.entity.ts | 7 ++++--- .../restaurants/providers/schedule.service.ts | 11 +++++++---- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/modules/restaurants/dto/create-schedule.dto.ts b/src/modules/restaurants/dto/create-schedule.dto.ts index 7d4372b..c8734a0 100644 --- a/src/modules/restaurants/dto/create-schedule.dto.ts +++ b/src/modules/restaurants/dto/create-schedule.dto.ts @@ -1,11 +1,14 @@ -import { IsString, IsNumber, IsBoolean, IsOptional, Min, Max } from 'class-validator'; +import { IsNumber, IsBoolean, IsOptional, IsString, Min, Max } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; export class CreateScheduleDto { - @ApiProperty({ example: '2024-01-15', description: 'تاریخ برای برنامه' }) - @IsString() - date!: string; + @ApiProperty({ example: 1, description: 'روز هفته (۰=یکشنبه، ۶=شنبه)' }) + @IsNumber() + @Min(0) + @Max(6) + @Type(() => Number) + weekDay!: number; @ApiProperty({ example: 900, description: 'زمان باز شدن (دقیقه از نیمه شب)' }) @IsNumber() @@ -26,5 +29,8 @@ export class CreateScheduleDto { @IsBoolean() @Type(() => Boolean) isActive?: boolean; - + + @ApiProperty({ example: 'rest-ulid-123', description: 'شناسه رستوران' }) + @IsString() + restId!: string; } diff --git a/src/modules/restaurants/entities/schedule.entity.ts b/src/modules/restaurants/entities/schedule.entity.ts index a444e6a..3dee489 100644 --- a/src/modules/restaurants/entities/schedule.entity.ts +++ b/src/modules/restaurants/entities/schedule.entity.ts @@ -1,10 +1,11 @@ -import { Entity, Property } from '@mikro-orm/core'; +import { Entity, Property, Unique } from '@mikro-orm/core'; import { BaseEntity } from '../../../common/entities/base.entity'; @Entity({ tableName: 'schedules' }) +@Unique({ properties: ['restId', 'weekDay'] }) export class Schedule extends BaseEntity { - @Property({ type: 'date' }) - date!: Date; + @Property({ type: 'int' }) + weekDay!: number; @Property({ type: 'int' }) openTime!: number; diff --git a/src/modules/restaurants/providers/schedule.service.ts b/src/modules/restaurants/providers/schedule.service.ts index f5e8253..56e7581 100644 --- a/src/modules/restaurants/providers/schedule.service.ts +++ b/src/modules/restaurants/providers/schedule.service.ts @@ -17,11 +17,11 @@ export class ScheduleService { async create(createScheduleDto: CreateScheduleDto): Promise { const data: RequiredEntityData = { - date: new Date(createScheduleDto.date), + weekDay: createScheduleDto.weekDay, openTime: createScheduleDto.openTime, closeTime: createScheduleDto.closeTime, isActive: createScheduleDto.isActive ?? true, - restId: '01KA35CFFN0F6VA04DF0W6KCE3', + restId: createScheduleDto.restId, }; const schedule = this.scheduleRepository.create(data); @@ -49,8 +49,8 @@ export class ScheduleService { } const updateData: Partial = {}; - if (updateScheduleDto.date) { - updateData.date = new Date(updateScheduleDto.date); + if (updateScheduleDto.weekDay !== undefined) { + updateData.weekDay = updateScheduleDto.weekDay; } if (updateScheduleDto.openTime !== undefined) { updateData.openTime = updateScheduleDto.openTime; @@ -61,6 +61,9 @@ export class ScheduleService { if (updateScheduleDto.isActive !== undefined) { updateData.isActive = updateScheduleDto.isActive; } + if (updateScheduleDto.restId) { + updateData.restId = updateScheduleDto.restId; + } this.em.assign(schedule, updateData); await this.em.persistAndFlush(schedule);