KanbanMediaService.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Services;
  3. use App\Models\KanbanMedia;
  4. use Illuminate\Database\Eloquent\Collection;
  5. use Illuminate\Http\UploadedFile;
  6. use Illuminate\Support\Facades\Storage;
  7. class KanbanMediaService
  8. {
  9. public function getByKanban(int $kanbanId): Collection
  10. {
  11. return KanbanMedia::with('user')
  12. ->where('kanban_id', $kanbanId)
  13. ->orderBy('created_at', 'desc')
  14. ->get();
  15. }
  16. public function create(int $kanbanId, int $userId, UploadedFile $file): KanbanMedia
  17. {
  18. $fileUrl = $file->store('kanban-media');
  19. $model = KanbanMedia::create([
  20. 'kanban_id' => $kanbanId,
  21. 'user_id' => $userId,
  22. 'file_name' => $file->getClientOriginalName(),
  23. 'file_url' => $fileUrl,
  24. 'mime_type' => $file->getMimeType(),
  25. ]);
  26. return $model->load('user');
  27. }
  28. public function delete(int $kanbanId, int $id): bool
  29. {
  30. $model = KanbanMedia::where('kanban_id', $kanbanId)->findOrFail($id);
  31. Storage::delete($model->file_url);
  32. return $model->delete();
  33. }
  34. }