add & edit time rezerv

This commit is contained in:
2026-05-25 20:22:04 +03:30
parent a8c255a3a4
commit f9bce4d872
2 changed files with 16 additions and 12 deletions
+13 -3
View File
@@ -11,7 +11,10 @@ import { deleteBusinessCascade } from '../../common/utils/business-cascade.util'
import { resolveUniqueSlug, normalizeSlugInput } from '../../common/utils/slug.util';
import { BusinessImagesService } from './business-images.service';
import { BusinessCategoryEntity } from '../../entities/business-category.entity';
import { parseHmToMinute } from '../../common/utils/booking-schedule.util';
import {
normalizeHmTimeInput,
parseHmToMinute,
} from '../../common/utils/booking-schedule.util';
import { BusinessAvailabilitySlotEntity } from '../../entities/business-availability-slot.entity';
import { BusinessEntity } from '../../entities/business.entity';
import { UserEntity, UserRole } from '../../entities/user.entity';
@@ -176,8 +179,15 @@ export class BusinessesService {
const entities: BusinessAvailabilitySlotEntity[] = [];
for (const slot of dto.slots) {
const startMinute = parseHmToMinute(slot.startTime);
const endMinute = parseHmToMinute(slot.endTime);
const startTime = normalizeHmTimeInput(slot.startTime);
const endTime = normalizeHmTimeInput(slot.endTime);
if (!startTime || !endTime) {
throw new BadRequestException(
'ساعت باید به صورت HH:mm باشد (مثلاً 09:00)',
);
}
const startMinute = parseHmToMinute(startTime);
const endMinute = parseHmToMinute(endTime);
if (endMinute <= startMinute) {
throw new BadRequestException('endTime must be after startTime');
}
@@ -1,16 +1,14 @@
import { ApiProperty } from '@nestjs/swagger';
import { Transform, Type } from 'class-transformer';
import { Type } from 'class-transformer';
import {
ArrayMaxSize,
IsArray,
IsInt,
IsString,
Matches,
Max,
Min,
ValidateNested,
} from 'class-validator';
import { normalizeHmTimeInput } from '../../../common/utils/booking-schedule.util';
export class AvailabilitySlotDto {
@ApiProperty({ description: '0=شنبه … 6=جمعه', minimum: 0, maximum: 6 })
@@ -20,16 +18,12 @@ export class AvailabilitySlotDto {
@Max(6)
dayOfWeek!: number;
@ApiProperty({ example: '09:00' })
@Transform(({ value }) => normalizeHmTimeInput(value) ?? value)
@ApiProperty({ example: '09:00', description: 'HH:mm 24h (9:00 also accepted)' })
@IsString()
@Matches(/^([01]\d|2[0-3]):[0-5]\d]$/)
startTime!: string;
@ApiProperty({ example: '17:00' })
@Transform(({ value }) => normalizeHmTimeInput(value) ?? value)
@ApiProperty({ example: '17:00', description: 'HH:mm 24h (17:30 also accepted)' })
@IsString()
@Matches(/^([01]\d|2[0-3]):[0-5]\d]$/)
endTime!: string;
}