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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.quebec/private_html/scripts/populate-test-data.js
��const { PrismaClient } = require('@prisma/client');

const bcrypt = require('bcryptjs');



const prisma = new PrismaClient();



async function hashPassword(password) {

  return await bcrypt.hash(password, 12);

}



async function main() {

  console.log('=؀� Starting comprehensive data population...');



  // 1. Create Law Firms

  console.log('=��� Creating law firms...');

  const adwFirm = await prisma.lawFirm.upsert({

    where: { name: 'ADW Avocats' },

    update: {},

    create: {

      name: 'ADW Avocats',

      shortName: 'ADW',

      address: '1234 Rue de la Justice',

      city: 'Montr�al',

      province: 'QC',

      postalCode: 'H2X 1Y2',

      phone: '+1 (514) 555-0123',

      email: 'info@adwavocats.ca',

      website: 'https://adwavocats.ca',

      description: 'Specialized in detention law and class action litigation',

      isVerified: true,

      logo: '/images/lawyers/adw-logo.svg'

    }

  });



  const otherFirm = await prisma.lawFirm.upsert({

    where: { name: 'Justice & Associates' },

    update: {},

    create: {

      name: 'Justice & Associates',

      shortName: 'J&A',

      address: '5678 Avenue des Droits',

      city: 'Qu�bec',

      province: 'QC',

      postalCode: 'G1R 2A3',

      phone: '+1 (418) 555-0456',

      email: 'contact@justiceassociates.ca',

      website: 'https://justiceassociates.ca',

      description: 'General practice with focus on civil rights',

      isVerified: true

    }

  });



  // 2. Create Users with different roles

  console.log('=�e� Creating users...');

  

  const superAdmin = await prisma.user.upsert({

    where: { email: 'dannywperez@msn.com' },

    update: {},

    create: {

      email: 'dannywperez@msn.com',

      name: 'Danny PEREZ',

      role: 'SUPERADMIN',

      password: await hashPassword('password123'),

      isVerified: true,

      profilePicture: '/images/lawyers/danny-perez.jpg'

    }

  });



  const admin = await prisma.user.upsert({

    where: { email: 'admin@adwavocats.ca' },

    update: {},

    create: {

      email: 'admin@adwavocats.ca',

      name: 'Admin User',

      role: 'ADMIN',

      password: await hashPassword('password123'),

      isVerified: true

    }

  });



  const lawyer1 = await prisma.user.upsert({

    where: { email: 'justin.wee@adwavocats.ca' },

    update: {},

    create: {

      email: 'justin.wee@adwavocats.ca',

      name: 'Justin Wee',

      role: 'LAWYER',

      password: await hashPassword('password123'),

      title: 'Senior Partner',

      specialization: 'Detention Law, Class Actions',

      lawFirmId: adwFirm.id,

      isVerified: true,

      profilePicture: '/images/lawyers/justin-wee.jpg',

      averageRating: 4.8,

      totalCases: 45,

      wonCases: 38,

      proBono: true,

      hourlyRate: 350

    }

  });



  const lawyer2 = await prisma.user.upsert({

    where: { email: 'audrey.labrecque@adwavocats.ca' },

    update: {},

    create: {

      email: 'audrey.labrecque@adwavocats.ca',

      name: 'Audrey Labrecque',

      role: 'LAWYER',

      password: await hashPassword('password123'),

      title: 'Partner',

      specialization: 'Civil Rights, Constitutional Law',

      lawFirmId: adwFirm.id,

      isVerified: true,

      profilePicture: '/images/lawyers/audrey-labrecque.jpg',

      averageRating: 4.9,

      totalCases: 32,

      wonCases: 28,

      proBono: true,

      hourlyRate: 320

    }

  });



  const secretary = await prisma.user.upsert({

    where: { email: 'secretary@adwavocats.ca' },

    update: {},

    create: {

      email: 'secretary@adwavocats.ca',

      name: 'Marie Secretary',

      role: 'SECRETARY',

      password: await hashPassword('password123'),

      lawFirmId: adwFirm.id,

      isVerified: true

    }

  });



  const client1 = await prisma.user.upsert({

    where: { email: 'client1@example.com' },

    update: {},

    create: {

      email: 'client1@example.com',

      name: 'Jean Client',

      role: 'USER',

      password: await hashPassword('password123'),

      isVerified: true

    }

  });



  const client2 = await prisma.user.upsert({

    where: { email: 'client2@example.com' },

    update: {},

    create: {

      email: 'client2@example.com',

      name: 'Marie Client',

      role: 'USER',

      password: await hashPassword('password123'),

      isVerified: true

    }

  });



  // 3. Create Legal Cases

  console.log('�&� Creating legal cases...');

  

  const case1 = await prisma.legalCase.create({

    data: {

      title: 'Bordeaux Detention Facility Class Action',

      description: 'Class action lawsuit against the Bordeaux detention facility for inhumane conditions and rights violations.',

      caseNumber: 'BOR-2024-001',

      caseType: 'CLASS_ACTION',

      jurisdiction: 'Quebec',

      court: 'Quebec Superior Court',

      leadLawyerId: lawyer1.id,

      firmName: 'ADW Avocats',

      filingDate: new Date('2024-01-15'),

      expectedDuration: 18,

      priority: 'HIGH',

      budget: 50000,

      status: 'ACTIVE',

      isAcceptingApplications: true,

      applicationDeadline: new Date('2024-12-31'),

      requiredDocuments: JSON.stringify(['ID', 'Proof of detention', 'Witness statements']),

      eligibilityCriteria: JSON.stringify(['Detained at Bordeaux facility', 'Between 2020-2024']),

      tags: JSON.stringify(['detention', 'class-action', 'human-rights', 'bordeaux']),

      createdBy: admin.id

    }

  });



  const case2 = await prisma.legalCase.create({

    data: {

      title: 'Rivi�re-des-Prairies Conditions Case',

      description: 'Individual case challenging the conditions at Rivi�re-des-Prairies detention facility.',

      caseNumber: 'RDP-2024-002',

      caseType: 'INDIVIDUAL',

      jurisdiction: 'Quebec',

      court: 'Quebec Superior Court',

      leadLawyerId: lawyer2.id,

      firmName: 'ADW Avocats',

      filingDate: new Date('2024-02-20'),

      expectedDuration: 12,

      priority: 'MEDIUM',

      budget: 25000,

      status: 'ACTIVE',

      isAcceptingApplications: false,

      tags: JSON.stringify(['detention', 'individual', 'conditions', 'riviere-des-prairies']),

      createdBy: admin.id

    }

  });



  const case3 = await prisma.legalCase.create({

    data: {

      title: 'Sherbrooke Facility Rights Violation',

      description: 'Class action for rights violations at Sherbrooke detention facility.',

      caseNumber: 'SHE-2024-003',

      caseType: 'CLASS_ACTION',

      jurisdiction: 'Quebec',

      court: 'Quebec Superior Court',

      leadLawyerId: lawyer1.id,

      firmName: 'ADW Avocats',

      filingDate: new Date('2024-03-10'),

      expectedDuration: 24,

      priority: 'HIGH',

      budget: 75000,

      status: 'PENDING',

      isAcceptingApplications: true,

      applicationDeadline: new Date('2025-06-30'),

      tags: JSON.stringify(['detention', 'class-action', 'rights-violation', 'sherbrooke']),

      createdBy: admin.id

    }

  });



  // 4. Create Registrations

  console.log('=��� Creating registrations...');

  

  const registration1 = await prisma.registration.create({

    data: {

      firstName: 'Jean',

      lastName: 'Dupont',

      email: 'jean.dupont@example.com',

      phone: '+1 (514) 555-0101',

      detaineeInfo: {

        name: 'Jean Dupont',

        facility: 'bordeaux',

        inmateId: 'BOR-2024-001'

      },

      status: 'APPROVED',

      reasonForJoining: 'I was detained at Bordeaux and experienced inhumane conditions',

      urgentNeeds: 'Medical attention for injuries sustained during detention',

      userId: client1.id,

      createdBy: client1.id

    }

  });



  const registration2 = await prisma.registration.create({

    data: {

      firstName: 'Marie',

      lastName: 'Tremblay',

      email: 'marie.tremblay@example.com',

      phone: '+1 (514) 555-0202',

      detaineeInfo: {

        name: 'Marie Tremblay',

        facility: 'riviere-des-prairies',

        inmateId: 'RDP-2024-002'

      },

      status: 'PENDING',

      reasonForJoining: 'Seeking justice for rights violations',

      urgentNeeds: 'Legal representation for ongoing case',

      userId: client2.id,

      createdBy: client2.id

    }

  });



  // 5. Create Case Assignments

  console.log('=�e� Creating case assignments...');

  

  await prisma.caseAssignment.create({

    data: {

      caseId: case1.id,

      userId: lawyer1.id,

      role: 'LEAD_LAWYER',

      isActive: true,

      assignedAt: new Date(),

      assignedBy: admin.id

    }

  });



  await prisma.caseAssignment.create({

    data: {

      caseId: case1.id,

      userId: lawyer2.id,

      role: 'SUPPORTING_LAWYER',

      isActive: true,

      assignedAt: new Date(),

      assignedBy: admin.id

    }

  });



  await prisma.caseAssignment.create({

    data: {

      caseId: case1.id,

      userId: secretary.id,

      role: 'SUPPORT_STAFF',

      isActive: true,

      assignedAt: new Date(),

      assignedBy: admin.id

    }

  });



  await prisma.caseAssignment.create({

    data: {

      caseId: case2.id,

      userId: lawyer2.id,

      role: 'LEAD_LAWYER',

      isActive: true,

      assignedAt: new Date(),

      assignedBy: admin.id

    }

  });



  // 6. Create Case Updates

  console.log('=��� Creating case updates...');

  

  await prisma.caseUpdate.create({

    data: {

      caseId: case1.id,

      title: 'Case Filed Successfully',

      description: 'The Bordeaux class action has been filed with the Quebec Superior Court. Initial hearing scheduled for next month.',

      updateType: 'PROCEDURAL',

      isPublic: true,

      createdBy: lawyer1.id

    }

  });



  await prisma.caseUpdate.create({

    data: {

      caseId: case1.id,

      title: 'New Evidence Discovered',

      description: 'Additional witness statements have been collected supporting the claims of inhumane conditions.',

      updateType: 'EVIDENCE',

      isPublic: false,

      createdBy: lawyer1.id

    }

  });



  await prisma.caseUpdate.create({

    data: {

      caseId: case2.id,

      title: 'Initial Consultation Completed',

      description: 'First meeting with the client completed. Case strategy has been developed.',

      updateType: 'PROCEDURAL',

      isPublic: true,

      createdBy: lawyer2.id

    }

  });



  // 7. Create Business Profiles

  console.log('<��� Creating business profiles...');

  

  await prisma.businessProfile.upsert({

    where: { userId: client1.id },

    update: {},

    create: {

      userId: client1.id,

      businessName: 'Dupont Consulting',

      businessType: 'CONSULTING',

      industry: 'Professional Services',

      description: 'Professional consulting services',

      website: 'https://dupontconsulting.ca',

      phone: '+1 (514) 555-0303',

      email: 'contact@dupontconsulting.ca',

      address: '1000 Rue de la Paix, Montr�al, QC',

      registrationNumber: 'QC123456789',

      employeeCount: 5,

      annualRevenue: 500000,

      isPublic: true,

      isVerified: true

    }

  });



  // 8. Create Documents

  console.log('=��� Creating documents...');

  

  await prisma.document.create({

    data: {

      name: 'Bordeaux Class Action Complaint',

      type: 'LEGAL_DOCUMENT',

      url: '/uploads/documents/bordeaux-complaint.pdf',

      mimeType: 'application/pdf',

      fileSize: 2048576,

      caseId: case1.id,

      uploadedBy: lawyer1.id,

      isPublic: false

    }

  });



  await prisma.document.create({

    data: {

      name: 'Witness Statement - Jean Dupont',

      type: 'WITNESS_STATEMENT',

      url: '/uploads/documents/witness-statement-dupont.pdf',

      mimeType: 'application/pdf',

      fileSize: 512000,

      caseId: case1.id,

      uploadedBy: client1.id,

      isPublic: false

    }

  });



  // 9. Create Public Notifications

  console.log('=��� Creating public notifications...');

  

  await prisma.publicNotification.create({

    data: {

      title: 'New Class Action Filed',

      content: 'ADW Avocats has filed a new class action against the Bordeaux detention facility. Affected individuals may be eligible to join.',

      type: 'ANNOUNCEMENT',

      priority: 'HIGH',

      isActive: true,

      createdBy: admin.id,

      targetAudience: 'ALL_USERS'

    }

  });



  await prisma.publicNotification.create({

    data: {

      title: 'Legal Aid Available',

      content: 'Free legal consultations available for detention-related cases. Contact us for more information.',

      type: 'SERVICE',

      priority: 'MEDIUM',

      isActive: true,

      createdBy: admin.id,

      targetAudience: 'DETAINEES'

    }

  });



  // 10. Create Newsletter Subscriptions

  console.log('=��� Creating newsletter subscriptions...');

  

  await prisma.newsletterSubscription.create({

    data: {

      email: 'client1@example.com',

      firstName: 'Jean',

      lastName: 'Dupont',

      isActive: true,

      preferences: JSON.stringify(['legal-updates', 'class-actions', 'detention-law'])

    }

  });



  await prisma.newsletterSubscription.create({

    data: {

      email: 'client2@example.com',

      firstName: 'Marie',

      lastName: 'Tremblay',

      isActive: true,

      preferences: JSON.stringify(['legal-updates', 'civil-rights'])

    }

  });



  // 11. Create Chat Messages

  console.log('=ج� Creating chat messages...');

  

  const generalRoom = await prisma.chatRoom.findFirst({

    where: { name: 'G�n�ral' }

  });



  if (generalRoom) {

    await prisma.message.create({

      data: {

        content: 'Welcome to the ADW Avocats platform! We\'re here to help with your legal needs.',

        type: 'TEXT',

        chatRoomId: generalRoom.id,

        userId: admin.id

      }

    });



    await prisma.message.create({

      data: {

        content: 'Thank you for the warm welcome! I\'m looking forward to working with your team.',

        type: 'TEXT',

        chatRoomId: generalRoom.id,

        userId: client1.id

      }

    });

  }



  console.log('' Data population completed successfully!');

  console.log('\n=��� Summary:');

  console.log(`- Law Firms: 2`);

  console.log(`- Users: 7 (SUPERADMIN, ADMIN, 2 LAWYERS, SECRETARY, 2 CLIENTS)`);

  console.log(`- Legal Cases: 3`);

  console.log(`- Registrations: 2`);

  console.log(`- Case Assignments: 4`);

  console.log(`- Case Updates: 3`);

  console.log(`- Business Profiles: 1`);

  console.log(`- Documents: 2`);

  console.log(`- Public Notifications: 2`);

  console.log(`- Newsletter Subscriptions: 2`);

  console.log(`- Chat Messages: 2`);

  

  console.log('\n=�� Test Accounts:');

  console.log('SUPERADMIN: dannywperez@msn.com / password123');

  console.log('ADMIN: admin@adwavocats.ca / password123');

  console.log('LAWYER 1: justin.wee@adwavocats.ca / password123');

  console.log('LAWYER 2: audrey.labrecque@adwavocats.ca / password123');

  console.log('SECRETARY: secretary@adwavocats.ca / password123');

  console.log('CLIENT 1: client1@example.com / password123');

  console.log('CLIENT 2: client2@example.com / password123');

}



main()

  .catch((e) => {

    console.error('L' Error during data population:', e);

    process.exit(1);

  })

  .finally(async () => {

    await prisma.$disconnect();

  });


CasperSecurity Mini