<?php
namespace App\Jobs;
use App\Http\Controllers\ThirdPartController;
use App\PaymentMethod;
use App\PaymentRequest;
use App\PaymentType;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class SendPushPaymentJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $payment_request;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($payment_request)
{
//
$this->payment_request = $payment_request;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
if(!$this->payment_request->is_payment_confirmed && $this->payment_request->status == 'PENDING'){
$tpc = new ThirdPartController;
$payment_method = PaymentMethod::query()->where('id', $this->payment_request->payment_methods_id)->first();
if (!$payment_method) Log::info('[ERROR_PAYMENT_METHOD]', ['payment_request_id' => $this->payment_request->transaction_id, 'msgPt' => 'Metodo de pagamento push nao encontrado', 'msgEn' => 'Push Payment Method not found']);
$payment_type_obj = PaymentType::query()->where('id', $this->payment_request->payment_types_id)->first();
if (!$payment_type_obj) Log::info('[ERROR_PAYMENT_TYPE]', ['payment_request_id' => $this->payment_request->transaction_id, 'msgPt' => 'Tipo de pagamento push nao encontrado', 'msgEn' => 'Payment Type not found']);
$resp = $tpc->send_push_payment_to_client_new25(strtolower($payment_method->name), strtolower($payment_type_obj->name), $this->payment_request->transaction_id);
if($resp->getStatusCode() == 200) {
Log::info('[SUCCESS_SENDING_PUSH]', ['payment_request_id' => $this->payment_request->transaction_id, 'data' => $resp->getData(),'statusCode'=>$resp->getStatusCode()]);
ConfirmPushPaymentJob::dispatch($this->payment_request);
}
} else {
echo 'Nothing to excute.';
}
}
}