mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 12:33:56 +00:00
110 lines
3.9 KiB
PHP
110 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Jobs;
|
|
|
|
use App\Classes\Modules\PerfexCRM\DataTransferObjects\UpdatePerfexCRMObject;
|
|
use App\Models\Transaction;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class UpdatePerfexCRMPrelude implements ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
|
|
/** @var Transaction */
|
|
private $transaction;
|
|
|
|
/** @var UpdatePerfexCRMObject */
|
|
private $updatePerfexCRMObject;
|
|
|
|
/** @var Boolean|null */
|
|
private $shouldCreateInvoice;
|
|
|
|
/**
|
|
* @param Transaction $transaction
|
|
* @param UpdatePerfexCRMObject $updatePerfexCRMObject
|
|
* @param bool|null $shouldCreateInvoice
|
|
*/
|
|
public function __construct(Transaction $transaction, UpdatePerfexCRMObject $updatePerfexCRMObject, ?bool $shouldCreateInvoice = false)
|
|
{
|
|
$this->transaction = $transaction;
|
|
$this->updatePerfexCRMObject = $updatePerfexCRMObject;
|
|
$this->shouldCreateInvoice = $shouldCreateInvoice;
|
|
}
|
|
|
|
|
|
public function handle()
|
|
{
|
|
$serviceTypeName = $this->transaction->owner->company->services()->where('id', $this->transaction->owner->service_id)->first()->name;
|
|
$booking = $this->transaction->booking;
|
|
$bank = $booking->bank; //cief todo: 66
|
|
if($this->transaction->bank){
|
|
$bank = $this->transaction->bank;
|
|
}
|
|
$bankDetails = $this->generateBankDetails($bank);
|
|
|
|
$data = [
|
|
'amount' => number_format($this->transaction->amount, 2, '.', ''),
|
|
'currency' => $this->transaction->currency_id == 1 ? "MYR" : "CNY",
|
|
'service_type' => $serviceTypeName,
|
|
'bank_details' => $bankDetails,
|
|
'link_transfer' => config('app.url').'/transfer/'.$this->transaction->owner->marking,
|
|
'link_payments' => config('app.url').'/payments',
|
|
'link_autocount_or' => 'https://docs.google.com/spreadsheets/d/1Q3rJBGQ9Bo04HZp5WR9zbLp7pIW2kfDYsabxG7JON-4/edit#gid=2013983170',
|
|
];
|
|
|
|
$result = $this->replacePlaceholders($this->updatePerfexCRMObject->getTasks(), $data);
|
|
$this->updatePerfexCRMObject->setTasks($result);
|
|
|
|
UpdatePerfexCRM::dispatch($this->updatePerfexCRMObject, $this->transaction, $this->shouldCreateInvoice);
|
|
}
|
|
|
|
|
|
private function generateBankDetails($bank): array
|
|
{
|
|
return $this->transaction->owner->service_id == 4 ?
|
|
[
|
|
'1688_username' => $bank->account_no,
|
|
'1688_password' => $bank->holder_name,
|
|
'payment_pin' => $bank->bank_branch,
|
|
]:
|
|
[
|
|
'id' => $bank->id,
|
|
'type' => $bank->type,
|
|
'reference' => $bank->reference,
|
|
'bank_name' => $bank->bank_name,
|
|
'bank_branch' => $bank->bank_branch,
|
|
'holder_name' => $bank->holder_name,
|
|
'account_no' => $bank->account_no,
|
|
'country_id' => $bank->country_id,
|
|
'default' => $bank->default,
|
|
'status' => $bank->status,
|
|
];
|
|
}
|
|
|
|
|
|
function replacePlaceholders($template, $data, $prefix = '')
|
|
{
|
|
foreach ($template as $key => $value) {
|
|
foreach ($data as $dataKey => $dataValue) {
|
|
if (is_array($dataValue)) {
|
|
$template[$key] = $this->replacePlaceholders($template[$key], $dataValue, $dataKey);
|
|
} else {
|
|
if ($prefix != '') {
|
|
$template[$key] = str_replace('{' .$prefix. "." .$dataKey . '}', $dataValue, $template[$key]);
|
|
} else {
|
|
$template[$key] = str_replace('{' . $dataKey . '}', $dataValue, $template[$key]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $template;
|
|
}
|
|
|
|
}
|