delivery update
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
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 { DeliveryMethodEnum } from '../interface/delivery';
|
import { DeliveryFeeTypeEnum, DeliveryMethodEnum } from '../interface/delivery';
|
||||||
|
|
||||||
export class CreateDeliveryDto {
|
export class CreateDeliveryDto {
|
||||||
@ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryMethodEnum })
|
@ApiProperty({ example: 'dineIn', description: 'Delivery method name', enum: DeliveryMethodEnum })
|
||||||
@@ -40,4 +40,25 @@ export class CreateDeliveryDto {
|
|||||||
@IsNumber()
|
@IsNumber()
|
||||||
@Type(() => Number)
|
@Type(() => Number)
|
||||||
order?: number;
|
order?: number;
|
||||||
|
|
||||||
|
@ApiPropertyOptional({ example: 0, description: 'Kilometer number' })
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@Type(() => Number)
|
||||||
|
kilometerNumber?: number;
|
||||||
|
|
||||||
|
@ApiPropertyOptional({ example: 0, description: 'Delivery fee for kilometer' })
|
||||||
|
@IsOptional()
|
||||||
|
@IsNumber()
|
||||||
|
@Type(() => Number)
|
||||||
|
deliveryFeeForKilometer?: number;
|
||||||
|
|
||||||
|
@ApiPropertyOptional({
|
||||||
|
example: DeliveryFeeTypeEnum.FIXED,
|
||||||
|
description: 'Delivery fee type',
|
||||||
|
enum: DeliveryFeeTypeEnum,
|
||||||
|
})
|
||||||
|
@IsOptional()
|
||||||
|
@IsEnum(DeliveryFeeTypeEnum)
|
||||||
|
deliveryFeeType!: DeliveryFeeTypeEnum;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
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 { DeliveryMethodEnum } from '../interface/delivery';
|
import { DeliveryFeeTypeEnum, DeliveryMethodEnum } from '../interface/delivery';
|
||||||
|
|
||||||
@Entity({ tableName: 'deliveries' })
|
@Entity({ tableName: 'deliveries' })
|
||||||
export class Delivery extends BaseEntity {
|
export class Delivery extends BaseEntity {
|
||||||
@@ -17,6 +17,15 @@ export class Delivery extends BaseEntity {
|
|||||||
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
||||||
deliveryFee: number = 0;
|
deliveryFee: number = 0;
|
||||||
|
|
||||||
|
@Enum(() => DeliveryFeeTypeEnum)
|
||||||
|
deliveryFeeType: DeliveryFeeTypeEnum = DeliveryFeeTypeEnum.FIXED;
|
||||||
|
|
||||||
|
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
||||||
|
kilometerNumber: number | null = null;
|
||||||
|
|
||||||
|
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
||||||
|
deliveryFeeForKilometer: number | null = null;
|
||||||
|
|
||||||
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
@Property({ type: 'decimal', precision: 10, scale: 0, default: 0 })
|
||||||
minOrderPrice: number = 0;
|
minOrderPrice: number = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -4,3 +4,8 @@ export enum DeliveryMethodEnum {
|
|||||||
DeliveryCar = 'deliveryCar',
|
DeliveryCar = 'deliveryCar',
|
||||||
DeliveryCourier = 'deliveryCourier',
|
DeliveryCourier = 'deliveryCourier',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum DeliveryFeeTypeEnum {
|
||||||
|
FIXED = 'fixed',
|
||||||
|
DISTANCE_BASED = 'distanceBased',
|
||||||
|
}
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ export class DeliveryService {
|
|||||||
description: createDto.description,
|
description: createDto.description,
|
||||||
enabled: createDto.enabled ?? true,
|
enabled: createDto.enabled ?? true,
|
||||||
order: createDto.order ?? 0,
|
order: createDto.order ?? 0,
|
||||||
|
deliveryFeeType: createDto.deliveryFeeType,
|
||||||
|
kilometerNumber: createDto.kilometerNumber,
|
||||||
|
deliveryFeeForKilometer: createDto.deliveryFeeForKilometer ?? 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
const delivery = this.deliveryRepository.create(data);
|
const delivery = this.deliveryRepository.create(data);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { EntityManager } from '@mikro-orm/core';
|
|||||||
import { Delivery } from '../modules/delivery/entities/delivery.entity';
|
import { Delivery } from '../modules/delivery/entities/delivery.entity';
|
||||||
import { Restaurant } from '../modules/restaurants/entities/restaurant.entity';
|
import { Restaurant } from '../modules/restaurants/entities/restaurant.entity';
|
||||||
import { deliveryMethodsData } from './data/delivery-methods.data';
|
import { deliveryMethodsData } from './data/delivery-methods.data';
|
||||||
|
import { DeliveryFeeTypeEnum } from 'src/modules/delivery/interface/delivery';
|
||||||
|
|
||||||
export class DeliveryMethodsSeeder {
|
export class DeliveryMethodsSeeder {
|
||||||
async run(em: EntityManager, restaurants: Restaurant[]): Promise<void> {
|
async run(em: EntityManager, restaurants: Restaurant[]): Promise<void> {
|
||||||
@@ -24,6 +25,9 @@ export class DeliveryMethodsSeeder {
|
|||||||
minOrderPrice: methodData.minOrderPrice,
|
minOrderPrice: methodData.minOrderPrice,
|
||||||
enabled: methodData.enabled,
|
enabled: methodData.enabled,
|
||||||
order: methodData.order,
|
order: methodData.order,
|
||||||
|
deliveryFeeType: DeliveryFeeTypeEnum.FIXED,
|
||||||
|
kilometerNumber: null,
|
||||||
|
deliveryFeeForKilometer: null,
|
||||||
});
|
});
|
||||||
em.persist(delivery);
|
em.persist(delivery);
|
||||||
} else {
|
} else {
|
||||||
@@ -49,4 +53,3 @@ export class DeliveryMethodsSeeder {
|
|||||||
await em.flush();
|
await em.flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user