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