Files
TicketAssistent/app/Services/AdminQuickReplyService.php
SitiWeb f939133fe0 Add admin views for quick replies, settings, and ticket details
- Created `quick-replies.blade.php` for managing quick replies.
- Added `settings.blade.php` for admin settings management.
- Implemented `ticket-show.blade.php` to display ticket details.
- Introduced `timeline-card.blade.php` component for displaying timeline information.

Enhance quick reply management functionality

- Developed `quick-reply-manager.blade.php` for creating and editing quick replies.
- Integrated Livewire for dynamic interaction and validation.

Implement settings page for AI configuration

- Created `settings-page.blade.php` for managing AI settings, including prompts and provider instances.
- Added functionality for managing models and embeddings.

Add ticket show functionality with real-time updates

- Implemented ticket details view with processing status and tool call logs.
- Added support for displaying article suggestions and error messages.

Create unit tests for AI classifier and domain info tool

- Added `AIClassifierServiceTest.php` to validate AI classifier functionality.
- Implemented `DomainInfoToolTest.php` for domain parameter validation.
- Created `OxxaClientTest.php` to test API interactions and password hashing.
2026-04-30 01:50:21 +02:00

57 lines
1.4 KiB
PHP

<?php
namespace App\Services;
use App\Models\QuickReply;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Collection;
class AdminQuickReplyService
{
public function paginate(int $perPage = 10): LengthAwarePaginator
{
return QuickReply::query()
->withCount('articles')
->latest()
->paginate($perPage);
}
public function activeOptions(): Collection
{
return QuickReply::query()
->where('is_active', true)
->orderBy('title')
->get(['id', 'title']);
}
public function create(string $title, string $content, bool $isActive = true): QuickReply
{
return QuickReply::query()->create([
'title' => trim($title),
'content' => trim($content),
'is_active' => $isActive,
]);
}
public function update(int $id, string $title, string $content, bool $isActive): bool
{
$quickReply = QuickReply::query()->find($id);
if ($quickReply === null) {
return false;
}
$quickReply->update([
'title' => trim($title),
'content' => trim($content),
'is_active' => $isActive,
]);
return true;
}
public function deleteById(int $id): bool
{
return (bool) QuickReply::query()->whereKey($id)->delete();
}
}