![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/public_html/scripts/ |
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function seedSubscriptionPlans() {
console.log('🌱 Seeding subscription plans...');
try {
// Clear existing plans
await prisma.subscriptionPlan.deleteMany();
// Create sample subscription plans
const plans = [
{
name: 'Basic',
description: 'Perfect for solo practitioners and small law firms',
price: 29.99,
currency: 'CAD',
billingCycle: 'MONTHLY',
features: JSON.stringify([
'Up to 10 active cases',
'Basic case management',
'Client communication tools',
'Document storage (1GB)',
'Email support'
]),
maxCases: 10,
maxUsers: 10,
maxTeamMembers: 2,
advancedAnalytics: false,
prioritySupport: false,
customBranding: false,
apiAccess: false,
societyDiscount: 0.0,
xpMultiplier: 1.0,
sortOrder: 1,
isActive: true
},
{
name: 'Professional',
description: 'Ideal for growing law firms and legal teams',
price: 79.99,
currency: 'CAD',
billingCycle: 'MONTHLY',
features: JSON.stringify([
'Up to 50 active cases',
'Advanced case management',
'Team collaboration tools',
'Document storage (10GB)',
'Advanced analytics',
'Priority support',
'Custom branding',
'API access'
]),
maxCases: 50,
maxUsers: 50,
maxTeamMembers: 10,
advancedAnalytics: true,
prioritySupport: true,
customBranding: true,
apiAccess: true,
societyDiscount: 0.1, // 10% discount
xpMultiplier: 1.5,
sortOrder: 2,
isActive: true
},
{
name: 'Premium',
description: 'Enterprise-grade solution for large law firms',
price: 199.99,
currency: 'CAD',
billingCycle: 'MONTHLY',
features: JSON.stringify([
'Unlimited active cases',
'Enterprise case management',
'Advanced team collaboration',
'Unlimited document storage',
'Advanced analytics & reporting',
'24/7 priority support',
'Full custom branding',
'Full API access',
'Dedicated account manager',
'Custom integrations'
]),
maxCases: 999999,
maxUsers: 999999,
maxTeamMembers: 100,
advancedAnalytics: true,
prioritySupport: true,
customBranding: true,
apiAccess: true,
societyDiscount: 0.2, // 20% discount
xpMultiplier: 2.0,
sortOrder: 3,
isActive: true
},
{
name: 'Basic Annual',
description: 'Basic plan with annual billing (2 months free)',
price: 299.99,
currency: 'CAD',
billingCycle: 'YEARLY',
features: JSON.stringify([
'Up to 10 active cases',
'Basic case management',
'Client communication tools',
'Document storage (1GB)',
'Email support',
'2 months free with annual billing'
]),
maxCases: 10,
maxUsers: 10,
maxTeamMembers: 2,
advancedAnalytics: false,
prioritySupport: false,
customBranding: false,
apiAccess: false,
societyDiscount: 0.0,
xpMultiplier: 1.0,
sortOrder: 4,
isActive: true
},
{
name: 'Professional Annual',
description: 'Professional plan with annual billing (2 months free)',
price: 799.99,
currency: 'CAD',
billingCycle: 'YEARLY',
features: JSON.stringify([
'Up to 50 active cases',
'Advanced case management',
'Team collaboration tools',
'Document storage (10GB)',
'Advanced analytics',
'Priority support',
'Custom branding',
'API access',
'2 months free with annual billing'
]),
maxCases: 50,
maxUsers: 50,
maxTeamMembers: 10,
advancedAnalytics: true,
prioritySupport: true,
customBranding: true,
apiAccess: true,
societyDiscount: 0.1,
xpMultiplier: 1.5,
sortOrder: 5,
isActive: true
}
];
for (const plan of plans) {
await prisma.subscriptionPlan.create({
data: plan
});
}
console.log('✅ Subscription plans seeded successfully!');
console.log(`Created ${plans.length} subscription plans:`);
plans.forEach(plan => {
console.log(` - ${plan.name}: ${plan.price} ${plan.currency}/${plan.billingCycle.toLowerCase()}`);
});
} catch (error) {
console.error('❌ Error seeding subscription plans:', error);
} finally {
await prisma.$disconnect();
}
}
// Run the seed function
seedSubscriptionPlans();