major helpdesk updates

This commit is contained in:
Mark Gregory
2026-06-15 13:47:58 +01:00
parent 330d6922a4
commit b668116b11
47 changed files with 2350 additions and 23 deletions
@@ -7,11 +7,16 @@ namespace Modules\Helpdesk\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Modules\Helpdesk\Models\CannedResponse;
use Modules\Helpdesk\Models\Category;
use Modules\Helpdesk\Models\ChecklistTemplate;
use Modules\Helpdesk\Models\KanbanBoard;
use Modules\Helpdesk\Models\Priority;
use Modules\Helpdesk\Models\Product;
use Modules\Helpdesk\Models\Project;
use Modules\Helpdesk\Models\SlaPolicy;
use Modules\Helpdesk\Models\Status;
use Modules\Helpdesk\Models\Tag;
use Modules\Helpdesk\Models\Team;
use Modules\Helpdesk\Models\WorkflowTemplate;
@@ -30,6 +35,7 @@ final class HelpdeskDatabaseSeeder extends Seeder
$this->seedTeamsAndProjects();
$this->seedKanbanBoards();
$this->seedWorkflowTemplates();
$this->seedRedmineInspiredDefaults();
}
/**
@@ -172,6 +178,80 @@ final class HelpdeskDatabaseSeeder extends Seeder
}
}
/**
* Seed RedmineUP-inspired professional helpdesk defaults.
*/
private function seedRedmineInspiredDefaults(): void
{
$medium = Priority::query()->where('slug', 'medium')->first();
$bug = Category::query()->where('slug', 'bug')->first();
SlaPolicy::query()->updateOrCreate(
['company_id' => null, 'slug' => 'standard-support-sla'],
[
'company_id' => null,
'priority_id' => $medium?->id,
'category_id' => null,
'name' => 'Standard Support SLA',
'slug' => 'standard-support-sla',
'first_response_minutes' => 240,
'resolution_minutes' => 2880,
'business_hours_only' => false,
'is_default' => true,
'is_active' => true,
]
);
CannedResponse::query()->updateOrCreate(
['company_id' => null, 'slug' => 'professional-acknowledgement'],
[
'company_id' => null,
'category_id' => null,
'team_id' => null,
'name' => 'Professional acknowledgement',
'slug' => 'professional-acknowledgement',
'visibility' => 'agents',
'subject' => null,
'body' => '<p>Hello {{ requester.name }},</p><p>Thank you for the update on {{ ticket.reference }}. I am reviewing this now and will come back with the next action shortly.</p><p>Regards,<br>{{ agent.name }}</p>',
'is_active' => true,
'sort_order' => 10,
]
);
ChecklistTemplate::query()->updateOrCreate(
['company_id' => null, 'slug' => 'bug-triage-checklist'],
[
'company_id' => null,
'category_id' => $bug?->id,
'project_id' => null,
'name' => 'Bug triage checklist',
'slug' => 'bug-triage-checklist',
'items' => ['Confirm reproduction steps', 'Check recent deployment/build', 'Identify affected tenant/company', 'Record fix or workaround'],
'is_active' => true,
]
);
foreach ([
['name' => 'Escalated', 'slug' => 'escalated', 'color' => 'red'],
['name' => 'Waiting on customer', 'slug' => 'waiting-on-customer', 'color' => 'amber'],
] as $tag) {
Tag::query()->updateOrCreate(['company_id' => null, 'slug' => $tag['slug']], $tag + ['company_id' => null]);
}
Product::query()->updateOrCreate(
['company_id' => null, 'slug' => 'wms-platform'],
[
'company_id' => null,
'name' => 'WMS Platform',
'slug' => 'wms-platform',
'type' => 'service',
'version' => null,
'release_channel' => 'core',
'description' => 'Default service record for WMS platform support tickets.',
'is_active' => true,
]
);
}
}