diff --git a/Modules/Helpdesk/Services/AttachmentService.php b/Modules/Helpdesk/Services/AttachmentService.php index ddfc72b6..29f446d1 100644 --- a/Modules/Helpdesk/Services/AttachmentService.php +++ b/Modules/Helpdesk/Services/AttachmentService.php @@ -4,7 +4,6 @@ declare(strict_types=1); namespace Modules\Helpdesk\Services; -use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; use Modules\Helpdesk\Models\Attachment; use Modules\Helpdesk\Models\Comment; @@ -12,26 +11,30 @@ use Modules\Helpdesk\Models\Ticket; final class AttachmentService { - /** - * Store uploaded files against a ticket and optional comment. - * - * @param array $files - */ public function storeMany(Ticket $ticket, array $files, int $userId, ?Comment $comment = null): void { foreach ($files as $file) { - $disk = (string) config('helpdesk.disk'); + $disk = (string) config('helpdesk.disk', 'public'); + + $originalName = $file->getClientOriginalName(); + $mimeType = $file->getClientMimeType(); + $size = (int) ($file->getSize() ?: 0); + $path = $file->store('tickets/'.$ticket->id, $disk); + if ($size === 0 && $path !== false) { + $size = (int) Storage::disk($disk)->size($path); + } + Attachment::query()->create([ 'ticket_id' => $ticket->id, 'comment_id' => $comment?->id, 'user_id' => $userId, 'disk' => $disk, 'path' => $path, - 'original_name' => $file->getClientOriginalName(), - 'mime_type' => $file->getClientMimeType(), - 'size' => $file->getSize() ?: 0, + 'original_name' => $originalName, + 'mime_type' => $mimeType, + 'size' => $size, ]); } }