'Delete Group Transaction', 'message' => 'You have successfully deleted this Group Transaction' ]; } /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; /** @var FetchesGroup */ private $fetchesGroup; /** @var DeletesTransaction */ private $deletesTransaction; public function __construct( UpdatesTransactionStatus $updatesTransactionStatus, FetchesGroup $fetchesGroup, DeletesTransaction $deletesTransaction ) { $this->updatesTransactionStatus = $updatesTransactionStatus; $this->fetchesGroup = $fetchesGroup; $this->deletesTransaction = $deletesTransaction; } /** * @param Request $request * @return JsonResponse * @throws ErrorException */ public function logic(Request $request) : JsonResponse { $group = $this->fetchesGroup->execute(['id' => $request->route('id')]); $items = $group->transactions()->get(); foreach($items as $item) { $bill = $item; $payment = $bill->owner; $group->transactions()->detach($bill->id); $this->updatesTransactionStatus->execute($payment, ApprovalStatus::APPROVED); $this->deletesTransaction->execute($bill); } $group->delete(); return $this->resourceResponse(new GroupResource($group)); } }