diff --git a/app/Classes/Modules/Currencies/Services/RateCalculatesCurrency.php b/app/Classes/Modules/Currencies/Services/RateCalculatesCurrency.php index 07975388..e51f3338 100644 --- a/app/Classes/Modules/Currencies/Services/RateCalculatesCurrency.php +++ b/app/Classes/Modules/Currencies/Services/RateCalculatesCurrency.php @@ -12,4 +12,9 @@ class RateCalculatesCurrency extends AbstractUpdateRecord { return $convert_amount = ($conversion_currency->selling / $convertable_currency->selling) * $amount; } + + public function execute_rate(Currency $conversion_currency, Currency $convertable_currency) + { + return $convert_rate = ($conversion_currency->selling / $convertable_currency->selling); + } } \ No newline at end of file diff --git a/app/Classes/Modules/Wallets/ControllersLogic/CreateWalletTransactionLogic.php b/app/Classes/Modules/Wallets/ControllersLogic/CreateWalletTransactionLogic.php index 7d6a642d..ecaf36f6 100644 --- a/app/Classes/Modules/Wallets/ControllersLogic/CreateWalletTransactionLogic.php +++ b/app/Classes/Modules/Wallets/ControllersLogic/CreateWalletTransactionLogic.php @@ -9,6 +9,10 @@ use App\Classes\Modules\Wallets\DataTransferObjects\WalletTransactionObject; use App\Classes\Modules\Wallets\Services\CreatesWalletTransaction; use App\Classes\Modules\Wallets\Services\GeneratesWalletTransactionBillNo; use App\Http\Resources\WalletTransactionResource; +use App\Classes\Modules\Wallets\Services\FetchesWallet; + +use App\Classes\Modules\Currencies\Services\FetchesCurrency; +use App\Classes\Modules\Currencies\Services\RateCalculatesCurrency; /* use App\Classes\Modules\Accounts\Standards\Rules\CanCreateUser; use App\Classes\Modules\Accounts\Services\CreatesUser; @@ -58,6 +62,12 @@ class CreateWalletTransactionLogic extends AbstractControllerLogic /** @var CanCreateWalletTransaction */ private $canCreateWalletTransaction; + + private $fetchesCurrency; + + private $rateCalculatesCurrency; + + private $fetchesWallet; /** * CreateWalletLogic constructor. @@ -65,11 +75,17 @@ class CreateWalletTransactionLogic extends AbstractControllerLogic * @param GeneratesWalletCode $generatesWalletCode * @param CanCreateCompanyWallet $canCreateCompanyWallet */ - public function __construct(CreatesWalletTransaction $createsWalletTransaction, GeneratesWalletTransactionBillNo $generatesWalletTransactionBillNo, CanCreateWalletTransaction $canCreateWalletTransaction) + public function __construct( + CreatesWalletTransaction $createsWalletTransaction, GeneratesWalletTransactionBillNo $generatesWalletTransactionBillNo, CanCreateWalletTransaction $canCreateWalletTransaction, + FetchesCurrency $fetchesCurrency,RateCalculatesCurrency $rateCalculatesCurrency, FetchesWallet $fetchesWallet + ) { $this->createsWalletTransaction = $createsWalletTransaction; $this->generatesWalletTransactionBillNo = $generatesWalletTransactionBillNo; $this->canCreateWalletTransaction = $canCreateWalletTransaction; + $this->fetchesCurrency = $fetchesCurrency; + $this->rateCalculatesCurrency = $rateCalculatesCurrency; + $this->fetchesWallet = $fetchesWallet; } /** @@ -82,12 +98,19 @@ class CreateWalletTransactionLogic extends AbstractControllerLogic try { DB::beginTransaction(); - + + $wallet = $this->fetchesWallet->execute(['id' => $request->route('id')]); + $conversion_currency = $this->fetchesCurrency->execute(['id' => $request->input('currency_id')]); + $convertable_currency = $this->fetchesCurrency->execute(['id' => $wallet->currency_id]);//MYR + + $convert_amount = $this->rateCalculatesCurrency->execute($conversion_currency, $convertable_currency, $request->input('amount')); + $convert_rate = $this->rateCalculatesCurrency->execute_rate($conversion_currency, $convertable_currency); + $object = new WalletTransactionObject( - $request->route('id'), $this->generatesWalletTransactionBillNo->execute(),$request->input('trans_type'), - number_format( (float) $request->input('amount'), 5, '.', ''), $request->input('currency_id') , number_format( (float) $request->input('original_amount'), 5, '.', ''), - $request->input('original_currency_id'),number_format( (float) $request->input('currency_rate'), 5, '.', '') + $wallet->id, $this->generatesWalletTransactionBillNo->execute(),$request->input('trans_type'), + number_format( (float) $convert_amount, 5, '.', ''), $wallet->currency_id , number_format( (float) $request->input('amount'), 5, '.', ''), + $request->input('currency_id'),number_format( (float) $convert_rate, 5, '.', '') ); $this->canCreateWalletTransaction->passes($object); diff --git a/app/Classes/Modules/Wallets/Services/FetchesWallet.php b/app/Classes/Modules/Wallets/Services/FetchesWallet.php new file mode 100644 index 00000000..48677e4c --- /dev/null +++ b/app/Classes/Modules/Wallets/Services/FetchesWallet.php @@ -0,0 +1,33 @@ +repository = $repository; + } + + + /** + * @return Builder + */ + public function getRepository(): Builder + { + return $this->repository->newQuery(); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Wallets/Standards/Validators/WalletTransactionValidation.php b/app/Classes/Modules/Wallets/Standards/Validators/WalletTransactionValidation.php index 14129c03..925261ad 100644 --- a/app/Classes/Modules/Wallets/Standards/Validators/WalletTransactionValidation.php +++ b/app/Classes/Modules/Wallets/Standards/Validators/WalletTransactionValidation.php @@ -14,7 +14,8 @@ class WalletTransactionValidation extends AbstractValidation return [ 'wallet_id' => $object->getWalletId(), 'currency_id' => $object->getCurrency(), - 'original_currency_id' => $object->getOriginalCurrency(), + 'amount' => $object->getAmount(), + 'trans_type'=>$object->getTransType() ]; } @@ -26,7 +27,8 @@ class WalletTransactionValidation extends AbstractValidation return [ 'wallet_id' => 'required', 'currency_id' => 'required', - 'original_currency_id' => 'required', + 'amount' => 'required', + 'trans_type'=>'required' ]; }