imageFeed = $imageFeed; } public function __invoke(ImageData $imageData) { $status = $this->imageFeed->status; if($status === StatusEnum::BANNED()){ $status = StatusEnum::EDITABLE(); } if($status === StatusEnum::APPROVED()){ $status = StatusEnum::EDITABLE(); } DB::beginTransaction(); $this->imageFeed->fill([ 'title' => $imageData->title, 'body' => $imageData->body, 'price' => $imageData->price, 'is_paid' => $imageData->is_paid, 'status' => $status, 'is_ads' => false, ])->save(); if($imageData->is_loaded_photos){ foreach ($imageData->photos as $photo) { $this->imageFeed->addMedia($photo)->toMediaCollection('common'); } } if($imageData->is_loaded_photos_paid){ foreach ($imageData->photos_paid as $photo) { $this->imageFeed->addMedia($photo)->toMediaCollection('paid'); } } if(count($imageData->removedItems)){ foreach ($imageData->removedItems as $removedItem) { if($media = Media::find($removedItem)){ $media->delete(); } } } DB::commit(); return $this->imageFeed->refresh(); } }