customer creation now pointing to velocity

This commit is contained in:
2026-05-29 15:13:09 +02:00
parent 77b53a8bf0
commit 0bb63055a9
80 changed files with 1354 additions and 1984 deletions

View File

@@ -0,0 +1,103 @@
package zw.qantra.tm.seeders;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import zw.qantra.tm.domain.models.Provider;
import zw.qantra.tm.domain.repositories.ProviderRepository;
import zw.qantra.tm.utils.Utils;
import java.util.Arrays;
import java.util.List;
/**
* Seeds Provider entities.
* Priority: 4th - Must run after CategorySeeder (providers reference categories).
* Only seeds entities that don't already exist (checked by clientId).
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class ProviderSeeder implements Seeder {
private final ProviderRepository providerRepository;
@Override
public void seed() {
List<Provider> providers = Arrays.asList(
Provider.builder()
.name("Econet Airtime")
.description("Econet Airtime")
.clientId("econet_airtime")
.label("ECONET")
.category("AIRTIME")
.image("econet.png")
.externalId("78f1f497-c9eb-401c-b22c-884756e68e40")
.integrationProcessorLabel("HOT")
.accountFieldName("Phone Number")
.percentageCommission(5)
.requiresAccount(true)
.requiresAmount(true)
.requiresPhone(true)
.uid(Utils.getUid())
.build(),
Provider.builder()
.name("NetOne Airtime")
.description("NetOne Airtime")
.clientId("netone_usd_airtime")
.label("NETONE")
.category("AIRTIME")
.image("netone.png")
.externalId("95d485a7-39c9-4559-8a27-6521969abe8f")
.integrationProcessorLabel("HOT")
.accountFieldName("Phone Number")
.percentageCommission(5)
.requiresAccount(true)
.requiresAmount(true)
.requiresPhone(true)
.uid(Utils.getUid())
.build(),
Provider.builder()
.name("Zesa Prepaid")
.description("Prepaid Zesa")
.clientId("zesa_prepaid_usd")
.label("ZESA")
.category("UTILITIES")
.image("zesa.png")
.externalId("0f67f7cc-b62b-4fb5-915f-6740b2afdba6")
.integrationProcessorLabel("HOT")
.accountFieldName("Meter Number")
.percentageCommission(1.5)
.requiresAccount(true)
.requiresAmount(true)
.requiresPhone(true)
.uid(Utils.getUid())
.build(),
Provider.builder()
.name("Econet Bundles")
.description("Econet Bundles")
.clientId("econet_bundles_usd")
.label("ECONET_BUNDLES")
.category("AIRTIME")
.image("econet.png")
.externalId("287863e2-a791-4106-b629-79dadc9a6779")
.integrationProcessorLabel("HOT")
.accountFieldName("Phone Number")
.percentageCommission(5)
.requiresAccount(true)
.requiresAmount(false)
.requiresPhone(true)
.uid(Utils.getUid())
.build()
);
for (Provider provider : providers) {
if (providerRepository.existsByClientId(provider.getClientId())) {
log.info("Provider '{}' already exists, skipping.", provider.getClientId());
} else {
providerRepository.save(provider);
log.info("Provider '{}' seeded.", provider.getClientId());
}
}
}
}