![]() 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.quebec/private_html/scripts/ |
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function assignUsersToTracks() {
console.log('šÆ Assigning users to society tracks...');
try {
// Get all users
const allUsers = await prisma.user.findMany({
include: {
degrees: {
include: {
degree: true
}
}
}
});
console.log(`š„ Found ${allUsers.length} users:`);
// Get first degrees for each track
const firstLawyerDegree = await prisma.societyDegree.findFirst({
where: { degreeNumber: 1, track: 'LAWYER' }
});
const firstClientDegree = await prisma.societyDegree.findFirst({
where: { degreeNumber: 1, track: 'CLIENT' }
});
for (const user of allUsers) {
console.log(`\nš¤ Processing ${user.email} (${user.role}):`);
// Check if user already has degrees
const existingDegrees = user.degrees;
console.log(` Current degrees: ${existingDegrees.length}`);
// Assign based on role
if (user.role === 'LAWYER' || user.role === 'ADMIN' || user.role === 'SUPERADMIN') {
// Lawyers, admins get lawyer track
const hasLawyerDegree = existingDegrees.some(ud => ud.degree.track === 'LAWYER');
if (!hasLawyerDegree && firstLawyerDegree) {
await prisma.userDegree.create({
data: {
userId: user.id,
degreeId: firstLawyerDegree.id,
achievedAt: new Date(),
ceremonyCompleted: true,
progressPercentage: 100
}
});
console.log(` ā
Assigned to LAWYER track (Degree 1)`);
} else {
console.log(` ā¹ļø Already has LAWYER track degree`);
}
// Also assign client track for cross-track participation
const hasClientDegree = existingDegrees.some(ud => ud.degree.track === 'CLIENT');
if (!hasClientDegree && firstClientDegree) {
await prisma.userDegree.create({
data: {
userId: user.id,
degreeId: firstClientDegree.id,
achievedAt: new Date(),
ceremonyCompleted: true,
progressPercentage: 100
}
});
console.log(` ā
Also assigned to CLIENT track (Degree 1) for cross-participation`);
}
} else {
// Regular users get client track
const hasClientDegree = existingDegrees.some(ud => ud.degree.track === 'CLIENT');
if (!hasClientDegree && firstClientDegree) {
await prisma.userDegree.create({
data: {
userId: user.id,
degreeId: firstClientDegree.id,
achievedAt: new Date(),
ceremonyCompleted: true,
progressPercentage: 100
}
});
console.log(` ā
Assigned to CLIENT track (Degree 1)`);
} else {
console.log(` ā¹ļø Already has CLIENT track degree`);
}
}
}
// Assign all users to appropriate lodges
console.log('\nšļø Assigning lodge memberships...');
const civicLodge = await prisma.lodge.findFirst({
where: { track: 'CLIENT', lodgeLevel: 'CIVIC' }
});
const blueLodge = await prisma.lodge.findFirst({
where: { track: 'LAWYER', lodgeLevel: 'BLUE' }
});
for (const user of allUsers) {
if (user.role === 'LAWYER' || user.role === 'ADMIN' || user.role === 'SUPERADMIN') {
// Add to both Blue Lodge (lawyer) and Civic Lodge (client participation)
if (blueLodge) {
const existingMembership = await prisma.lodgeMembership.findFirst({
where: { userId: user.id, lodgeId: blueLodge.id }
});
if (!existingMembership) {
await prisma.lodgeMembership.create({
data: {
userId: user.id,
lodgeId: blueLodge.id,
joinedDate: new Date(),
isActive: true
}
});
console.log(` šØāāļø Added ${user.email} to Blue Lodge`);
}
}
if (civicLodge) {
const existingMembership = await prisma.lodgeMembership.findFirst({
where: { userId: user.id, lodgeId: civicLodge.id }
});
if (!existingMembership) {
await prisma.lodgeMembership.create({
data: {
userId: user.id,
lodgeId: civicLodge.id,
joinedDate: new Date(),
isActive: true
}
});
console.log(` š„ Added ${user.email} to Civic Lodge`);
}
}
} else {
// Regular users get Civic Lodge
if (civicLodge) {
const existingMembership = await prisma.lodgeMembership.findFirst({
where: { userId: user.id, lodgeId: civicLodge.id }
});
if (!existingMembership) {
await prisma.lodgeMembership.create({
data: {
userId: user.id,
lodgeId: civicLodge.id,
joinedDate: new Date(),
isActive: true
}
});
console.log(` š„ Added ${user.email} to Civic Lodge`);
}
}
}
}
console.log('\n⨠Track assignment completed!');
} catch (error) {
console.error('ā Error assigning tracks:', error);
throw error;
} finally {
await prisma.$disconnect();
}
}
assignUsersToTracks();