where('name', 'Audit')->value('id'); if ($categoryId === null) { $categoryId = DB::table('categories')->insertGetId([ 'name' => 'Audit', 'sort_order' => 1, 'created_at' => now(), 'updated_at' => now(), ]); } $this->seedOpportunityDetails($categoryId); $this->seedClientBackgroundAndHistory($categoryId); $this->seedFinancialInformation($categoryId); $this->seedRegulatoryCompliance($categoryId); $this->seedRiskAssessment($categoryId); $this->seedResourceAllocation($categoryId); $this->seedReportngRequirements($categoryId); } /** * Seed Group 1: Opportunity Details (not scored, no answer options). */ 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 audit 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?', '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' => 'List any locations included in this opportunity where we do not have a Baker Tilly firm.', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'optional', 'sort_order' => 3, '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' => 4, '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' => 5, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], ]); } /** * Seed Group 2: Client Background and History (scored, Yes/No 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' => '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' => 'There have been no significant changes in the client\'s business operations or structure recently?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_no', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Does the sector and/or client come with a reputation which we are comfortable that Baker Tilly is associated with?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => null, 'sort_order' => 3, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are there any previous audit reports or findings that need to be considered?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_yes', 'sort_order' => 4, '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' => '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' => 'Has the client provided financial statements or balance sheet?', '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 the client\'s financial statements complete and accurate?', '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' => '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 client comply with all relevant regulatory requirements and standards?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_no', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'The client has no pending legal or regulatory issues that you know of that could impact the audit?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_no', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'The client has been subject to no regulatory investigations or penalties?', '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(), ], ]); } /** * Seed Group 5: Risk Assessment (scored, Yes/No options). */ private function seedRiskAssessment(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Risk Assessment', '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' => 'There are no key risks associated with the audit?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'req_on_no', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Have you completed a conflict check?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'required', 'sort_order' => 2, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Are you and other BTI member firms independent withi the meaning of local and IESBA rules?', '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(), ], ]); } /** * Seed Group 6: Resource Allocation (scored, mixed — Q1 has no answer options and is not scored). */ 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' => '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' => 'What resources are required for the audit (personnel, time, budget)?', 'has_yes' => false, 'has_no' => false, 'has_na' => false, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => false, 'created_at' => now(), 'updated_at' => now(), ], [ 'question_group_id' => $groupId, 'text' => 'Does your firm have the scale, seniority and degree of expertise available at the riht time to report in accordance with the client\'s schedule?', '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 7: Reportng Requirements (scored, Yes/No options — group name preserves Excel typo). */ private function seedReportngRequirements(int $categoryId): void { $groupId = DB::table('question_groups')->insertGetId([ 'category_id' => $categoryId, 'name' => 'Reportng Requirements', 'sort_order' => 7, '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 we understand reporting rules, regulatory environment and stakeholder expectations?', 'has_yes' => true, 'has_no' => true, 'has_na' => false, 'details' => 'optional', 'sort_order' => 1, 'is_scored' => true, 'created_at' => now(), 'updated_at' => now(), ], ]); } }