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; } }