Files
api-extranetwork/app/Core/Service/ManualPaymentMailService.php
ExtraNetwork e5c4b6aa13 first commit
2026-05-12 17:04:54 +03:00

149 lines
5.0 KiB
PHP

<?php
namespace App\Core\Service;
use App\Core\Service\PropertyPaymentService;
use App\Exceptions\ApiErrorException;
use Illuminate\Mail\Mailer ;
use App\Core\Mail\ManualPaymentMail;
use \App\Core\Service\PropertyService;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Exception;
class ManualPaymentMailService
{
private $propertyPaymentService;
private $mailer ;
private $propertyService;
public function __construct(
Mailer $mailer,
PropertyPaymentService $propertyPaymentService,
PropertyService $propertyService
)
{
$this->mailer = $mailer ;
$this->propertyService = $propertyService ;
$this->propertyPaymentService = $propertyPaymentService;
}
public function process ($params = [])
{
try
{
$paymentDetailParam = [
'criteria' => [
['field' => 'order_id', 'condition' => '=', 'value' => $params['orderCode']],
['field' => 'transaction_type', 'condition' => '=', 'value' => 'LNK'],
['field' => 'status', 'condition' => '=', 'value' => 5],
],
'with' => ['relatedTransactions', 'paymentUser'],
'firstRow' => true
];
$paymentDetail = $this->propertyPaymentService->selectPaymentTransaction($paymentDetailParam);
if ($paymentDetail['status'] != 'success' || empty($paymentDetail['data'])) {
throw new ApiErrorException(lang('Payment not found'));
}
$payment = $paymentDetail['data'] ;
$transactions = collect($payment['related_transactions']) ;
$successTransaction = $transactions->where('status' , '=', 1)->first() ;
$paymentParams = $payment['paramsArray'];
if($paymentParams['email']){
$propertyParam = [
'criteria' => [
['field' => 'id', 'condition' => '=', 'value' => $payment['property_id']],
],
'with' => ['propertyBrand', 'propertyContact','propertyExecutive'],
'firstRow' => true
];
$getProperty = $this->propertyService->select($propertyParam) ;
if ($getProperty['status'] != "success") {
throw new ApiErrorException($getProperty['message']);
}
$property = $getProperty['data'];
$bcc[] = "bd@extranetwork.com";
if(isset($payment['payment_user']['email'])){
$bcc[] = $payment['payment_user']['email'];
}
$accountExecutives = collect($property['property_executive'])->where('status',1)->where('executive_type_id',1)->pluck('email')->toArray();
if(!empty($accountExecutives)) {
$bcc = array_merge($bcc,$accountExecutives);
}
$mailData = [
'to' => [
'email' => $paymentParams['email'],
],
'bcc' => $bcc
];
$hostAddress = Config::get('app.bookingEngineUrl').'/link/'.$payment['order_id'].'/'.$params['language_code'].'/receipt' ;
$logo = 'https://www.extranetwork.com/assets/img/logo/logo.png';
if(isset($property['property_brand']['logo_name'])){
$logo = Config::get('app.imageUrl'). '/property-photos/' . $property['id'] . "/logo/" . $property['property_brand']['logo_name'].'_250x250.'. $property['property_brand']['logo_file_ext'];
}
$mailViewParams = [
'property' => $property,
'payment_params' => $paymentParams,
'success_transaction' => $successTransaction,
'amount' => $successTransaction['amount'],
'currency' => $successTransaction['currency'],
'date_time' => date('d.m.Y H:i', $successTransaction['created_at'] ),
'name_surname' => $successTransaction['paramsArray']['creditCard']['name'],
'email' => $paymentParams['email'],
'process_title' => $paymentParams['title'],
'property_name' => $property['name'],
'url' => $hostAddress,
'logo' => $logo,
'language_code' => $params['language_code'],
] ;
$mailParams = [
'mailData' => $mailData,
'mailViewParams' => $mailViewParams
];
$this->mailer->onQueue(
'manualPaymentMail',
new ManualPaymentMail($mailParams)
);
}
}
catch ( Exception $e )
{
$message = $e->getFile()." ".$e->getLine()." ".$e->getMessage();
Log::error($message);
return output( ['status' => -1, 'message' => $e->getMessage()] );
}
}
}