|
|
@@ -4,13 +4,23 @@
|
|
|
|
|
|
use App\Models\Media;
|
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
|
|
|
class MediaService
|
|
|
{
|
|
|
- public function getAll(): Collection
|
|
|
+ public function getAll(array $filters = []): Collection
|
|
|
{
|
|
|
- return Media::orderBy('created_at', 'desc')
|
|
|
- ->get();
|
|
|
+ $query = Media::orderBy('created_at', 'desc');
|
|
|
+
|
|
|
+ if (!empty($filters['origem'])) {
|
|
|
+ $query->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
|
|
|
@@ -20,7 +30,18 @@ public function findById(int $id): ?Media
|
|
|
|
|
|
public function create(array $data): Media
|
|
|
{
|
|
|
- return Media::create($data);
|
|
|
+ /** @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
|
|
|
@@ -31,6 +52,15 @@ public function update(int $id, array $data): ?Media
|
|
|
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();
|
|
|
}
|
|
|
@@ -43,8 +73,8 @@ public function delete(int $id): bool
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ Storage::delete($model->url);
|
|
|
+
|
|
|
return $model->delete();
|
|
|
}
|
|
|
-
|
|
|
- // Add custom business logic methods here
|
|
|
}
|