mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
43 lines
2.2 KiB
PHP
43 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Bookings\Services;
|
|
|
|
|
|
use App\Classes\Modules\Bookings\DataTransferObjects\CalculationObject;
|
|
use App\Classes\Modules\Currencies\DataTransferObjects\CurrencyConversionObject;
|
|
use App\Http\Resources\BankResource;
|
|
use App\Models\Bank;
|
|
use Carbon\Carbon;
|
|
use Carbon\CarbonInterval;
|
|
|
|
class GeneratesBookingQuotation
|
|
{
|
|
|
|
public function execute(CalculationObject $calculationObject, ?int $paymentAttemptLimit = 0, ?CurrencyConversionObject $currencyConversionObject = null){
|
|
$date = Carbon::now();
|
|
$days = $date->diffInDays($date->copy()->addMinutes($paymentAttemptLimit));
|
|
$hours = $date->diffInHours($date->copy()->addMinutes($paymentAttemptLimit)->subDays($days)) ;
|
|
$minutes = $date->diffInMinutes($date->copy()->addMinutes($paymentAttemptLimit)->subDays($days)->subHours($hours));
|
|
|
|
$receive_date = $currencyConversionObject ? Carbon::now()->endOfDay()->addWeekdays($currencyConversionObject->getServiceId() === 3 ? 3 : 1)->timezone('Asia/Singapore')->format('4:00 \P\M, jS M, Y \G\M\T T') : null;
|
|
|
|
return [
|
|
'bank' => new BankResource(Bank::find($calculationObject->getConfigurations()->getBankId())),
|
|
'rate' => $calculationObject->getConfigurations()->getRate(),
|
|
'local_total' => $calculationObject->getLocalTotal(),
|
|
'foreign_total' => $calculationObject->getForeignTotal(),
|
|
'conversion_amount' => $calculationObject->getConversionTotal(),
|
|
'service_charge' => $calculationObject->getServiceCharge(),
|
|
'tax_total' => $calculationObject->getTax(),
|
|
'tax' => $calculationObject->getConfigurations()->getTax(),
|
|
'sub_total' => $calculationObject->getSubTotal(),
|
|
'total' => $calculationObject->getTotal(),
|
|
'date' => Carbon::now()->timezone('Asia/Singapore')->format('h:i a, jS M, Y \G\M\T T'),
|
|
'receive_date' => $receive_date,
|
|
'payment_attempt_limit' => CarbonInterval::days($days)->hours($hours)->minutes($minutes)->forHumans(),
|
|
'voucher_discount_amount' => $calculationObject->getVoucherDiscountAmount(),
|
|
'voucher_code' => $calculationObject->getVoucherCode(),
|
|
];
|
|
}
|
|
}
|