feat: add image upload trait
This commit is contained in:
@@ -7,12 +7,15 @@
|
||||
use App\Models\Category;
|
||||
use App\Models\SubCategory;
|
||||
use App\Models\Tag;
|
||||
use App\Traits\HandlesImageUpload;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class MediaController extends Controller
|
||||
{
|
||||
use HandlesImageUpload;
|
||||
|
||||
// CREATE media
|
||||
public function store(Request $request)
|
||||
{
|
||||
@@ -25,6 +28,7 @@ public function store(Request $request)
|
||||
'subcategory_ids' => 'nullable|array',
|
||||
'subcategory_ids.*' => 'integer|exists:sub_categories,id',
|
||||
'image_id' => 'nullable|exists:images,id',
|
||||
'image' => 'nullable|image|max:8192',
|
||||
'duration' => 'nullable|integer',
|
||||
'is_premium' => 'nullable|boolean',
|
||||
'file' => 'nullable|mimes:mp3,wav,mp4,mov|max:512000',
|
||||
@@ -40,6 +44,9 @@ public function store(Request $request)
|
||||
$path = $request->file('file')->store('media', 'public');
|
||||
}
|
||||
|
||||
// An uploaded image file takes precedence over a provided image_id.
|
||||
$imageId = $this->uploadedImageId($request) ?? ($data['image_id'] ?? null);
|
||||
|
||||
$media = Media::create([
|
||||
'user_id' => auth()->id(),
|
||||
'title' => $data['title'],
|
||||
@@ -47,7 +54,7 @@ public function store(Request $request)
|
||||
'type' => $data['type'],
|
||||
'file_path' => $path,
|
||||
'external_url' => $data['external_url'] ?? null,
|
||||
'image_id' => $data['image_id'] ?? null,
|
||||
'image_id' => $imageId,
|
||||
'duration' => $data['duration'] ?? null,
|
||||
'visibility' => $data['visibility'] ?? 'public',
|
||||
'is_premium'=> $data['is_premium'] ?? false
|
||||
@@ -469,6 +476,7 @@ public function update(Request $request, $id)
|
||||
'subcategory_ids.*' => 'integer|exists:sub_categories,id',
|
||||
'is_premium' => 'nullable|boolean',
|
||||
'image_id' => 'nullable|exists:images,id',
|
||||
'image' => 'nullable|image|max:8192',
|
||||
'duration' => 'nullable|integer',
|
||||
'file' => 'nullable|mimes:mp3,wav,mp4,mov|max:512000',
|
||||
'external_url' => 'nullable|string',
|
||||
@@ -495,10 +503,13 @@ public function update(Request $request, $id)
|
||||
'file_path' => $data['file_path'] ?? $media->file_path,
|
||||
];
|
||||
|
||||
// --- Handle image_id specifically ---
|
||||
// If image_id is provided in request, use it (even if null to remove association)
|
||||
// If not provided, keep the existing value
|
||||
if (array_key_exists('image_id', $data)) {
|
||||
// --- Handle image ---
|
||||
// An uploaded image file wins; otherwise an explicit image_id (even null to
|
||||
// clear) is honored; otherwise the existing value is kept.
|
||||
$uploadedImageId = $this->uploadedImageId($request);
|
||||
if ($uploadedImageId !== null) {
|
||||
$updateData['image_id'] = $uploadedImageId;
|
||||
} elseif (array_key_exists('image_id', $data)) {
|
||||
$updateData['image_id'] = $data['image_id'];
|
||||
} else {
|
||||
$updateData['image_id'] = $media->image_id;
|
||||
|
||||
Reference in New Issue
Block a user