where('name', 'Legal')->value('id'); if ($categoryId === null) { $categoryId = DB::table('categories')->insertGetId([ 'name' => 'Legal', 'sort_order' => 5, 'created_at' => now(), 'updated_at' => now(), ]); } $this->seedOpportunityDetails($categoryId); $this->seedClientBackgroundAndHistory($categoryId); $this->seedFinancialInformation($categoryId); $this->seedRegulatoryCompliance($categoryId); $this->seedRiskAssessmentForLegalOpportunities($categoryId); $this->seedResourceAllocation($categoryId); $this->seedStakeholderEngagement($categoryId); $this->seedFeeQuote($categoryId); } /** * Seed Group 1: Opportunity Details (mixed — some text-only, some Yes/No). */ private function seedOpportunityDetails(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Opportunity Details', 'sort_order' => 1, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'What type of legal opportunity is it (e.g., litigation, corporate, M&A, regulatory)?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 1, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'How many locations involved in this opportunity?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 2, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Do we have a presence or a reliable partner in all locations listed in this opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_no', 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Is the client budget realistic?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'required', 'sort_order' => 4, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Has the client requested any additional information from our firms?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'required', 'sort_order' => 5, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'What is the deadline to respond to the client on this opportunity?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 6, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Where is the client HQ?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 7, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Who is the competition?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 8, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 2: Client Background and History (scored, mixed Yes/No and text-only). */ private function seedClientBackgroundAndHistory(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Client Background and History', 'sort_order' => 2, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'What is the client\'s business and industry?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 1, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Have there been any significant changes in the client\'s business operations or structure recently?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'What is our competitive edge in this opportunity (e.g., prior experience with the client, unique expertise, pricing advantage)?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'required', 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 3: Financial Information (scored, Yes/No options). */ private function seedFinancialInformation(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Financial Information', 'sort_order' => 3, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Has the client provided enough financial information about their company?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there any significant financial risks or uncertainties that you are aware of?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 4: Regulatory Compliance (scored, Yes/No options). */ private function seedRegulatoryCompliance(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Regulatory Compliance', 'sort_order' => 4, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Are there any pending legal or regulatory issues that you know of that could impact the opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Has the client been subject to any regulatory investigations or penalties?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 5: Risk Assessment for Legal opportunities (scored, Yes/No options). * Group name preserves Excel casing exactly — lowercase 'o' in "opportunities". */ private function seedRiskAssessmentForLegalOpportunities(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Risk Assessment for Legal opportunities', 'sort_order' => 5, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Are there any potential risks or challenges associated with the opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Has a conflict check been completed?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there any potential conflicts of interest?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 6: Resource Allocation (mixed — Q2 and Q5 are text-only, others Yes/No). */ private function seedResourceAllocation(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Resource Allocation', 'sort_order' => 6, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Do we have the required skills and capacity within our firm to deliver this work, or would we need support from another firm?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'What resources are required for the opportunity (personnel, time, budget)?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there any constraints on the availability of your resources?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Do you know of the any constraints on the availability of other firms included in this opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 4, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Is the deadline to respond to the client is more than two weeks away. Our experience shows that anything shorter is often unrealistic to pursue.', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'optional', 'sort_order' => 5, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 7: Stakeholder Engagement (mixed — Q1 is text-only, Q2 is Yes/No). */ private function seedStakeholderEngagement(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Stakeholder Engagement', 'sort_order' => 7, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Who are the key stakeholders involved in this opportunity?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 1, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there any special expectations and requirements?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 8: Fee Quote (scored, Yes/No options). */ private function seedFeeQuote(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Fee Quote', 'sort_order' => 8, 'description' => null, 'scoring_instructions' => null, 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Has the client provided sufficient information to enable a fee quote?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } }