'Delete Group Transaction', 'message' => 'You have successfully deleted this Group Transaction' ]; } /** @var UpdatesTransactionStatus */ private $updatesTransactionStatus; /** @var FetchesGroup */ private $fetchesGroup; /** @var DeletesTransaction */ private $deletesTransaction; /** * DeleteGroupLogic constructor. * @param updatesTransactionStatus $updatesTransactionStatus * @param FetchesGroup $fetchesGroup * @param DeletesTransaction $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 \App\Classes\Exceptions\MalformedRequestException */ 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); $trns = $payment->transactions()->with('groupTransaction')->get(); if(count($trns) <= 1){ $this->updatesTransactionStatus->execute($payment, ApprovalStatus::APPROVED); } $this->deletesTransaction->execute($bill); } $group->delete(); return $this->resourceResponse(new GroupResource($group)); } }