This commit is contained in:
2025-12-02 20:01:07 +03:30
parent e43727f1c6
commit 40442686be
24 changed files with 420 additions and 490 deletions
+72 -61
View File
@@ -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);
}
}
}
}