Files
exchange-2.0/app/Classes/Modules/Bookings/Services/GeneratesBookingQuotation.php
T
2023-05-30 22:02:09 +08:00

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(),
];
}
}