delivery
This commit is contained in:
@@ -11,8 +11,8 @@ import { User } from '../modules/users/entities/user.entity';
|
||||
import { Permission, PermissionTitles } from '../common/enums/permission.enum';
|
||||
import { PaymentMethod } from '../modules/payments/entities/payment-method.entity';
|
||||
import { RestaurantPaymentMethod } from '../modules/payments/entities/restaurant-payment-method.entity';
|
||||
import { ShipmentMethod } from '../modules/shipments/entities/shipment-method.entity';
|
||||
import { RestaurantShipmentMethod } from '../modules/shipments/entities/restaurant-shipment-method.entity';
|
||||
import { Delivery } from '../modules/delivery/entities/delivery.entity';
|
||||
import { DeliveryName } from '../modules/delivery/interface/delivery';
|
||||
import { Schedule } from '../modules/restaurants/entities/schedule.entity';
|
||||
|
||||
export class DatabaseSeeder extends Seeder {
|
||||
@@ -150,52 +150,7 @@ export class DatabaseSeeder extends Seeder {
|
||||
|
||||
await em.flush();
|
||||
|
||||
// 4. Create Shipment Methods (Farsi)
|
||||
const shipmentMethods = [
|
||||
{
|
||||
name: 'dine-in',
|
||||
title: 'سرو در رستوران',
|
||||
description: 'سرو غذا در رستوران',
|
||||
isActive: true,
|
||||
},
|
||||
{
|
||||
name: 'delivery-location',
|
||||
title: 'تحویل در محل',
|
||||
description: 'تحویل غذا در محل',
|
||||
isActive: true,
|
||||
},
|
||||
{
|
||||
name: 'delivery-car',
|
||||
title: 'تحویل با ماشین',
|
||||
description: 'تحویل غذا با ماشین',
|
||||
isActive: true,
|
||||
},
|
||||
{
|
||||
name: 'delivery-courier',
|
||||
title: 'تحویل با پیک',
|
||||
description: 'تحویل غذا با پیک',
|
||||
isActive: true,
|
||||
},
|
||||
];
|
||||
|
||||
const createdShipmentMethods: ShipmentMethod[] = [];
|
||||
for (const methodData of shipmentMethods) {
|
||||
let shipmentMethod = await em.findOne(ShipmentMethod, { name: methodData.name });
|
||||
if (!shipmentMethod) {
|
||||
shipmentMethod = em.create(ShipmentMethod, methodData);
|
||||
em.persist(shipmentMethod);
|
||||
} else {
|
||||
// Update existing method if needed
|
||||
if (shipmentMethod.title !== methodData.title || shipmentMethod.description !== methodData.description) {
|
||||
shipmentMethod.title = methodData.title;
|
||||
shipmentMethod.description = methodData.description;
|
||||
em.persist(shipmentMethod);
|
||||
}
|
||||
}
|
||||
createdShipmentMethods.push(shipmentMethod);
|
||||
}
|
||||
|
||||
await em.flush();
|
||||
// 4. Delivery methods will be created per restaurant (see section 5.5.5)
|
||||
|
||||
// 5. Create Restaurants (Farsi)
|
||||
const zhivanRestaurant = await em.findOne(Restaurant, { slug: 'zhivan' });
|
||||
@@ -276,28 +231,84 @@ export class DatabaseSeeder extends Seeder {
|
||||
|
||||
await em.flush();
|
||||
|
||||
// 5.5.5. Create Restaurant Shipment Methods
|
||||
const allRestaurantsForShipments = await em.find(Restaurant, {});
|
||||
const allShipmentMethods = await em.find(ShipmentMethod, { isActive: true });
|
||||
// 5.5.5. Create Delivery Methods for Restaurants
|
||||
const allRestaurantsForDeliveries = await em.find(Restaurant, {});
|
||||
const deliveryMethodsData = [
|
||||
{
|
||||
name: DeliveryName.DineIn,
|
||||
title: 'سرو در رستوران',
|
||||
description: 'سرو غذا در رستوران',
|
||||
deliveryFee: 0,
|
||||
minOrderPrice: 0,
|
||||
enabled: true,
|
||||
order: 1,
|
||||
},
|
||||
{
|
||||
name: DeliveryName.Pickup,
|
||||
title: 'تحویل در رستوران',
|
||||
description: 'تحویل غذا در محل',
|
||||
deliveryFee: 0,
|
||||
minOrderPrice: 0,
|
||||
enabled: true,
|
||||
order: 2,
|
||||
},
|
||||
{
|
||||
name: DeliveryName.DeliveryCar,
|
||||
title: 'تحویل با ماشین',
|
||||
description: 'تحویل غذا با ماشین',
|
||||
deliveryFee: 5000,
|
||||
minOrderPrice: 50000,
|
||||
enabled: true,
|
||||
order: 3,
|
||||
},
|
||||
{
|
||||
name: DeliveryName.DeliveryCourier,
|
||||
title: 'تحویل با پیک',
|
||||
description: 'تحویل غذا با پیک',
|
||||
deliveryFee: 10000,
|
||||
minOrderPrice: 100000,
|
||||
enabled: true,
|
||||
order: 4,
|
||||
},
|
||||
];
|
||||
|
||||
for (const restaurant of allRestaurantsForShipments) {
|
||||
for (const restaurant of allRestaurantsForDeliveries) {
|
||||
if (!restaurant) continue;
|
||||
|
||||
for (const shipmentMethod of allShipmentMethods) {
|
||||
const existing = await em.findOne(RestaurantShipmentMethod, {
|
||||
for (const methodData of deliveryMethodsData) {
|
||||
const existing = await em.findOne(Delivery, {
|
||||
restaurant: { id: restaurant.id },
|
||||
shipmentMethod: { id: shipmentMethod.id },
|
||||
name: methodData.name,
|
||||
});
|
||||
|
||||
if (!existing) {
|
||||
const restaurantShipmentMethod = em.create(RestaurantShipmentMethod, {
|
||||
const delivery = em.create(Delivery, {
|
||||
restaurant,
|
||||
shipmentMethod,
|
||||
isActive: true,
|
||||
price: 0,
|
||||
minOrderPrice: 0,
|
||||
name: methodData.name,
|
||||
title: methodData.title,
|
||||
description: methodData.description,
|
||||
deliveryFee: methodData.deliveryFee,
|
||||
minOrderPrice: methodData.minOrderPrice,
|
||||
enabled: methodData.enabled,
|
||||
order: methodData.order,
|
||||
});
|
||||
em.persist(restaurantShipmentMethod);
|
||||
em.persist(delivery);
|
||||
} else {
|
||||
// Update existing delivery method if needed
|
||||
if (
|
||||
existing.title !== methodData.title ||
|
||||
existing.description !== methodData.description ||
|
||||
existing.deliveryFee !== methodData.deliveryFee ||
|
||||
existing.minOrderPrice !== methodData.minOrderPrice ||
|
||||
existing.order !== methodData.order
|
||||
) {
|
||||
existing.title = methodData.title;
|
||||
existing.description = methodData.description;
|
||||
existing.deliveryFee = methodData.deliveryFee;
|
||||
existing.minOrderPrice = methodData.minOrderPrice;
|
||||
existing.order = methodData.order;
|
||||
em.persist(existing);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user