where('origem', $filters['origem']); } if (!empty($filters['origem_id'])) { $query->where('origem_id', $filters['origem_id']); } return $query->get(); } public function findById(int $id): ?Media { return Media::find($id); } public function create(array $data): Media { /** @var \Illuminate\Http\UploadedFile $file */ $file = $data['file']; $url = $file->store('student-media'); $fileType = $file->getMimeType(); return Media::create([ 'name' => $data['name'], 'origem' => $data['origem'], 'origem_id' => $data['origem_id'], 'url' => $url, 'file_type' => $fileType, ]); } public function update(int $id, array $data): ?Media { $model = $this->findById($id); if (!$model) { return null; } if (isset($data['file'])) { Storage::delete($model->url); /** @var \Illuminate\Http\UploadedFile $file */ $file = $data['file']; $data['url'] = $file->store('student-media'); $data['file_type'] = $file->getMimeType(); unset($data['file']); } $model->update($data); return $model->fresh(); } public function delete(int $id): bool { $model = $this->findById($id); if (!$model) { return false; } Storage::delete($model->url); return $model->delete(); } }