|
|
@@ -738,19 +738,29 @@ class FlexibleVariantController extends Controller
|
|
|
*
|
|
|
* DELETE /variants/{id}/images/{mediaId}
|
|
|
*/
|
|
|
- public function removeVariantImage(int $id, int $mediaId): JsonResponse
|
|
|
+ public function removeVariantImage(int $mediaId, Request $request): JsonResponse
|
|
|
{
|
|
|
- $variant = ProductVariant::findOrFail($id);
|
|
|
+ $this->validate($request, [
|
|
|
+ 'variant_ids' => 'required|array',
|
|
|
+ 'variant_ids.*' => 'required|exists:product_variants,id',
|
|
|
+ 'media_id' => 'required|integer|exists:media,id',
|
|
|
+ ]);
|
|
|
|
|
|
- $variant->variantImages()->detach($mediaId);
|
|
|
|
|
|
- $media = Media::find($mediaId);
|
|
|
+ $variants = ProductVariant::findMany($request->input('variant_ids'));
|
|
|
+
|
|
|
+ $variants->each(fn ($variant) => $variant->variantImages()->detach($request->input('media_id')));
|
|
|
+
|
|
|
+ $mediaId = $request->input('media_id');
|
|
|
|
|
|
// Only delete the media record if no other variant still references it
|
|
|
- if ($media && $variant->variantImages()->where('media_id', $mediaId)->doesntExist()) {
|
|
|
- $media->delete();
|
|
|
- }
|
|
|
+ $stillReferenced = \DB::table('product_variant_images')
|
|
|
+ ->where('media_id', $mediaId)
|
|
|
+ ->exists();
|
|
|
|
|
|
+ if (!$stillReferenced) {
|
|
|
+ Media::findOrFail($mediaId)->delete();
|
|
|
+ }
|
|
|
return response()->json([
|
|
|
'success' => true,
|
|
|
'message' => 'Image removed successfully',
|