T.ME/BIBIL_0DAY
CasperSecurity


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/private_html/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.ca/private_html/scripts/test-society-system.ts
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function testSocietySystem() {
  console.log('šŸ›ļø Testing Society of Brothers System...\n');

  try {
    // Test 1: Check degrees were created
    const allDegrees = await prisma.societyDegree.findMany({
      orderBy: { degreeNumber: 'asc' },
      select: {
        degreeNumber: true,
        name: true,
        title: true,
        xpRequired: true,
        lodgeLevel: true,
        isSecret: true,
        symbol: true
      }
    });

    console.log('šŸ“Š DEGREES CREATED:');
    console.log(`Total degrees: ${allDegrees.length}`);
    allDegrees.slice(0, 5).forEach(degree => {
      console.log(`  ${degree.degreeNumber}° ${degree.name} ${degree.symbol || ''}`);
      console.log(`    Title: ${degree.title || 'N/A'}`);
      console.log(`    XP Required: ${degree.xpRequired.toLocaleString()}`);
      console.log(`    Lodge: ${degree.lodgeLevel} ${degree.isSecret ? '(SECRET)' : ''}`);
      console.log('');
    });

    if (allDegrees.length > 5) {
      console.log(`  ... and ${allDegrees.length - 5} more degrees\n`);
    }

    // Test 2: Check lodges were created
    const allLodges = await prisma.lodge.findMany({
      select: {
        name: true,
        lodgeLevel: true,
        minimumDegree: true,
        currentMembers: true,
        isSecret: true,
        _count: {
          select: { memberships: true }
        }
      }
    });

    console.log('šŸ›ļø LODGES CREATED:');
    allLodges.forEach(lodge => {
      console.log(`  ${lodge.name}`);
      console.log(`    Level: ${lodge.lodgeLevel} ${lodge.isSecret ? '(SECRET)' : '(PUBLIC)'}`);
      console.log(`    Min Degree: ${lodge.minimumDegree}°`);
      console.log(`    Members: ${lodge._count.memberships}`);
      console.log('');
    });

    // Test 3: Check user degree assignments
    const userDegrees = await prisma.userDegree.findMany({
      include: {
        user: {
          select: {
            name: true,
            role: true,
            xpPoints: true
          }
        },
        degree: {
          select: {
            degreeNumber: true,
            name: true,
            symbol: true
          }
        }
      }
    });

    console.log('šŸ‘„ USER DEGREE ASSIGNMENTS:');
    console.log(`Total assignments: ${userDegrees.length}`);
    userDegrees.forEach(ud => {
      console.log(`  ${ud.user.name} (${ud.user.role})`);
      console.log(`    ${ud.degree.degreeNumber}° ${ud.degree.name} ${ud.degree.symbol || ''}`);
      console.log(`    XP: ${ud.user.xpPoints.toLocaleString()}`);
      console.log(`    Ceremony: ${ud.ceremonyCompleted ? 'āœ… Complete' : 'ā³ Pending'}`);
      console.log('');
    });

    // Test 4: Check lodge memberships
    const lodgeMemberships = await prisma.lodgeMembership.findMany({
      include: {
        user: {
          select: {
            name: true,
            role: true
          }
        },
        lodge: {
          select: {
            name: true,
            lodgeLevel: true
          }
        }
      }
    });

    console.log('šŸ›ļø LODGE MEMBERSHIPS:');
    console.log(`Total memberships: ${lodgeMemberships.length}`);
    const membershipsByLodge = lodgeMemberships.reduce((acc, membership) => {
      const lodgeName = membership.lodge.name;
      if (!acc[lodgeName]) {
        acc[lodgeName] = [];
      }
      acc[lodgeName].push(membership);
      return acc;
    }, {} as Record<string, typeof lodgeMemberships>);

    Object.entries(membershipsByLodge).forEach(([lodgeName, members]) => {
      console.log(`  ${lodgeName}:`);
      members.forEach(member => {
        console.log(`    ${member.user.name} (${member.role}) - ${member.user.role}`);
      });
      console.log('');
    });

    // Test 5: Check degree progression chain
    console.log('šŸ”— DEGREE PROGRESSION CHAIN:');
    const degreeWithProgression = await prisma.societyDegree.findMany({
      where: { degreeNumber: { lte: 5 } }, // Just check first 5
      include: {
        previousDegree: {
          select: {
            degreeNumber: true,
            name: true
          }
        }
      },
      orderBy: { degreeNumber: 'asc' }
    });

    degreeWithProgression.forEach(degree => {
      console.log(`  ${degree.degreeNumber}° ${degree.name}`);
      if (degree.previousDegree) {
        console.log(`    ā¬†ļø Previous: ${degree.previousDegree.degreeNumber}° ${degree.previousDegree.name}`);
      } else {
        console.log(`    šŸŽÆ Starting degree`);
      }
      console.log(`    ā±ļø Time requirement: ${degree.timeRequirement || 0} days`);
      console.log('');
    });

    // Test 6: Sample progression calculation
    console.log('šŸ“ˆ SAMPLE PROGRESSION CALCULATION:');
    const sampleUser = userDegrees[0];
    if (sampleUser) {
      console.log(`Testing progression for: ${sampleUser.user.name}`);
      
      const nextDegree = await prisma.societyDegree.findFirst({
        where: {
          degreeNumber: sampleUser.degree.degreeNumber + 1
        }
      });

      if (nextDegree) {
        const requirements = JSON.parse(nextDegree.requirements || '{}');
        console.log(`  Next degree: ${nextDegree.degreeNumber}° ${nextDegree.name}`);
        console.log(`  Requirements:`);
        Object.entries(requirements).forEach(([key, value]) => {
          if (typeof value === 'number' && value > 0) {
            console.log(`    ${key}: ${value}`);
          }
        });
        console.log(`  Current XP: ${sampleUser.user.xpPoints}`);
        console.log(`  XP Progress: ${((sampleUser.user.xpPoints / requirements.xp) * 100).toFixed(1)}%`);
      }
    }

    console.log('\nāœ… Society of Brothers System Test Complete!');

  } catch (error) {
    console.error('āŒ Error testing Society system:', error);
    throw error;
  }
}

async function main() {
  await testSocietySystem();
}

main()
  .catch((e) => {
    console.error(e);
    process.exit(1);
  })
  .finally(async () => {
    await prisma.$disconnect();
  }); 

CasperSecurity Mini