'Update Group Transfer Fee', 'message' => 'You have successfully updated transfer fee for this Group Transaction' ]; } /** @var FetchesGroup */ private $fetchesGroup; /** @var CreatesTransaction */ private $createsTransaction; /** @var GeneratesTransactionBillNumber */ private $generatesTransactionBillNumber; /** * UpdateGroupTransferFeeLogic constructor. * @param FetchesGroup $fetchesGroup * @param CreatesTransaction $createsTransaction * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber */ public function __construct(FetchesGroup $fetchesGroup, CreatesTransaction $createsTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber) { $this->fetchesGroup = $fetchesGroup; $this->createsTransaction = $createsTransaction; $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\MalformedRequestException */ public function logic(Request $request) : JsonResponse { $group = $this->fetchesGroup->execute(['id' => $request->route('id')]); $supplier = $group->issuerCompany; $fee = $request->input('fee'); $transfer_fee = $group->morphTransactions()->where('type', TransactionType::TRANSFER_FEE)->first(); if ($transfer_fee) { $transfer_fee->amount = $fee; $transfer_fee->original_amount = $fee; $transfer_fee->save(); } else { $transferFeeNumber = $this->generatesTransactionBillNumber->execute('TRFR-'); $object = new TransactionObject($transferFeeNumber, TransactionType::TRANSFER_FEE, 1, $supplier->id, $supplier->banks()->where('default', true)->first()->id, PaymentMethodType::CASH, $fee, $fee, $group->original_currency_id, $group->original_currency_id, 1, 0, 0, null, ApprovalStatus::APPROVED); $this->createsTransaction->execute($group, $object); } return $this->resourceResponse(new GroupResource($group)); } }