'Deleted PackingList', 'message' => 'You have successfully deleted a PackingList' ]; } /** @var CanDeletePackingList */ private $canDeletePackingList; /** @var DeletesPackingList */ private $deletesPackingList; /** @var FetchesPackingList */ private $fetchesPackingList; /** @var FetchesPackage */ private $fetchesPackage; /** * DeletePackingListByPackageIdLogic constructor. * @param CanDeletePackingList $canDeletePackingList * @param DeletesPackingList $deletesPackingList * @param FetchesPackingList $fetchesPackingList * @param FetchesPackage $fetchesPackage */ public function __construct(CanDeletePackingList $canDeletePackingList, DeletesPackingList $deletesPackingList, FetchesPackingList $fetchesPackingList, FetchesPackage $fetchesPackage) { $this->canDeletePackingList = $canDeletePackingList; $this->deletesPackingList = $deletesPackingList; $this->fetchesPackingList = $fetchesPackingList; $this->fetchesPackage = $fetchesPackage; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { $this->canDeletePackingList->passes(); $package = $this->fetchesPackage->execute(['id' => $request->route('id')]); $packingList = $package->packingList; $packingList = PackingList::where('reference', $packingList->reference)->get(); $childPackingList = PackingList::where('owner_type', PackingList::class)->whereIn('owner_id', $packingList->pluck('id'))->get(); $packingList->each->delete(); $childPackingList->each->delete(); return $this->response([]); } }