changes the seeder
This commit is contained in:
506
database/seeders/LegalQuestionSeeder.php
Normal file
506
database/seeders/LegalQuestionSeeder.php
Normal file
@@ -0,0 +1,506 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* Seeds question groups and questions for the Legal category.
|
||||
* Assumes the Legal category already exists or creates it (sort_order=5).
|
||||
*/
|
||||
final class LegalQuestionSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed all Legal question groups and their questions.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$categoryId = DB::table('categories')->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(),
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user