| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace App\Services;
- use App\Models\Media;
- use Illuminate\Database\Eloquent\Collection;
- use Illuminate\Support\Facades\Storage;
- class MediaService
- {
- public function getAll(array $filters = []): Collection
- {
- $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
- {
- 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();
- }
- }
|