This commit is contained in:
2025-12-02 23:32:26 +03:30
parent 327eb9c6a9
commit be823550ad
8 changed files with 27 additions and 33 deletions
+5
View File
@@ -17,6 +17,11 @@ export function getSwaggerConfig(app: INestApplication) {
displayRequestDuration: true, displayRequestDuration: true,
filter: true, filter: true,
showExtensions: true, showExtensions: true,
docExpansion: 'none',
// HIDE MODELS / SCHEMAS
defaultModelsExpandDepth: -1,
defaultModelExpandDepth: -1,
}, },
}); });
} }
@@ -34,15 +34,6 @@ export class DeliveryController {
return this.deliveryService.findAllForRestaurantId(restId); return this.deliveryService.findAllForRestaurantId(restId);
} }
@Get('admin/delivery-methods')
@ApiOperation({ summary: 'Get all delivery method names' })
@ApiOkResponse({
description: 'List of delivery method names',
})
findAll() {
return this.deliveryService.findAll();
}
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@ApiBearerAuth() @ApiBearerAuth()
@Post('admin/delivery-methods/restaurant') @Post('admin/delivery-methods/restaurant')
@@ -1,12 +1,12 @@
import { IsNumber, IsBoolean, IsOptional, IsString, Min, IsEnum } from 'class-validator'; import { IsNumber, IsBoolean, IsOptional, IsString, Min, IsEnum } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer'; import { Type } from 'class-transformer';
import { DeliveryName } from '../interface/delivery'; import { DeliveryMethodEnum } from '../interface/delivery';
export class CreateDeliveryDto { export class CreateDeliveryDto {
@ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryName }) @ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryMethodEnum })
@IsEnum(DeliveryName) @IsEnum(DeliveryMethodEnum)
name!: DeliveryName; method!: DeliveryMethodEnum;
@ApiProperty({ example: 'سرو در رستوران', description: 'Delivery method title' }) @ApiProperty({ example: 'سرو در رستوران', description: 'Delivery method title' })
@IsString() @IsString()
@@ -41,4 +41,3 @@ export class CreateDeliveryDto {
@Type(() => Number) @Type(() => Number)
order?: number; order?: number;
} }
@@ -2,4 +2,3 @@ import { PartialType } from '@nestjs/swagger';
import { CreateDeliveryDto } from './create-delivery.dto'; import { CreateDeliveryDto } from './create-delivery.dto';
export class UpdateDeliveryDto extends PartialType(CreateDeliveryDto) {} export class UpdateDeliveryDto extends PartialType(CreateDeliveryDto) {}
@@ -1,15 +1,15 @@
import { Entity, Property, Enum, ManyToOne } from '@mikro-orm/core'; import { Entity, Property, Enum, ManyToOne } from '@mikro-orm/core';
import { BaseEntity } from '../../../common/entities/base.entity'; import { BaseEntity } from '../../../common/entities/base.entity';
import { Restaurant } from '../../restaurants/entities/restaurant.entity'; import { Restaurant } from '../../restaurants/entities/restaurant.entity';
import { DeliveryName } from '../interface/delivery'; import { DeliveryMethodEnum } from '../interface/delivery';
@Entity({ tableName: 'deliveries' }) @Entity({ tableName: 'deliveries' })
export class Delivery extends BaseEntity { export class Delivery extends BaseEntity {
@Property() @Property()
title!: string; title!: string;
@Enum(() => DeliveryName) @Enum(() => DeliveryMethodEnum)
name!: DeliveryName; method!: DeliveryMethodEnum;
@ManyToOne(() => Restaurant) @ManyToOne(() => Restaurant)
restaurant!: Restaurant; restaurant!: Restaurant;
+1 -1
View File
@@ -1,4 +1,4 @@
export enum DeliveryName { export enum DeliveryMethodEnum {
DineIn = 'dineIn', DineIn = 'dineIn',
Pickup = 'pickup', Pickup = 'pickup',
DeliveryCar = 'deliveryCar', DeliveryCar = 'deliveryCar',
@@ -5,7 +5,7 @@ import { DeliveryRepository } from '../repositories/delivery.repository';
import { CreateDeliveryDto } from '../dto/create-delivery.dto'; import { CreateDeliveryDto } from '../dto/create-delivery.dto';
import { UpdateDeliveryDto } from '../dto/update-delivery.dto'; import { UpdateDeliveryDto } from '../dto/update-delivery.dto';
import { RestRepository } from '../../restaurants/repositories/rest.repository'; import { RestRepository } from '../../restaurants/repositories/rest.repository';
import { DeliveryName } from '../interface/delivery'; import { DeliveryMethodEnum } from '../interface/delivery';
@Injectable() @Injectable()
export class DeliveryService { export class DeliveryService {
@@ -24,7 +24,7 @@ export class DeliveryService {
// Check if the delivery method with the same name already exists for this restaurant // Check if the delivery method with the same name already exists for this restaurant
const existing = await this.deliveryRepository.findOne({ const existing = await this.deliveryRepository.findOne({
restaurant: { id: restId }, restaurant: { id: restId },
name: createDto.name, method: createDto.method,
}); });
if (existing) { if (existing) {
@@ -33,7 +33,7 @@ export class DeliveryService {
const data: RequiredEntityData<Delivery> = { const data: RequiredEntityData<Delivery> = {
restaurant, restaurant,
name: createDto.name, method: createDto.method,
title: createDto.title, title: createDto.title,
deliveryFee: createDto.deliveryFee, deliveryFee: createDto.deliveryFee,
minOrderPrice: createDto.minOrderPrice, minOrderPrice: createDto.minOrderPrice,
@@ -75,10 +75,10 @@ export class DeliveryService {
} }
// If name is being updated, check for conflicts // If name is being updated, check for conflicts
if (updateDto.name !== undefined && updateDto.name !== delivery.name) { if (updateDto.method !== undefined && updateDto.method !== delivery.method) {
const existing = await this.deliveryRepository.findOne({ const existing = await this.deliveryRepository.findOne({
restaurant: { id: restId }, restaurant: { id: restId },
name: updateDto.name, method: updateDto.method,
id: { $ne: deliveryId }, id: { $ne: deliveryId },
}); });
@@ -106,7 +106,7 @@ export class DeliveryService {
await this.em.removeAndFlush(delivery); await this.em.removeAndFlush(delivery);
} }
findAll(): DeliveryName[] { findAll(): DeliveryMethodEnum[] {
return Object.values(DeliveryName); return Object.values(DeliveryMethodEnum);
} }
} }
+7 -7
View File
@@ -12,7 +12,7 @@ import { Permission, PermissionTitles } from '../common/enums/permission.enum';
import { PaymentMethod } from '../modules/payments/entities/payment-method.entity'; import { PaymentMethod } from '../modules/payments/entities/payment-method.entity';
import { PaymentMethodEnum, PaymentGatewayEnum } from '../modules/payments/interface/payment'; import { PaymentMethodEnum, PaymentGatewayEnum } from '../modules/payments/interface/payment';
import { Delivery } from '../modules/delivery/entities/delivery.entity'; import { Delivery } from '../modules/delivery/entities/delivery.entity';
import { DeliveryName } from '../modules/delivery/interface/delivery'; import { DeliveryMethodEnum } from '../modules/delivery/interface/delivery';
import { Schedule } from '../modules/restaurants/entities/schedule.entity'; import { Schedule } from '../modules/restaurants/entities/schedule.entity';
export class DatabaseSeeder extends Seeder { export class DatabaseSeeder extends Seeder {
@@ -235,7 +235,7 @@ export class DatabaseSeeder extends Seeder {
const allRestaurantsForDeliveries = await em.find(Restaurant, {}); const allRestaurantsForDeliveries = await em.find(Restaurant, {});
const deliveryMethodsData = [ const deliveryMethodsData = [
{ {
name: DeliveryName.DineIn, method: DeliveryMethodEnum.DineIn,
title: 'سرو در رستوران', title: 'سرو در رستوران',
description: 'سرو غذا در رستوران', description: 'سرو غذا در رستوران',
deliveryFee: 0, deliveryFee: 0,
@@ -244,7 +244,7 @@ export class DatabaseSeeder extends Seeder {
order: 1, order: 1,
}, },
{ {
name: DeliveryName.Pickup, method: DeliveryMethodEnum.Pickup,
title: 'تحویل در رستوران', title: 'تحویل در رستوران',
description: 'تحویل غذا در محل', description: 'تحویل غذا در محل',
deliveryFee: 0, deliveryFee: 0,
@@ -253,7 +253,7 @@ export class DatabaseSeeder extends Seeder {
order: 2, order: 2,
}, },
{ {
name: DeliveryName.DeliveryCar, method: DeliveryMethodEnum.DeliveryCar,
title: 'تحویل با ماشین', title: 'تحویل با ماشین',
description: 'تحویل غذا با ماشین', description: 'تحویل غذا با ماشین',
deliveryFee: 5000, deliveryFee: 5000,
@@ -262,7 +262,7 @@ export class DatabaseSeeder extends Seeder {
order: 3, order: 3,
}, },
{ {
name: DeliveryName.DeliveryCourier, method: DeliveryMethodEnum.DeliveryCourier,
title: 'تحویل با پیک', title: 'تحویل با پیک',
description: 'تحویل غذا با پیک', description: 'تحویل غذا با پیک',
deliveryFee: 10000, deliveryFee: 10000,
@@ -278,13 +278,13 @@ export class DatabaseSeeder extends Seeder {
for (const methodData of deliveryMethodsData) { for (const methodData of deliveryMethodsData) {
const existing = await em.findOne(Delivery, { const existing = await em.findOne(Delivery, {
restaurant: { id: restaurant.id }, restaurant: { id: restaurant.id },
name: methodData.name, method: methodData.method,
}); });
if (!existing) { if (!existing) {
const delivery = em.create(Delivery, { const delivery = em.create(Delivery, {
restaurant, restaurant,
name: methodData.name, method: methodData.method,
title: methodData.title, title: methodData.title,
description: methodData.description, description: methodData.description,
deliveryFee: methodData.deliveryFee, deliveryFee: methodData.deliveryFee,