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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/lavocat.quebec/public_html/scripts/restore-adw-team.ts
// REQUIRED IMAGES: Place these in public/images/lawyers/
// alain-arsenault.jpg, justin-wee.jpg, virginie-dufresne-lemire.jpg, jerome-aucoin.jpg, audrey-labrecque.jpg, justine-monty.jpg, allison-jayne-bender.jpg, giovanni-borgia.jpg, nathalie-desjardins.jpg, antoine-duranleau-hendrickx.jpg, clautal-gravel.jpg, yael-hochet.jpg, antoine-laliberte.jpg, ivan-lazarov.jpg, yalda-machouf-khadir.jpg, olivia-malenfant.jpg, imane-melab.jpg, lyn-mouhajer.jpg, mmah-nora-toure.jpg

import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

async function main() {
  // 1. Delete all dependent records in the correct order
  await prisma.caseAssignment.deleteMany({});
  await prisma.caseOffer.deleteMany({});
  await prisma.lawyerRating.deleteMany({});
  await prisma.clientTestimonial.deleteMany({});
  await prisma.message.deleteMany({});
  await prisma.directMessage.deleteMany({});
  await prisma.privateMessage.deleteMany({});
  await prisma.chatParticipant.deleteMany({});
  await prisma.chatRoom.deleteMany({});
  await prisma.documentComment.deleteMany({});
  await prisma.documentVersion.deleteMany({});
  await prisma.documentCollaboration.deleteMany({});
  await prisma.document.deleteMany({});
  await prisma.registration.deleteMany({});
  await prisma.consultationBooking.deleteMany({});
  await prisma.calendarEvent.deleteMany({});
  await prisma.notification.deleteMany({});
  await prisma.paymentRefund.deleteMany({});
  await prisma.escrowAccount.deleteMany({});
  await prisma.payment.deleteMany({});
  await prisma.transaction.deleteMany({});
  await prisma.donation.deleteMany({});
  await prisma.userBadge.deleteMany({});
  await prisma.userAchievement.deleteMany({});
  await prisma.userDegree.deleteMany({});
  await prisma.userSubscription.deleteMany({});
  await prisma.themeProfile.deleteMany({});
  await prisma.automationRule.deleteMany({});
  await prisma.analyticsTracking.deleteMany({});
  await prisma.impersonationSession.deleteMany({});
  await prisma.lodgeMembership.deleteMany({});
  await prisma.mentorSession.deleteMany({});
  await prisma.brotherhoodMentorship.deleteMany({});
  await prisma.segmentMember.deleteMany({});
  await prisma.segment.deleteMany({});
  await prisma.statusNote.deleteMany({});
  await prisma.task.deleteMany({});
  await prisma.typingStatus.deleteMany({});
  await prisma.achievement.deleteMany({});
  await prisma.badge.deleteMany({});
  await prisma.courseEnrollment.deleteMany({});
  await prisma.course.deleteMany({});
  await prisma.lawResource.deleteMany({});
  await prisma.societyDegree.deleteMany({});
  await prisma.degreeCeremony.deleteMany({});
  await prisma.lodge.deleteMany({});
  await prisma.relationshipMilestone.deleteMany({});
  await prisma.caseSupport.deleteMany({});
  await prisma.clientLawyerRelationship.deleteMany({});
  await prisma.caseCompetitionParticipant.deleteMany({});
  await prisma.caseBid.deleteMany({});
  await prisma.assistantProfile.deleteMany({});
  await prisma.clerkProfile.deleteMany({});
  await prisma.caseComment.deleteMany({});
  // await prisma.lawyerRequest.deleteMany({});
  await prisma.legalCase.deleteMany({});
  await prisma.businessProfile.deleteMany({});
  await prisma.user.deleteMany({});
  await prisma.lawFirm.deleteMany({});

  // 2. Create ADW Avocats law firm
  const lawFirm = await prisma.lawFirm.create({
    data: {
      name: 'ADW Avocats',
      shortName: 'ADW',
      address: '3565, rue Berri, suite 240',
      city: 'Montréal',
      province: 'Québec',
      postalCode: 'H2L 4G3',
      phone: '(514) 527-8903',
      email: 'adw@adwavocats.com',
      website: 'https://www.adwavocats.com',
      barRegistration: 'ADW-2024-001',
      foundedYear: 1982,
      specializations: 'Litige civil, Violences sexuelles, Abus policiers et étatiques, Actions collectives',
      partnershipType: 'partner',
      isActive: true,
    },
  });

  // 3. Create Danny Perez (Bordeaux Prison Case creator)
  const dannyPerez = await prisma.user.create({
    data: {
      email: 'dannywperez@msn.com',
      name: 'Danny Perez',
      password: 'changeme123',
      role: 'REPRESENTATIVE',
      username: 'dannyperez',
      profilePicture: '/images/lawyers/danny-perez.jpg', // Add this image if you want a photo
      bio: 'Representative and initiator of the Bordeaux Prison Case.',
      title: 'Case Representative',
      specialization: 'Prisoner Rights',
      yearsOfExperience: 10,
      officeLocation: 'Montréal',
      workPhone: '',
      websiteUrl: '',
      availability: 'Sur rendez-vous',
      timezone: 'America/Toronto',
      pronouns: 'il/lui',
      isProfilePublic: true,
      hourlyRate: 0.0,
      proBono: true,
      averageRating: 5.0,
      isVerified: true,
      lawFirmId: lawFirm.id,
      status: 'ACTIVE',
    },
  });

  // 4. Create all ADW Avocats team members (sample for a few, add the rest similarly)
  const team = [
    {
      email: 'alain.arsenault@adwavocats.com',
      name: 'Alain Arsenault',
      password: 'changeme123',
      role: 'LAWYER',
      username: 'alainarsenault',
      profilePicture: '/images/lawyers/alain-arsenault.jpg',
      bio: 'En 1982, membre de la Ligue des droits et libertés, il a joué un rôle clé dans l’Enquête sur la discrimination raciale dans l’industrie du taxi à Montréal. Il a également milité pour l’abolition du délai de prescription en matière d’agression sexuelle, abrogé en 2019. Depuis, les actions collectives contre les institutions religieuses permettent aux victimes de retrouver leur dignité et de légitimer leur récit.',
      title: 'Avocat associé',
      specialization: 'Litige civil, Actions collectives, Violences sexuelles',
      barNumber: '1982-ADW-001',
      yearsOfExperience: 42,
      education: 'Barreau du Québec, 1982',
      certifications: 'Ligue des droits et libertés',
      officeLocation: 'Montréal',
      workPhone: '(514) 527-8903',
      linkedinUrl: '',
      websiteUrl: 'https://www.adwavocats.com/a-propos/',
      availability: 'Sur rendez-vous',
      timezone: 'America/Toronto',
      pronouns: 'il/lui',
      isProfilePublic: true,
      hourlyRate: 350.0,
      proBono: true,
      averageRating: 4.8,
      isVerified: true,
      lawFirmId: lawFirm.id,
      status: 'ACTIVE',
    },
    {
      email: 'justin.wee@adwavocats.com',
      name: 'Justin Wee',
      password: 'changeme123',
      role: 'LAWYER',
      username: 'justinwee',
      profilePicture: '/images/lawyers/justin-wee.jpg',
      bio: 'Admis au Barreau en 2016, Me Wee a d’abord exercé en droit criminel et pénal. Aujourd’hui, sa pratique se concentre sur la défense des victimes d’abus d’autorité, dans des dossiers qui lui ont permis de plaider devant tous les tribunaux du Québec. Il a aussi donné plusieurs conférences traitant de la confidentialité dans le contexte des violences sexuelles. Depuis 2018, il siège au conseil d’administration du CRIPHASE, un organisme qui vient en aide aux hommes victimes d’agressions sexuelles.',
      title: 'Avocat associé',
      specialization: 'Droit criminel, Défense des victimes d’abus d’autorité',
      barNumber: '2016-ADW-002',
      yearsOfExperience: 8,
      education: 'Barreau du Québec, 2016',
      certifications: 'Conférencier, CRIPHASE',
      officeLocation: 'Montréal',
      workPhone: '(514) 527-8903',
      linkedinUrl: '',
      websiteUrl: 'https://www.adwavocats.com/a-propos/',
      availability: 'Sur rendez-vous',
      timezone: 'America/Toronto',
      pronouns: 'il/lui',
      isProfilePublic: true,
      hourlyRate: 250.0,
      proBono: true,
      averageRating: 4.9,
      isVerified: true,
      lawFirmId: lawFirm.id,
      status: 'ACTIVE',
    },
    {
      email: 'virginie.dufresne@adwavocats.com',
      name: 'Virginie Dufresne-Lemire',
      password: 'changeme123',
      role: 'LAWYER',
      username: 'virginiedufresne',
      profilePicture: 'https://www.adwavocats.com/wp-content/uploads/2022/09/virginie-dufresne-lemire.jpg',
      bio: 'Avant d’être admise au Barreau en 2014, elle a obtenu des baccalauréats en communication et en droit. En plus de représenter sa clientèle dans des poursuites civiles et autres recours (enquête du coroner, etc.), elle œuvre activement à la vulgarisation des enjeux juridiques complexes à travers les médias. Elle s’efforce de rendre le système judiciaire plus accessible et compréhensible pour sa clientèle et le grand public, tout en sensibilisant à des problématiques souvent ignorées ou méconnues.',
      title: 'Avocate associée',
      specialization: 'Litige civil, Vulgarisation juridique',
      barNumber: '2014-ADW-003',
      yearsOfExperience: 10,
      education: 'Barreau du Québec, 2014',
      certifications: 'Ligue des droits et libertés',
      officeLocation: 'Montréal',
      workPhone: '(514) 527-8903',
      linkedinUrl: '',
      websiteUrl: 'https://www.adwavocats.com/a-propos/',
      availability: 'Sur rendez-vous',
      timezone: 'America/Toronto',
      pronouns: 'elle',
      isProfilePublic: true,
      hourlyRate: 220.0,
      proBono: true,
      averageRating: 4.7,
      isVerified: true,
      lawFirmId: lawFirm.id,
      status: 'ACTIVE',
    },
  ];

  for (const member of team) {
    await prisma.user.create({ data: member });
  }

  // 5. Create Bordeaux Prison Case, assigned to Justin Wee
  const justinWee = await prisma.user.findUnique({ where: { email: 'justin.wee@adwavocats.com' } });
  await prisma.legalCase.create({
    data: {
      title: 'Bordeaux Prison Case',
      description: 'A high-profile case regarding prisoner rights and justice at Bordeaux Prison.',
      caseType: 'Prisoner Rights',
      status: 'ACTIVE',
      jurisdiction: 'Montréal',
      court: 'Tribunal de Montréal',
      priority: 'high',
      isPublic: true,
      category: 'Prisoner Rights',
      legalArea: 'Prison Law',
      urgencyLevel: 'URGENT',
      viewCount: 0,
      supporterCount: 0,
      estimatedValue: 100000,
      riskLevel: 'HIGH',
      publicSummary: 'A public summary of the Bordeaux Prison Case.',
      tags: JSON.stringify(['prison', 'bordeaux', 'urgent']),
      leadLawyerId: justinWee?.id ?? '',
      createdBy: dannyPerez.id,
      competitionType: 'AUCTION',
      competitionDeadline: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 1 week from now
      minimumBid: 1000,
      currentHighestBid: 0,
      totalBidders: 0,
      averageBidAmount: 0,
    },
  });

  console.log('Restored ADW Avocats, all team, Danny Perez, and Bordeaux Prison Case with local images.');
}

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

CasperSecurity Mini