83 lines
3.2 KiB
TypeScript
83 lines
3.2 KiB
TypeScript
import type { EntityManager } from '@mikro-orm/core';
|
|
import { PaymentMethod } from '../modules/payments/entities/payment-method.entity';
|
|
import type { Restaurant } from '../modules/restaurants/entities/restaurant.entity';
|
|
import { paymentMethodsData } from './data/payment-methods.data';
|
|
|
|
export class PaymentMethodsSeeder {
|
|
async run(em: EntityManager, restaurants: Restaurant[]): Promise<void> {
|
|
for (const restaurant of restaurants) {
|
|
if (!restaurant) continue;
|
|
|
|
for (const methodData of paymentMethodsData) {
|
|
const existing = await em.findOne(PaymentMethod, {
|
|
restaurant: { id: restaurant.id },
|
|
method: methodData.method,
|
|
});
|
|
|
|
if (!existing) {
|
|
const paymentMethod = em.create(PaymentMethod, {
|
|
restaurant,
|
|
method: methodData.method,
|
|
description: methodData.description,
|
|
enabled: methodData.enabled,
|
|
order: methodData.order,
|
|
gateway: methodData.gateway,
|
|
cardNumber: methodData.cardNumber,
|
|
cardNumber2: methodData.cardNumber2,
|
|
cardNumber3: methodData.cardNumber3,
|
|
cardOwner: methodData.cardOwner,
|
|
cardOwner2: methodData.cardOwner2,
|
|
cardOwner3: methodData.cardOwner3,
|
|
merchantId: methodData.merchantId,
|
|
});
|
|
em.persist(paymentMethod);
|
|
} else {
|
|
// Update existing payment method if needed
|
|
if (
|
|
existing.description !== methodData.description ||
|
|
existing.enabled !== methodData.enabled ||
|
|
existing.order !== methodData.order ||
|
|
existing.cardNumber !== methodData.cardNumber ||
|
|
existing.cardNumber2 !== methodData.cardNumber2 ||
|
|
existing.cardNumber3 !== methodData.cardNumber3 ||
|
|
existing.cardOwner !== methodData.cardOwner ||
|
|
existing.cardOwner2 !== methodData.cardOwner2 ||
|
|
existing.cardOwner3 !== methodData.cardOwner3
|
|
) {
|
|
existing.description = methodData.description;
|
|
existing.enabled = methodData.enabled;
|
|
existing.order = methodData.order;
|
|
if (methodData.gateway !== undefined) {
|
|
existing.gateway = methodData.gateway;
|
|
}
|
|
if (methodData.cardNumber !== undefined) {
|
|
existing.cardNumber = methodData.cardNumber;
|
|
}
|
|
if (methodData.cardNumber2 !== undefined) {
|
|
existing.cardNumber2 = methodData.cardNumber2;
|
|
}
|
|
if (methodData.cardNumber3 !== undefined) {
|
|
existing.cardNumber3 = methodData.cardNumber3;
|
|
}
|
|
if (methodData.cardOwner !== undefined) {
|
|
existing.cardOwner = methodData.cardOwner;
|
|
}
|
|
if (methodData.cardOwner2 !== undefined) {
|
|
existing.cardOwner2 = methodData.cardOwner2;
|
|
}
|
|
if (methodData.cardOwner3 !== undefined) {
|
|
existing.cardOwner3 = methodData.cardOwner3;
|
|
}
|
|
if (methodData.merchantId !== undefined) {
|
|
existing.merchantId = methodData.merchantId;
|
|
}
|
|
em.persist(existing);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
await em.flush();
|
|
}
|
|
}
|