where('name', 'Digital Solutions')->value('id'); if ($categoryId === null) { $categoryId = DB::table('categories')->insertGetId([ 'name' => 'Digital Solutions', 'sort_order' => 4, 'created_at' => now(), 'updated_at' => now(), ]); } $this->seedOpportunityDetails($categoryId); $this->seedClientBackgroundAndHistory($categoryId); $this->seedRegulatoryCompliance($categoryId); $this->seedRiskAssessment($categoryId); $this->seedResourceAllocation($categoryId); $this->seedTechnologyAndInnovationFit($categoryId); } /** * Seed Group 1: Opportunity Details (not scored, no answer options, all details required). */ 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 sort of digital consulting opportunity is it?', '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 and are there any locations where we do not have digital capabilites in the local Baker Tilly firm.', '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' => 'Where is the client HQ? please share more about the clients industry and digital maturity level.', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 3, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Who are the competitors in this space?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'required', 'sort_order' => 4, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 2: Client Background and History (scored, Yes/No/NA options). */ 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' => 'If you answer yes, you will score 1 point, if you answer no you will score 0 points', 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Have we previously worked with this client, and was the experience positive?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Have we conducted a reputational risk check on the client (negative press, ethical concerns, etc.)?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 3: Regulatory Compliance (scored, Yes/No/NA options). */ private function seedRegulatoryCompliance(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Regulatory Compliance', 'sort_order' => 3, 'description' => null, 'scoring_instructions' => 'If you answer yes, you will score 1 point, if you answer no you will score 0 points', 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Does the project involve cross-border data transfers, and if so, are necessary safeguards in place?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Does the client have no pending legal, tax or regulatory issues that [you know of] which could impact this opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 4: Risk Assessment (scored, Yes/No/NA options). */ private function seedRiskAssessment(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Risk Assessment', 'sort_order' => 4, 'description' => null, 'scoring_instructions' => 'If you answer yes, you will score 1 point, if you answer no you will score 0 points', 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Is there a clear understanding of the project scope, responsibilities, and deliverables?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Do we have the necessary delivery tools (platforms, technology, security measures etc.) to support this opportunity?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Have we completed a conflict check?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Can we meet the service-level agreements (SLAs) without overcommitting our resources?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 4, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there no special expectations or requirements from the client that may pose a challenge?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 5, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 5: Resource Allocation (scored, Yes/No/NA options). */ private function seedResourceAllocation(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Resource Allocation', 'sort_order' => 5, 'description' => null, 'scoring_instructions' => 'If you answer yes, you will score 1 point, if you answer no you will score 0 points', 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Do you have the resources required for the opportunity (personnel, time, budget)?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Do you have the right expertise and capacity across our network to deliver high-quality service?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 6: Technology & Innovation Fit (scored, Yes/No/NA options, semicolons in scoring instructions). */ private function seedTechnologyAndInnovationFit(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Technology & Innovation Fit', 'sort_order' => 6, 'description' => null, 'scoring_instructions' => 'If you answer yes, you will score 1 point; if you answer no, you will score 0 points', 'created_at' => now(), 'updated_at' => now(), ]); DB::table('questions')->insert([ [ 'question_group_id' => $groupId, 'text' => 'Are the technologies involved within our area of expertise, or do we have partnerships to support the implementation?', 'has_yes' => true, 'has_no' => true, 'has_na' => true, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } }