Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imalipartnersapi
/
app
/
Http
/
Controllers
:
PaymentController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers; use App\Bank\MasterAccount; use App\Bank\Payment; use App\Bank\Profit; use App\Classes\Kyc; use App\Classes\FCMNotifcation; use App\Classes\PaymentKyc; use App\Classes\Record; use App\Classes\SendSMS; use App\Classes\SendSMSSislog; use App\Classes\SmsManager; use App\Classes\TransactionGeneration; use App\Imali\ImaliAccount; use App\Imali\ImaliAccountConfig; use App\Imali\MerchantAccount; use App\Imali\MerchantContract; use App\Imali\RamoActivity; use App\Imali\RechargeImaliAccount; use App\Imali\Transfer; use App\Mail\Pagamento; use App\Mail\PagamentoConfirmado; use App\MoneyRequest; use App\PurchaseVoucher; use App\Store; use App\StoreAmountGeneration; use App\StoreConfig; use App\StoreDevice; use App\TransactionHistory; use App\TransferHistory; use App\User; use Illuminate\Http\Request; use DB; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use QRCode; class PaymentController extends Controller { protected $request; protected $createTransaction; protected $generatedTransaction; protected $log; protected $trasactionGeneration; protected SmsManager $smsManager; public function __construct() { $this->log = new Record(); $this->trasactionGeneration = new TransactionGeneration(); $this->smsManager = new SmsManager(); } public function getExtrato() { $user = User::query() ->join('imali_accounts', 'imali_accounts.user_id', '=', 'users.id') ->leftJoin('credelecs', 'credelecs.user_id', '=', 'users.id') ->leftJoin('payments', 'payments.sender_id', '=', 'users.id') ->where('users.id', 1) ->select('credelecs.*', 'payments.*') ->get(); return response()->json($user); } public function getTesteTransaction($id) { $u = Payment::query()->where('sender_id', '=', 1)->get(); $transactons = DB::table('payments') ->join('history_payments', 'history_payments.user_id', '=', 'payments.sender_id') ->where('payments.sender_id', $id) ->where('history_payments.user_id', $id) ->select('payments.*', 'history_payments.status_user as type') ->orderBy('payments.created_at', 'desc') ->get(); return response()->json($transactons); } public function getUser($id) { $user = User::query()->where('user_id', $id)->first(); return response()->json($user); } public function getMyTransactions($id) { // $user = User::query()->where('user_id', $id)->first(); $transactons = DB::table('users') ->join('payments', 'users.id', '=', 'payments.sender_id') ->where('user_id', $id) ->select('payments.*') ->orderBy('created_at', 'desc') ->get(); return response()->json(['data' => $transactons], 200, [], JSON_NUMERIC_CHECK); } public function makePayment(Request $request) { $trasactionGeneration = new TransactionGeneration(); $payerUser = User::query()->where('user_id', $request->user_id)->first(); $comerciante = MerchantAccount::query()->where('account_number', $request->account_number)->first(); $payer_id = $payerUser->id; $imali = ImaliAccount::query()->where('user_id', $payer_id)->first(); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $comerciante->name, 'details' => $kycCheck, 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return $kycCheck; } else { if ($payerUser) { if ($imali->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $comerciante->name, 'details' => 'Saldo Insuficiente', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402, [], JSON_NUMERIC_CHECK); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $payer_id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $payer_id)->increment('points', $points); $contractoComerciante = MerchantContract::query()->where('merchant_account_id', $comerciante->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->valor_min; $valorMax = $contractoComerciante->valor_max; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('merchant_accounts')->where('account_number', $comerciante->account_number)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $transaction = $trasactionGeneration->generateTransaction(); $createTransaction = Payment::create([ 'transaction_id' => $transaction, 'sender_id' => $payer_id, 'merchant_account_id' => $comerciante->id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $request->description, 'used_points' => $request->used_points, 'estado' => 'pago', 'estado_color' => '#388E3C', 'created_at' => now(), 'updated_at' => now() ]); $actualPoints = $imali->points + $points; $createTransaction->paymentHistoric()->create([ 'sender_account' => $imali->account_number, 'sender_name' => $payerUser->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $payerUser->id, 'actual_points' => $actualPoints, 'last_points' => $imali->points, 'win_points' => $points, 'transaction_id' => $transaction ]); $saveProfit = $createTransaction->profit()->create([ 'payer_id' => $payer_id, 'payer_account' => $comerciante->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $trasactionGeneration->generateTransaction(), 'payment_id' => $createTransaction->id, ]); if ($saveProfit) { $sms = new SendSMS(); $sms->sendMessageToClientePayment($createTransaction); $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); Mail::to($comerciante->email_loja)->send(new PagamentoConfirmado($createTransaction)); Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $comerciante->name, 'details' => 'Pagamento Feito com Sucesso', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Success', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Pagamento Feito com Sucesso!', 'transaction' => $transaction, 'created_at' => $createTransaction->created_at, 'duration' => 3000 ], 200); } } } } } public function makePaymentStoreNEW(Request $request) { DB::transaction(function ($request) { $user = User::find($request->user()->id); // $user = DB::table('users')-> if (Hash::check($request->pin, $user->pin)) { $trasactionGeneration = new TransactionGeneration(); $payerUser = User::query()->where('user_id', $request->user()->user_id)->first(); $store = Store::query()->where('account_number', $request->account_number)->first(); $payer_id = $payerUser->id; $imali = ImaliAccount::query()->where('user_id', $payer_id)->first(); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => $kycCheck, 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return $kycCheck; } else { if ($payerUser) { if ($imali->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Saldo Insuficiente', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402, [], JSON_NUMERIC_CHECK); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $payer_id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $payer_id)->increment('points', $points); $contractoComerciante = MerchantContract::query()->where('store_id', $store->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->min_amount; $valorMax = $contractoComerciante->max_amount; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('stores')->where('account_number', $store->account_number)->increment('balance', $valorFinal); $storeT = Store::query()->where('account_number', $store->account_number)->first(); DB::table('merchant_accounts')->where('id', $storeT->merchant_account_id)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $transaction = $trasactionGeneration->generateTransaction(); $createTransaction = Payment::create([ 'transaction_id' => $transaction, 'sender_id' => $payer_id, 'store_id' => $store->id, 'client_id' => $request->user_client_id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $request->description, 'used_points' => $request->used_points, 'estado' => 'pago', 'payment_type' => 'payment', 'estado_color' => '#388E3C', 'created_at' => now(), 'updated_at' => now(), 'category_id' => $store->industry_activity ]); // TransactionHistory::create([ // 'user_id' => $request->user()->id, // 'payment_id' => $createTransaction->id, // 'category_id' => $createTransaction->category_id, // 'transaction_type' => 'payment' // ]); $actualPoints = $imali->points + $points; $re = $createTransaction->paymentHistoric()->create([ 'sender_account' => $imali->account_number, 'sender_name' => $payerUser->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $payerUser->id, 'actual_points' => $actualPoints, 'last_points' => $imali->points, 'win_points' => $points, 'transaction_id' => $transaction, 'category_id' => $store->industry_activity ]); $saveProfit = $createTransaction->profit()->create([ 'payer_id' => $payer_id, 'payer_account' => $store->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $trasactionGeneration->generateTransaction(), 'payment_id' => $createTransaction->id, 'profit_payer_id' => $createTransaction->store_id ]); if ($saveProfit) { $this->smsManager->sendSMSToComerciante($createTransaction); // $sms = new SendSMS(); // $sms->sendMessageToClientePayment($createTransaction); // $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); // Mail::to($store->email)->send(new PagamentoConfirmado($createTransaction)); // Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); $generate = StoreAmountGeneration::query() ->where('id', $request->store_amount_generation_id) ->first(); if ($generate) { $generate->update([ 'status' => 'sucesso' ]); } $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Pagamento Feito com Sucesso', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Success', 'user_id' => $request->user()->id ]); $notification = array( 'icon' => 'ic_imali_logo_verde_01', // 'icon' => 'ic_i_mali_cover', 'title' => 'Pagemento ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' fez o pagamento de ' . $request->amount . ' MT ' . ' na loja ' . $store->name, 'click_action' => 'com.imali.payapp.payment_PAGAR_NOTIFICATION', // 'color' => '#008577' 'color' => '#ffffff' ); $data = array( 'transaction' => $createTransaction->transaction_id, 'loja' => $store->name, 'loja_account' => $store->account_number, 'pontos' => $createTransaction->received_points, 'pontos_usados' => $createTransaction->used_points, 'amount' => $createTransaction->amount, 'amount_debited' => $createTransaction->amount_credited, 'account_number' => $imali->account_number, 'phone' => $request->user()->phone, 'descricao' => $createTransaction->description, 'data' => $createTransaction->created_at, 'estado' => $createTransaction->estado, 'comissao' => $createTransaction->comissao, 'terminal' => 'firebase' ); $this->pushNotifification($user->firebase_token, $notification, $data); return response()->json(['message' => 'Pagamento Feito com Sucesso!', 'transaction' => $transaction, 'created_at' => $createTransaction->created_at, 'duration' => 3000 ], 200); } } } } } else { return response()->json(['message' => 'Pin Incorrecto'], 400); } }); } public function makePaymentStoreAppNew(Request $request) { $this->validate($request, [ 'account_number' => 'required', 'amount' => 'required', 'description' => 'required' ]); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => "Payment Fail", 'details' => $kycCheck, 'operation' => 'Payment', 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return $kycCheck; } else { $this->request = $request; DB::transaction(function () { $store = DB::table('stores')->where('account_number', $this->request->account_number)->first(); $imaliAccount = DB::table('users') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'users.id') ->where('users.user_id', $this->request->user()->user_id) ->select('users.*', 'imali_accounts.account_number', 'imali_accounts.points') ->first(); $valorAPagar = $this->request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $imaliAccount->id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $imaliAccount->id)->increment('points', $points); // $contractoComerciante = MerchantContract::query()->where('store_id', '=', $store->id)->first(); $contractoComerciante = DB::table('merchant_contracts')->where('store_id', '=', $store->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->min_amount; $valorMax = $contractoComerciante->max_amount; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('stores')->where('account_number', $store->account_number)->increment('balance', $valorFinal); // Add Money to Merchant // $storeT = Store::query()->where('account_number', $store->account_number)->first(); // DB::table('merchant_accounts')->where('id', $storeT->merchant_account_id)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $this->generatedTransaction = $this->trasactionGeneration->generateTransaction(); $getPayment = DB::table('payments')->where('transaction_id', $this->request->transaction)->first(); if ($getPayment) { DB::table('payments') ->where('transaction_id', $this->request->transaction) ->update([ 'received_points' => $points, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $this->request->description, 'used_points' => $this->request->used_points, 'estado' => 'success', 'status' => 'success', 'payment_type' => 'directo', 'estado_color' => '#388E3C', 'sender_id' => $imaliAccount->id, 'updated_at' => now(), ]); $this->createTransaction = DB::table('payments')->where('transaction_id', $this->request->transaction)->first(); } else { DB::table('payments')->insert([ 'transaction_id' => $this->generatedTransaction, 'sender_id' => $imaliAccount->id, 'store_id' => $store->id, 'client_id' => $this->request->user_client_id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $this->request->description, 'used_points' => $this->request->used_points, 'estado' => 'success', 'status' => 'success', 'payment_type' => 'directo', 'estado_color' => '#388E3C', 'created_at' => now(), 'updated_at' => now(), 'category_id' => $store->industry_activity ]); $this->createTransaction = DB::table('payments')->where('transaction_id', $this->generatedTransaction)->first(); } DB::table('transaction_histories')->insert([ 'user_id' => $this->request->user()->id, 'payment_id' => $this->createTransaction->id, 'category_id' => $this->createTransaction->category_id, 'transaction_type' => 'payment', 'created_at' => now(), 'updated_at' => now() ]); $actualPoints = $imaliAccount->points + $points; DB::table('history_payments')->insert([ 'sender_account' => $imaliAccount->account_number, 'sender_name' => $imaliAccount->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $imaliAccount->id, 'actual_points' => $actualPoints, 'last_points' => $imaliAccount->points, 'win_points' => $points, 'transaction_id' => $this->generatedTransaction, 'category_id' => $store->industry_activity, 'payment_id' => $this->createTransaction->id, 'created_at' => now(), 'updated_at' => now() ]); DB::table('profits')->insert([ 'payer_id' => $imaliAccount->id, 'payer_account' => $store->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $this->trasactionGeneration->generateTransaction(), 'payment_id' => $this->createTransaction->id, 'profit_payer_id' => $this->createTransaction->store_id, 'created_at' => now(), 'updated_at' => now() ]); DB::table('logs')->insert([ 'description' => $imaliAccount->account_number . ' ' . $store->name, 'details' => trans('payment_done'), 'operation' => 'Payment', 'properties' => json_encode($this->request->except(['pin'])), 'status' => 'success', 'user_id' => $this->request->user()->id ]); $notification = array( // 'icon' => 'ic_imali_logo_verde_01', 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $this->request->amount . ' MT', 'body' => 'Parabéns, ' . ' fez o pagamento de ' . $this->request->amount . ' MT ' . ' na loja ' . $store->name, 'click_action' => 'com.imali.payapp.payment_PAGAR_NOTIFICATION', 'color' => '#ffffff' ); $notificationStore = array( 'icon' => 'ic_imali_logo_verde_01', 'image' => 'https://imali.co.mz/wp-content/uploads/2022/04/iMali-Business-Logo.png', // 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $this->request->amount . ' MT', 'body' => 'Parabéns, ' . ' recebeu o pagamento de ' . $this->request->amount . ' MT ' . ' do cliente ' . $imaliAccount->name, 'click_action' => 'mz.co.imali.business.payment_TARGET_NOTIFICATION', 'color' => '#ffffff' ); $store = DB::table('stores')->where('account_number', $this->request->account_number)->first(); $category = RamoActivity::find($store->industry_activity); $data = array( 'transaction' => $this->createTransaction->transaction_id, 'loja' => $store->name, 'name' => $imaliAccount->name, 'loja_account' => $store->account_number, 'pontos' => $this->createTransaction->received_points, 'pontos_usados' => $this->createTransaction->used_points, 'amount' => $this->createTransaction->amount, 'amount_debited' => $this->createTransaction->amount_credited, 'amount_credited' => $this->createTransaction->amount_credited, 'account_number' => $imaliAccount->account_number, 'phone' => $this->request->user()->phone, 'descricao' => $this->createTransaction->description, 'data' => $this->createTransaction->created_at, 'created_at' => $this->createTransaction->created_at, 'estado' => $this->createTransaction->estado, 'comissao' => $this->createTransaction->comissao, 'message_store' => trans('payment_received'), 'message_customer' => trans('payment_done'), 'logo_category' => $category->logo, 'category' => $category->nome, 'terminal' => 'firebase' ); // Notifify customer $this->pushNotifification($imaliAccount->firebase_token, $notification, $data); $storeConfig = StoreConfig::query() ->where('store_id', '=', $store->id) ->first(); if ($storeConfig) { if ($storeConfig->notify === 1) { // NOTIFY STORE BY SMS if ($storeConfig->notify_sms === 1) { $sms = new SendSMSSislog(); $data = array( "sender_id" => $this->createTransaction->sender_id, "store_id" => $this->createTransaction->store_id, "transaction_id" => $this->createTransaction->transaction_id, "created_at" => $this->createTransaction->created_at, "amount" => $this->createTransaction->amount, ); $this->smsManager->sendSMSToComerciante($data); } if ($storeConfig->notify_email == 1) { } // NOTIFY STORE if ($storeConfig->notify_push == 1) { if ($getPayment) { $this->pushNotifification($getPayment->firebase_token, $notificationStore, $data); } else { $device = StoreDevice::query() ->where('store_id', $store->id) ->where('status', '=', 1) ->get(); foreach ($device as $d) { $this->pushNotifification($d->firebase_token, $notificationStore, $data); } } } } } }, 2); return response()->json([ 'message' => trans('payment_done'), 'transaction' => $this->generatedTransaction, 'created_at' => $this->createTransaction->created_at, 'duration' => 3000, ]); } } public function makePaymentStore(Request $request) { $user = User::find($request->user()->id); if (Hash::check($request->pin, $user->pin)) { $trasactionGeneration = new TransactionGeneration(); $payerUser = User::query()->where('user_id', '=', $request->user()->user_id)->first(); $store = Store::query()->where('account_number', '=', $request->account_number)->first(); $payer_id = $payerUser->id; $imali = ImaliAccount::query()->where('user_id', '=', $payer_id)->first(); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => $kycCheck, 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return $kycCheck; } else { if ($payerUser) { if ($imali->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Saldo Insuficiente', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402, [], JSON_NUMERIC_CHECK); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $payer_id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $payer_id)->increment('points', $points); $contractoComerciante = MerchantContract::query()->where('store_id', '=', $store->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->min_amount; $valorMax = $contractoComerciante->max_amount; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('stores')->where('account_number', $store->account_number)->increment('balance', $valorFinal); // Add Money to Merchant // $storeT = Store::query()->where('account_number', $store->account_number)->first(); // DB::table('merchant_accounts')->where('id', $storeT->merchant_account_id)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $transaction = $trasactionGeneration->generateTransaction(); $createTransaction = Payment::create([ 'transaction_id' => $transaction, 'sender_id' => $payer_id, 'store_id' => $store->id, 'client_id' => $request->user_client_id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $request->description, 'used_points' => $request->used_points, 'estado' => 'pago', 'payment_type' => 'directo', 'estado_color' => '#388E3C', 'created_at' => now(), 'updated_at' => now(), 'category_id' => $store->industry_activity ]); TransactionHistory::create([ 'user_id' => $request->user()->id, 'payment_id' => $createTransaction->id, 'category_id' => $createTransaction->category_id, 'transaction_type' => 'payment' ]); $actualPoints = $imali->points + $points; $re = $createTransaction->paymentHistoric()->create([ 'sender_account' => $imali->account_number, 'sender_name' => $payerUser->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $payerUser->id, 'actual_points' => $actualPoints, 'last_points' => $imali->points, 'win_points' => $points, 'transaction_id' => $transaction, 'category_id' => $store->industry_activity ]); // TransactionHistory::create([ // 'user_id' => $re->user_id, // 'payment_id' => $re->id, // 'category_id' => $re->category_id, // 'transaction_type' => 'payment' // ]); $saveProfit = $createTransaction->profit()->create([ 'payer_id' => $payer_id, 'payer_account' => $store->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $trasactionGeneration->generateTransaction(), 'payment_id' => $createTransaction->id, 'profit_payer_id' => $createTransaction->store_id ]); if ($saveProfit) { $generate = StoreAmountGeneration::query() ->where('id', '=', $request->store_amount_generation_id) ->first(); if ($generate) { $generate->update([ 'status' => 'sucesso', 'payment_id' => $createTransaction->id ]); $createTransaction->update([ 'store_amount_generation_id' => $generate->id ]); } $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Pagamento Feito com Sucesso', 'operation' => 'Payment', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Success', 'user_id' => $request->user()->id ]); $notification = array( // 'icon' => 'ic_imali_logo_verde_01', 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' fez o pagamento de ' . $request->amount . ' MT ' . ' na loja ' . $store->name, 'click_action' => 'com.imali.payapp.payment_PAGAR_NOTIFICATION', // 'color' => '#008577' 'color' => '#ffffff' ); $notificationStore = array( 'icon' => 'ic_imali_logo_verde_01', // 'image' => 'https://paytek-africa.com/image/logo.png', 'image' => 'https://imali.co.mz/wp-content/uploads/2022/04/iMali-Business-Logo.png', // 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' recebeu o pagamento de ' . $request->amount . ' MT ' . ' do cliente ' . $user->name, 'click_action' => 'mz.co.imali.business.payment_TARGET_NOTIFICATION', // 'color' => '#008577' 'color' => '#ffffff' ); $store = Store::query()->where('account_number', $request->account_number)->first(); $category = RamoActivity::find($store->industry_activity); $data = array( 'transaction' => $createTransaction->transaction_id, 'loja' => $store->name, 'name' => $user->name, 'loja_account' => $store->account_number, 'pontos' => $createTransaction->received_points, 'pontos_usados' => $createTransaction->used_points, 'amount' => $createTransaction->amount, 'amount_debited' => $createTransaction->amount_credited, 'amount_credited' => $createTransaction->amount_credited, 'account_number' => $imali->account_number, 'phone' => $request->user()->phone, 'descricao' => $createTransaction->description, 'data' => $createTransaction->created_at, 'created_at' => $createTransaction->created_at, 'estado' => $createTransaction->estado, 'comissao' => $createTransaction->comissao, 'message_store' => 'Pagamento Recebido Com Sucesso', 'message_customer' => 'Pagamento Efectuado Com Sucesso', 'logo_category' => $category->logo, 'category' => $category->nome, 'terminal' => 'firebase' ); // Notifify customer $this->pushNotifification($user->firebase_token, $notification, $data); $storeConfig = StoreConfig::query() ->where('store_id', '=', $store->id) // ->where('store_id', '=', $createTransaction->store_id) ->first(); if ($storeConfig) { if ($storeConfig->notify === 1) { // NOTIFICAR POR SMS if ($storeConfig->notify_sms === 1) { // $sms = new SendSMS(); // $sms->sendMessageToClientePayment($createTransaction); // $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); $this->smsManager->sendSMSToComerciante($createTransaction); } if ($storeConfig->notify_email == 1) { // Mail::to($store->email)->send(new PagamentoConfirmado($createTransaction)); // Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); } // NOTIFY STORE if ($storeConfig->notify_push == 1) { if ($generate) { $this->pushNotifification($generate->firebase_token, $notificationStore, $data); } else { $device = StoreDevice::query() ->where('store_id', $store->id) ->where('status', '=', 1) ->get(); foreach ($device as $d) { $this->pushNotifification($d->firebase_token, $notificationStore, $data); } } } } } return response()->json(['message' => 'Pagamento Efectuado com Sucesso!', 'transaction' => $transaction, 'created_at' => $createTransaction->created_at, 'duration' => 3000 ], 200); } } } } } else { return response()->json(['message' => 'Pin Incorrecto'], 400); } } public function makePaymentStore2NEW(Request $request) { DB::transaction(function ($request) { $trasactionGeneration = new TransactionGeneration(); $payerUser = User::query()->where('user_id', $request->user()->user_id)->first(); $store = Store::query()->where('account_number', $request->account_number)->first(); $payer_id = $payerUser->id; $imali = ImaliAccount::query()->where('user_id', $payer_id)->first(); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => $kycCheck, 'operation' => 'Payment', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); return $kycCheck; } else { if ($payerUser) { if ($imali->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Saldo Insuficiente', 'operation' => 'Payment', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402, [], JSON_NUMERIC_CHECK); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $payer_id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $payer_id)->increment('points', $points); $contractoComerciante = MerchantContract::query()->where('store_id', $store->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->min_amount; $valorMax = $contractoComerciante->max_amount; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('stores')->where('account_number', $store->account_number)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $transaction = $trasactionGeneration->generateTransaction(); $createTransaction = Payment::create([ 'transaction_id' => $transaction, 'sender_id' => $payer_id, 'store_id' => $store->id, 'client_id' => $request->user_client_id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $request->description, 'used_points' => $request->used_points, 'estado' => 'pago', 'estado_color' => '#388E3C', 'created_at' => now(), 'updated_at' => now(), 'category_id' => $store->industry_activity ]); // TransactionHistory::create([ // 'user_id' => $request->user()->id, // 'payment_id' => $createTransaction->id, // 'category_id' => $createTransaction->category_id, // 'transaction_type' => 'payment' // ]); $actualPoints = $imali->points + $points; $res = $createTransaction->paymentHistoric()->create([ 'sender_account' => $imali->account_number, 'sender_name' => $payerUser->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $payerUser->id, 'actual_points' => $actualPoints, 'last_points' => $imali->points, 'win_points' => $points, 'transaction_id' => $transaction, 'category_id' => $createTransaction->category_id ]); // TransactionHistory::create([ // 'user_id' => $res->user_id, // 'payment_id' => $res->id, // 'category_id' => $res->category_id, // 'transaction_type' => 'payment' // ]); $saveProfit = $createTransaction->profit()->create([ 'payer_id' => $payer_id, 'payer_account' => $store->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $trasactionGeneration->generateTransaction(), 'payment_id' => $createTransaction->id, ]); if ($saveProfit) { $this->smsManager->sendSMSToComerciante($createTransaction); // $sms = new SendSMS(); // $sms->sendMessageToClientePayment($createTransaction); // $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); // Mail::to($store->email)->send(new PagamentoConfirmado($createTransaction)); // Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); $generate = StoreAmountGeneration::query() ->where('id', $request->store_amount_generation_id) ->first(); if ($generate) { $generate->update([ 'status' => 'sucesso' ]); } $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Pagamento Feito com Sucesso', 'operation' => 'Payment', 'status' => 'Success', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Pagamento Feito com Sucesso!', 'transaction' => $transaction, 'created_at' => $createTransaction->created_at, 'duration' => 3000 ], 200); } } } } }); } public function makePaymentStore2(Request $request) { $trasactionGeneration = new TransactionGeneration(); // $payerUser = User::query()->where('user_id', $request->user_id)->first(); $payerUser = User::query()->where('user_id', '=', $request->user()->user_id)->first(); $user = User::find($request->user()->id); // $comerciante = MerchantAccount::query()->where('account_number', $request->account_number)->first(); $store = Store::query()->where('account_number', '=', $request->account_number)->first(); $payer_id = $payerUser->id; $imali = ImaliAccount::query()->where('user_id', $payer_id)->first(); $kyc = new Kyc(); $kycCheck = $kyc->checkSenderPayment($request); if ($kycCheck) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => $kycCheck, 'operation' => 'Payment', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); return $kycCheck; } else { if ($payerUser) { if ($imali->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Saldo Insuficiente', 'operation' => 'Payment', 'status' => 'Error', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402, [], JSON_NUMERIC_CHECK); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $payer_id)->decrement('balance', $valorAPagar); DB::table('imali_accounts')->where('user_id', $payer_id)->increment('points', $points); $contractoComerciante = MerchantContract::query()->where('store_id', $store->id)->first(); $taxaDesconto = $valorAPagar * ($contractoComerciante->taxa) / 100; $valorMin = $contractoComerciante->min_amount; $valorMax = $contractoComerciante->max_amount; if ($taxaDesconto < $valorMin) { $taxaDesconto = $valorMin; } if ($taxaDesconto > $valorMax) { $taxaDesconto = $valorMax; } // $valorFinal = $valorAPagar - $valorAPagar*($contractoComerciante->taxa)/100; $valorFinal = $valorAPagar - $taxaDesconto; // Recever User Merchante DB::table('stores')->where('account_number', $store->account_number)->increment('balance', $valorFinal); // Add Money to Merchant // $storeT = Store::query()->where('account_number', $store->account_number)->first(); // DB::table('merchant_accounts')->where('id', $storeT->merchant_account_id)->increment('balance', $valorFinal); // $profit = $valorAPagar*($contractoComerciante->taxa)/100; $transaction = $trasactionGeneration->generateTransaction(); $createTransaction = Payment::create([ 'transaction_id' => $transaction, 'sender_id' => $payer_id, 'store_id' => $store->id, 'client_id' => $request->user_client_id, 'received_points' => $points, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'description' => $request->description, 'used_points' => $request->used_points, 'estado' => 'pago', 'estado_color' => '#388E3C', 'payment_type' => 'directo', 'created_at' => now(), 'updated_at' => now(), 'category_id' => $store->industry_activity ]); TransactionHistory::create([ 'user_id' => $request->user()->id, 'payment_id' => $createTransaction->id, 'category_id' => $createTransaction->category_id, 'transaction_type' => 'payment' ]); $actualPoints = $imali->points + $points; $res = $createTransaction->paymentHistoric()->create([ 'sender_account' => $imali->account_number, 'sender_name' => $payerUser->name, 'amount_credited' => $valorFinal, 'status_user' => 'sender', 'status' => 'done', 'comissao' => $taxaDesconto, 'amount' => $valorAPagar, 'user_id' => $payerUser->id, 'actual_points' => $actualPoints, 'last_points' => $imali->points, 'win_points' => $points, 'transaction_id' => $transaction, 'category_id' => $createTransaction->category_id ]); TransactionHistory::create([ 'user_id' => $res->user_id, 'payment_id' => $res->id, 'category_id' => $res->category_id, 'transaction_type' => 'payment' ]); $saveProfit = $createTransaction->profit()->create([ 'payer_id' => $payer_id, 'payer_account' => $store->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorFinal, 'comissao' => $taxaDesconto, 'profit_id' => $trasactionGeneration->generateTransaction(), 'payment_id' => $createTransaction->id, ]); if ($saveProfit) { // $sms = new SendSMSSislog(); // $sms->sendSMSToComerciante($createTransaction); // $sms = new SendSMS(); // $sms->sendMessageToClientePayment($createTransaction); // $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); // Mail::to($store->email)->send(new PagamentoConfirmado($createTransaction)); // Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); $generate = StoreAmountGeneration::query() ->where('id', $request->store_amount_generation_id) ->first(); if ($generate) { $generate->update([ 'status' => 'sucesso', 'payment_id' => $createTransaction->id ]); $createTransaction->update([ 'store_amount_generation_id' => $generate->id ]); } $log = new Record(); $log->createLog([ 'description' => $imali->account_number . ' ' . $store->name, 'details' => 'Pagamento Feito com Sucesso', 'operation' => 'Payment', 'status' => 'Success', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); $notification = array( // 'icon' => 'ic_imali_logo_verde_01', 'icon' => 'ic_i_mali_cover', // 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' fez o pagamento de ' . $request->amount . ' MT ' . ' na loja ' . $store->name, 'click_action' => 'com.imali.payapp.payment_PAGAR_NOTIFICATION', // 'color' => '#008577' 'color' => '#ffffff' ); $notificationStore = array( 'icon' => 'ic_imali_logo_verde_01', // 'icon' => 'ic_i_mali_cover', 'title' => 'Pagamento ' . $request->amount . ' MT', // 'image' => 'https://paytek-africa.com/image/logo.png', 'image' => 'https://imali.co.mz/wp-content/uploads/2022/04/iMali-Business-Logo.png', 'body' => 'Parabéns, ' . ' recebeu o pagamento de ' . $request->amount . ' MT ' . ' do cliente ' . $user->name, 'click_action' => 'mz.co.imali.business.payment_TARGET_NOTIFICATION', // 'color' => '#008577' 'color' => '#ffffff' ); $store = Store::query()->where('account_number', $request->account_number)->first(); $category = RamoActivity::find($store->industry_activity); $data = array( 'transaction' => $createTransaction->transaction_id, 'loja' => $store->name, 'name' => $user->name, 'loja_account' => $store->account_number, 'pontos' => $createTransaction->received_points, 'pontos_usados' => $createTransaction->used_points, 'amount' => $createTransaction->amount, 'amount_debited' => $createTransaction->amount_credited, 'amount_credited' => $createTransaction->amount_credited, 'account_number' => $imali->account_number, 'phone' => $request->user()->phone, 'descricao' => $createTransaction->description, 'data' => $createTransaction->created_at, 'created_at' => $createTransaction->created_at, 'estado' => $createTransaction->estado, 'comissao' => $createTransaction->comissao, 'message_store' => 'Pagamento Recebido Com Sucesso', 'message_customer' => 'Pagamento Efectuado Com Sucesso', 'logo_category' => $category->logo, 'category' => $category->nome, 'terminal' => 'firebase' ); // $this->pushNotifification($user->firebase_token, $notification, $data); // // if ($generate) { // $this->pushNotifification($generate->firebase_token, $notificationStore, $data); // } // // $device = StoreDevice::query() // ->where('store_id', $store->id) // ->where('status', '=', 1) // ->get(); // // foreach ($device as $d) { // $this->pushNotifification($d->firebase_token, $notificationStore, $data); // } // NOTIFY CUSTOMER $this->pushNotifification($user->firebase_token, $notification, $data); $storeConfig = StoreConfig::query() ->where('store_id', '=', $store->id) ->first(); if ($storeConfig) { if ($storeConfig->notify == 1) { // NOTIFICAR POR SMS if ($storeConfig->notify_sms == 1) { // $sms = new SendSMS(); // $sms->sendMessageToClientePayment($createTransaction); // $sms->sendMessageToComerciante($createTransaction); // $sms->sendMessageToClientePayment($payerUser); $this->smsManager->sendSMSToComerciante($createTransaction); } if ($storeConfig->notify_email == 1) { // Mail::to($store->email)->send(new PagamentoConfirmado($createTransaction)); // Mail::to($payerUser->email)->send(new Pagamento($createTransaction)); } if ($storeConfig->notify_push == 1) { if ($generate) { $this->pushNotifification($generate->firebase_token, $notificationStore, $data); } else { $device = StoreDevice::query() ->where('store_id', $store->id) ->where('status', '=', 1) ->get(); foreach ($device as $d) { $this->pushNotifification($d->firebase_token, $notificationStore, $data); } } } } } return response()->json(['message' => 'Pagamento Feito com Sucesso!', 'transaction' => $transaction, 'created_at' => $createTransaction->created_at, 'duration' => 3000 ], 200); } } } } } public function transferMoney(Request $request) { $user = User::find($request->user()->id); if (Hash::check($request->pin, $user->pin)) { $random = new TransactionGeneration(); $senderUser = User::query()->where('user_id', $request->user()->user_id)->first(); $sender_id = $senderUser->id; $imaliAccountSender = ImaliAccount::query()->where('user_id', $senderUser->id)->first(); $imaliAccountReceiver = ImaliAccount::query()->where('account_number', $request->account_number)->first(); $imaliAccountReceiverCount = ImaliAccount::query()->where('account_number', $request->account_number)->count(); $kyc = ImaliAccount::query() ->join('imali_account_configs', 'imali_account_configs.id', '=', 'imali_accounts.imali_account_config') ->where('user_id', $senderUser->id) ->select('imali_account_configs.*') ->first(); $payments = Payment::query() ->where(['sender_id' => $senderUser->id]) ->whereDate('created_at', date('Y-m-d')) ->get(); // $recevier = User::query()->where('id', $imaliAccountReceiver->user_id)->count(); if ($imaliAccountReceiverCount > 0) { $recevier = User::query()->where('id', $imaliAccountReceiver->user_id)->first(); $kyc = new Kyc(); $request->request->add(['id' => $senderUser->id, 'receiver_id' => $recevier->id]); $result = $kyc->checkSender($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'Transfer Money', 'details' => $result, 'operation' => 'Transfer Money', 'status' => 'Error', 'origin_ip' => $request->ip(), 'properties' => json_encode($request->except(['pin'])), // 'properties' => json_encode($request->all()), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { if ($imaliAccountSender) { if ($imaliAccountReceiver->user_id === $imaliAccountSender->user_id) { // $log = new Record(); // $log->createLog([ // 'description' => $imaliAccountSender->account_number, // 'details' => 'Não pode Transferir para Si mesmo' . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, // 'operation' => 'Transfer Money', // 'status' => 'Error', // 'user_id' => $request->user()->id // ]); $log = new Record(); $log->createLog([ 'description' => 'Não pode Transferir para Si mesmo', 'details' => 'Não pode Transferir para Si mesmo', 'operation' => 'Transfer Money', 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Não pode Transferir para si mesmo!', 'class' => 'error'], 400); } elseif ($imaliAccountSender->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => 'Saldo insuficiente', 'details' => 'Saldo Insuficiente', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); $imaliAccountConfig = ImaliAccountConfig::find(1); // $valorTaxadoTotal = $valorAPagar + $valorAPagar*($imaliAccountConfig->taxa)/100; $valorTaxadoTotal = $valorAPagar + $imaliAccountConfig->taxa; // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $sender_id)->decrement('balance', $valorTaxadoTotal); // Recever User DB::table('imali_accounts')->where('account_number', $imaliAccountReceiver->account_number)->increment('balance', $valorAPagar); // $profit = $valorAPagar*$valorAPagar*($imaliAccountConfig->taxa)/100; $profit = $imaliAccountConfig->taxa; $transactionReference = $random->generateTransaction(); $transferencia = Transfer::create([ 'transaction_id' => $transactionReference, 'sender_id' => $sender_id, 'reciever_id' => $recevier->id, 'reciever_name' => $recevier->name, 'reciever_account' => $imaliAccountReceiver->account_number, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => $profit, 'estado_color' => '#388E3C', 'estado' => 'Pago', 'amount_debited' => $valorTaxadoTotal, 'created_at' => now(), 'updated_at' => now(), 'category_id' => 22 ]); TransactionHistory::create([ 'user_id' => $transferencia->sender_id, 'transfer_id' => $transferencia->id, 'category_id' => $transferencia->category_id, 'transaction_type' => 'transfer' ]); $senderHistory = TransferHistory::create([ 'transaction_id' => $transactionReference, 'user_id' => $senderUser->id, // 'account_number' =>$imaliAccountReceiver->account_number, 'client_id' => $recevier->id, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => $profit, 'estado_color' => '#388E3C', 'estado' => 'Pago', 'user_status' => 'payer', 'amount_debited' => $valorTaxadoTotal, 'created_at' => now(), 'updated_at' => now(), 'category_id' => $transferencia->category_id ]); TransactionHistory::create([ 'user_id' => $senderHistory->user_id, 'transfer_history_id' => $senderHistory->id, 'category_id' => $senderHistory->category_id, 'transaction_type' => 'transfer_history' ]); $receiverHistory = TransferHistory::create([ 'transaction_id' => $transactionReference, 'user_id' => $recevier->id, // 'account_number' =>$imaliAccountSender->account_number, 'client_id' => $senderUser->id, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => 0, 'estado_color' => '#388E3C', 'estado' => 'Recebido', 'user_status' => 'receiver', 'amount_debited' => 0, 'created_at' => now(), 'updated_at' => now(), 'category_id' => $transferencia->category_id ]); TransactionHistory::create([ 'user_id' => $receiverHistory->user_id, 'transfer_history_id' => $receiverHistory->id, 'category_id' => $receiverHistory->category_id, 'transaction_type' => 'transfer_history' ]); // $transferencia->paymentHistoric()->create([ // 'sender_account' =>$imaliAccountSender->account_number, // 'sender_name' => $senderUser->name, // 'amount_credited' => $valorTaxadoTotal, // 'status_user' => 'reciever', // 'status' => 'done', // 'comissao' => $profit, // 'amount' =>$valorAPagar, // 'sender_id' => $senderUser->id, // 'user_id' => $recevier->id, // 'actual_points' =>$recevier->points, // 'last_points' =>$recevier->points, // 'win_points' => 0, // 'transaction_id' =>$transferencia->transaction_id // ]); $saveProfit = $transferencia->profit()->create([ 'payer_id' => $senderUser->id, 'payer_account' => $imaliAccountSender->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorTaxadoTotal, 'comissao' => $profit, 'profit_id' => $transactionReference, 'payment_id' => $transferencia->id, 'transfer_id' => $request->user()->id ]); // $sms = new SendSMS(); // $sms->sendSMSTransferSender($transferencia); // $sms->sendSMSTranferReceiver($transferencia); $recevier2 = User::query()->where('id', $imaliAccountReceiver->user_id)->first(); $notification = array( // 'icon' => 'ic_i_mali_cover', 'icon' => 'ic_imali_logo_verde_01', 'title' => 'Recebeste ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' recebeste ' . $request->amount . ' MT ' . ' do ' . $request->user()->name, 'click_action' => 'com.imali.payapp.payment_TRANSFER_DETAILS', // 'color' => '#008577' 'color' => '#ffffff' ); $data = array( 'transaction' => $receiverHistory->transaction_id, 'name' => $request->user()->name, 'amount' => (double)$senderHistory->amount, 'amount_debited' => (double)$receiverHistory->amount_debited, // 'amount_credited' => (double)$receiverHistory->amount_credited, 'account_number' => (int)$imaliAccountSender->account_number, 'phone' => $request->user()->phone, 'description' => $request->description, 'data' => $receiverHistory->created_at, 'estado' => $receiverHistory->estado, 'comissao' => (double)$receiverHistory->comissao, 'terminal' => 'firebase' ); $this->pushNotifification($recevier2->firebase_token, $notification, $data); if ($request->id_request != 0) { $moneyR = MoneyRequest::query()->where('id', $request->id_request)->first(); if ($moneyR) { $moneyR->update([ 'status' => 'sucesso' ]); } } if ($saveProfit) { $log = new Record(); $log->createLog([ 'description' => 'SenderAccount: ' . $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => 'Transferência feita com Sucesso', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Success', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Transferência Feita com Sucesso!', 'transaction' => $transactionReference, 'created_at' => $transferencia->created_at ], 200); } } } } } else { $log = new Record(); $log->createLog([ 'description' => 'SenderAccount: ' . $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => 'Conta i.Mali inválida', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Conta i.Mali inválida', 'class' => 'error'], 404); } } else { return response()->json(['message' => 'Pin Incorrecto'], 400); } } public function transferMoney2(Request $request) { // return $request->fullUrl(); // return $test; // return $request->header(); // return $request->fullUrl(); // return $request->url(); // return Request::ip(); // return $request->ip(); $random = new TransactionGeneration(); $senderUser = User::query()->where('user_id', $request->user()->user_id)->first(); $sender_id = $senderUser->id; $imaliAccountSender = ImaliAccount::query()->where('user_id', $senderUser->id)->first(); $imaliAccountReceiver = ImaliAccount::query()->where('account_number', $request->account_number)->first(); $imaliAccountReceiverCount = ImaliAccount::query()->where('account_number', $request->account_number)->count(); $kyc = ImaliAccount::query() ->join('imali_account_configs', 'imali_account_configs.id', '=', 'imali_accounts.imali_account_config') ->where('user_id', $senderUser->id) ->select('imali_account_configs.*') ->first(); $payments = Payment::query() ->where(['sender_id' => $senderUser->id]) ->whereDate('created_at', date('Y-m-d')) ->get(); // $recevier = User::query()->where('id', $imaliAccountReceiver->user_id)->count(); if ($imaliAccountReceiverCount > 0) { $recevier = User::query()->where('id', $imaliAccountReceiver->user_id)->first(); $kyc = new Kyc(); $request->request->add(['id' => $senderUser->id, 'receiver_id' => $recevier->id]); $result = $kyc->checkSender($request); if ($result) { $log = new Record(); $log->createLog([ 'description' => 'SenderAccount: ' . $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => $result, 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return $result; } else { if ($imaliAccountSender) { if ($imaliAccountReceiver->user_id === $imaliAccountSender->user_id) { $log = new Record(); $log->createLog([ 'description' => $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => 'Não pode Transferir para Si mesmo', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Não pode Transferir para si mesmo!', 'class' => 'error'], 400); } elseif ($imaliAccountSender->balance < $request->amount) { $log = new Record(); $log->createLog([ 'description' => $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => 'Saldo insuficiente', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Saldo insuficiente', 'class' => 'error'], 402); } else { $valorAPagar = $request->amount; $points = round($valorAPagar); $imaliAccountConfig = ImaliAccountConfig::find(1); // $valorTaxadoTotal = $valorAPagar + $valorAPagar*($imaliAccountConfig->taxa)/100; $valorTaxadoTotal = $valorAPagar + $imaliAccountConfig->taxa; // Payer or Sender Section DB::table('imali_accounts')->where('user_id', $sender_id)->decrement('balance', $valorTaxadoTotal); // Recever User DB::table('imali_accounts')->where('account_number', $imaliAccountReceiver->account_number)->increment('balance', $valorAPagar); // $profit = $valorAPagar*$valorAPagar*($imaliAccountConfig->taxa)/100; $profit = $imaliAccountConfig->taxa; $transactionReference = $random->generateTransaction(); $transferencia = Transfer::create([ 'transaction_id' => $transactionReference, 'sender_id' => $sender_id, 'reciever_id' => $recevier->id, 'reciever_name' => $recevier->name, 'reciever_account' => $imaliAccountReceiver->account_number, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => $profit, 'estado_color' => '#388E3C', 'estado' => 'Pago', 'amount_debited' => $valorTaxadoTotal, 'created_at' => now(), 'updated_at' => now(), 'category_id' => 22 ]); TransactionHistory::create([ 'user_id' => $transferencia->sender_id, 'transfer_id' => $transferencia->id, 'category_id' => $transferencia->category_id, 'transaction_type' => 'transfer' ]); $senderHistory = TransferHistory::create([ 'transaction_id' => $transactionReference, 'user_id' => $senderUser->id, // 'account_number' =>$imaliAccountReceiver->account_number, 'client_id' => $recevier->id, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => $profit, 'estado_color' => '#388E3C', 'estado' => 'Pago', 'user_status' => 'payer', 'amount_debited' => $valorTaxadoTotal, 'created_at' => now(), 'updated_at' => now(), 'category_id' => $transferencia->category_id ]); TransactionHistory::create([ 'user_id' => $senderHistory->user_id, 'transfer_history_id' => $senderHistory->id, 'category_id' => $senderHistory->category_id, 'transaction_type' => 'transfer' ]); $receiverHistory = TransferHistory::create([ 'transaction_id' => $transactionReference, 'user_id' => $recevier->id, // 'account_number' =>$imaliAccountSender->account_number, 'client_id' => $senderUser->id, 'amount' => $valorAPagar, 'description' => $request->description, 'comissao' => 0, 'estado_color' => '#388E3C', 'estado' => 'Recebido', 'user_status' => 'receiver', 'amount_debited' => 0, 'created_at' => now(), 'updated_at' => now(), 'category_id' => $transferencia->category_id ]); TransactionHistory::create([ 'user_id' => $receiverHistory->user_id, 'transfer_history_id' => $receiverHistory->id, 'category_id' => $receiverHistory->category_id, 'transaction_type' => 'transfer' ]); // $transferencia->paymentHistoric()->create([ // 'sender_account' =>$imaliAccountSender->account_number, // 'sender_name' => $senderUser->name, // 'amount_credited' => $valorTaxadoTotal, // 'status_user' => 'reciever', // 'status' => 'done', // 'comissao' => $profit, // 'amount' =>$valorAPagar, // 'sender_id' => $senderUser->id, // 'user_id' => $recevier->id, // 'actual_points' =>$recevier->points, // 'last_points' =>$recevier->points, // 'win_points' => 0, // 'transaction_id' =>$transferencia->transaction_id // ]); $saveProfit = $transferencia->profit()->create([ 'payer_id' => $senderUser->id, 'payer_account' => $imaliAccountSender->account_number, 'amount' => $valorAPagar, 'amount_credited' => $valorTaxadoTotal, 'comissao' => $profit, 'profit_id' => $transactionReference, 'payment_id' => $transferencia->id, ]); // $sms = new SendSMS(); // $sms->sendSMSTransferSender($transferencia); // $sms->sendSMSTranferReceiver($transferencia); $recevier2 = User::query()->where('id', $imaliAccountReceiver->user_id)->first(); $notification = array( 'icon' => 'ic_imali_logo_verde_01', // 'icon' => 'ic_i_mali_cover', 'title' => 'Recebeste ' . $request->amount . ' MT', 'body' => 'Parabéns, ' . ' recebeste ' . $request->amount . ' MT ' . ' do ' . $request->user()->name, 'click_action' => 'com.imali.payapp.payment_TRANSFER_DETAILS', // 'color' => '#008577' 'color' => '#ffffff' ); // $data = array( // 'transaction' => $receiverHistory->transaction_id, // 'name' => $request->user()->name, // 'amount' => $receiverHistory->amount, // 'amount_debited' => $receiverHistory->amount_debited, // 'account_number' => $request->account_number, // 'phone' => $request->user()->phone, // 'description' => $request->description, // 'data' => $receiverHistory->created_at, // 'estado' => $receiverHistory->estado, // 'comissao' => $receiverHistory->comissao, // ); $data = array( 'transaction' => $receiverHistory->transaction_id, 'name' => $request->user()->name, 'amount' => (double)$senderHistory->amount, 'amount_debited' => (double)$receiverHistory->amount_debited, 'account_number' => (int)$imaliAccountSender->account_number, 'phone' => $request->user()->phone, 'description' => $request->description, 'data' => $receiverHistory->created_at, 'estado' => $receiverHistory->estado, 'comissao' => (double)$receiverHistory->comissao, 'terminal' => 'firebase' ); $this->pushNotifification($recevier2->firebase_token, $notification, $data); if ($request->id_request != 0) { $moneyR = MoneyRequest::query()->where('id', $request->id_request)->first(); if ($moneyR) { $moneyR->update([ 'status' => 'sucesso' ]); } } if ($saveProfit) { $log = new Record(); $log->createLog([ 'description' => $imaliAccountSender->account_number, 'details' => 'Transferência feita com Sucesso' . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'operation' => 'Transfer Money', 'status' => 'Success', 'properties' => json_encode($request->except(['pin'])), 'user_id' => $request->user()->id ]); $log->createLog([ 'description' => $imaliAccountSender->account_number . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'details' => 'Transferência Feita com Sucesso!', 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Sucess', 'origin_ip' => $request->ip(), 'origin_request' => $request->url(), 'user_id' => $request->user()->id ]); return response()->json([ 'message' => 'Transferência Feita com Sucesso!', 'transaction' => $transactionReference, 'created_at' => $transferencia->created_at ], 200); } } } } } else { $log = new Record(); $log->createLog([ 'description' => $imaliAccountSender->account_number, 'details' => 'Conta i.Mali inválida' . ' ReceiverAccount: ' . $imaliAccountReceiver->account_number, 'operation' => 'Transfer Money', // 'properties' => $request->all(), 'properties' => json_encode($request->except(['pin'])), 'status' => 'Error', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Conta i.Mali inválida', 'class' => 'error'], 404); } } public function getPayments() { $payments = Payment::query()->join('users', 'users.id', '=', 'payments.sender_id') ->join('stores', 'stores.id', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_id') ->orderBy('payments.created_at', 'desc') ->select('payments.*', 'users.name as client_name', 'stores.name as merchant_name', 'stores.account_number as merchant_account', 'imali_accounts.account_number as client_account') ->get(); return response()->json(['data' => $payments], 200); } public function getMyPayments($id) { $payments = Payment::query()->join('users', 'users.id', '=', 'payments.sender_id') ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_id') ->where('payments.sender_id', $id) ->orderBy('payments.created_at', 'desc') ->select('payments.*', 'users.name as client_name', 'stores.name as merchant_name', 'stores.account_number as merchant_account', 'imali_accounts.account_number as client_account') ->get(); return response()->json(['data' => $payments], 200); } public function getMyPayments2(Request $request) { // $payments = Payment::query()->join('users', 'users.id', '=', 'payments.sender_id') // ->join('stores', 'stores.id', 'payments.store_id') // ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_id') // ->where('payments.sender_id', $request->user()->id) // ->orderBy('payments.created_at', 'desc') // ->select('payments.*', 'users.name as client_name', 'merchant_accounts.name as merchant_name', 'merchant_accounts.account_number as merchant_account', 'imali_accounts.account_number as client_account') // ->get(); $payments = Payment::query() ->join('users', 'users.id', '=', 'payments.sender_id') ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_id') // ->join('ramo_activities', 'ramo_activities.id', 'payments.store_id') ->leftJoin('ramo_activities', 'ramo_activities.id', '=', 'payments.category_id') ->where('payments.sender_id', $request->user()->id) ->orderBy('payments.created_at', 'desc') ->select('payments.*', 'users.name as client_name', 'users.last_name', 'stores.name as merchant_name', 'stores.account_number as merchant_account', 'imali_accounts.account_number as client_account', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category') ->get(); return response()->json(['data' => $payments], 200); } public function getMyPayments3(Request $request) { $payments = Payment::query() ->join('users', 'users.id', '=', 'payments.sender_id') ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_id') // ->leftJoin('ramo_activities', 'ramo_activities.id','=', 'payments.store_id') ->leftJoin('ramo_activities', 'ramo_activities.id', '=', 'payments.category_id') // ->where('payments.sender_id', $request->user()->id) ->where('payments.sender_id', '=', 1) ->orderBy('payments.created_at', 'desc') ->select('payments.*', 'users.name as client_name', 'users.last_name', 'stores.name as merchant_name', 'stores.account_number as merchant_account', 'imali_accounts.account_number as client_account', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category') ->get(); return response()->json(['data' => $payments], 200); } public function getTransferencias() { $transfers = Transfer::query()->join('users', 'users.id', '=', 'transfers.sender_id') ->join('imali_accounts', 'imali_accounts.user_id', 'transfers.sender_id') ->orderBy('transfers.created_at', 'desc') ->select('transfers.*', 'users.name as sender_name', 'imali_accounts.account_number as sender_account') ->get(); return response()->json(['data' => $transfers], 200); } public function getMyTransferencias($id) { $transfers = Transfer::query()->join('users', 'users.id', '=', 'transfers.sender_id') ->join('imali_accounts', 'imali_accounts.user_id', 'transfers.sender_id') ->where('transfers.sender_id', $id) ->orderBy('transfers.created_at', 'desc') ->select('transfers.*', 'users.name as sender_name', 'imali_accounts.account_number as sender_account') ->get(); return response()->json(['data' => $transfers], 200); } public function getCarregamentos() { $carregamento = ImaliAccount::query() ->join('users', 'users.id', 'imali_accounts.user_id') ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') ->orderBy('recharge_imali_accounts.created_at', 'desc') ->select('users.name as user_name', 'imali_accounts.account_number as user_account', 'recharge_imali_accounts.*')->get(); return response()->json(['data' => $carregamento], 200); } public function getMyCarregamentos2($id) { $carregamento = ImaliAccount::query() ->join('users', 'users.id', 'imali_accounts.user_id') ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') ->where('users.id', $id) ->orderBy('recharge_imali_accounts.created_at', 'desc') ->select('users.name as user_name', 'imali_accounts.reference', 'imali_accounts.account_number', 'recharge_imali_accounts.*')->get(); return response()->json(['data' => $carregamento], 200); } public function getMyCarregamentos(Request $request) { // $carregamento = ImaliAccount::query() // ->join('users', 'users.id', 'imali_accounts.user_id') // ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') // ->where('users.id', auth()->user()->id) // ->orderBy('recharge_imali_accounts.created_at', 'desc') // ->select('users.name as user_name', 'imali_accounts.account_number as user_account', 'recharge_imali_accounts.*')->get(); // return response()->json(['data' => $carregamento], 200); $carregamento = ImaliAccount::query() ->join('users', 'users.id', 'imali_accounts.user_id') ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') ->where('users.id', $request->user()->id) ->orderBy('recharge_imali_accounts.created_at', 'desc') ->select('users.name as user_name', 'users.last_name', 'imali_accounts.reference', 'imali_accounts.account_number', 'recharge_imali_accounts.*')->get(); return response()->json(['data' => $carregamento], 200); } public function getTransferenciasHistory($id) { // $transfers = TransferHistory::query() // ->join('users', 'users.id', '=', 'transfer_histories.client_id') // ->join('users as sender', 'sender.id', '=', 'transfer_histories.user_id') // ->join('users as receiver', 'receiver.id', '=', 'transfer_histories.user_id') // ->join('imali_accounts as imaliSender', 'imaliSender.user_id','=', 'transfer_histories.user_id') // ->join('imali_accounts as imaliReceiver', 'imaliReceiver.user_id','=', 'transfer_histories.user_id') // ->join('imali_accounts', 'imali_accounts.user_id','=', 'transfer_histories.client_id') // ->where('transfer_histories.user_id', $id) //// ->where('transfer_histories.receiver_id', $id) // ->orderBy('transfer_histories.created_at', 'desc') // ->select( // 'transfer_histories.*', // 'sender.name as name_sender', // 'receiver.name as name_receiver', // 'imaliSender.account_number as account_sender', // 'imaliReceiver.account_number as account_receiver', // 'users.name', // 'imali_accounts.account_number' // ) // ->get(); $transfers = TransferHistory::query() ->join('users', 'users.id', '=', 'transfer_histories.client_id') ->join('users as sender', 'sender.id', '=', 'transfer_histories.user_id') ->join('users as receiver', 'receiver.id', '=', 'transfer_histories.user_id') ->join('imali_accounts as imaliSender', 'imaliSender.user_id', '=', 'transfer_histories.user_id') ->join('imali_accounts as imaliReceiver', 'imaliReceiver.user_id', '=', 'transfer_histories.user_id') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'transfer_histories.client_id') ->where('transfer_histories.user_id', $id) // ->where('transfer_histories.receiver_id', $id) ->orderBy('transfer_histories.created_at', 'desc') ->select( 'transfer_histories.*', 'users.name', 'imali_accounts.account_number' ) ->get(); return response()->json(['data' => $transfers], 200); } public function getTransferenciasHistoryData(Request $request) { // $transfers = TransferHistory::query() // ->join('users', 'users.id', '=', 'transfer_histories.client_id') // ->join('users as sender', 'sender.id', '=', 'transfer_histories.user_id') // ->join('users as receiver', 'receiver.id', '=', 'transfer_histories.user_id') // ->join('imali_accounts as imaliSender', 'imaliSender.user_id', '=', 'transfer_histories.user_id') // ->join('imali_accounts as imaliReceiver', 'imaliReceiver.user_id', '=', 'transfer_histories.user_id') // ->join('imali_accounts', 'imali_accounts.user_id', '=', 'transfer_histories.client_id') // ->where('transfer_histories.user_id', auth()->user()->id) //// ->where('transfer_histories.receiver_id', $id) // ->orderBy('transfer_histories.created_at', 'desc') // ->select( // 'transfer_histories.*', // 'users.name', // 'imali_accounts.account_number' // ) // ->get(); // return response()->json(['data' => $transfers], 200); $transfers = TransferHistory::query() ->join('users', 'users.id', '=', 'transfer_histories.client_id') ->join('users as sender', 'sender.id', '=', 'transfer_histories.user_id') ->join('users as receiver', 'receiver.id', '=', 'transfer_histories.user_id') ->join('imali_accounts as imaliSender', 'imaliSender.user_id', '=', 'transfer_histories.user_id') ->join('imali_accounts as imaliReceiver', 'imaliReceiver.user_id', '=', 'transfer_histories.user_id') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'transfer_histories.client_id') ->where('transfer_histories.user_id', $request->user()->id) // ->where('transfer_histories.receiver_id', $id) ->orderBy('transfer_histories.created_at', 'desc') ->select( 'transfer_histories.*', 'users.name', 'imali_accounts.account_number', 'imaliSender.account_number as account_number_sender', 'sender.name as name_sender', 'sender.last_name as last_name_sender', 'users.name as name_receiver', 'users.last_name as last_name_receiver', ) ->get(); return response()->json(['data' => $transfers], 200); } public function getMyVouchers(Request $request) { $voucher = PurchaseVoucher::query() ->join('users', 'users.id', '=', 'purchase_vouchers.user_id') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'purchase_vouchers.user_id') ->leftJoin('transaction_locations', 'transaction_locations.voucher_id', '=', 'purchase_vouchers.id') ->leftJoin('ramo_activities', 'ramo_activities.id', '=', 'purchase_vouchers.category_id') ->orderByDesc('purchase_vouchers.created_at') ->where('purchase_vouchers.user_id', $request->user()->id) ->select('purchase_vouchers.*', 'imali_accounts.account_number', 'users.name', 'users.last_name', 'transaction_locations.longitude', 'transaction_locations.latitude', 'transaction_locations.country_name', 'transaction_locations.country_code', 'transaction_locations.admin_area', 'transaction_locations.sub_admin_area', 'ramo_activities.nome as category') ->get(); return response()->json(['data' => $voucher], 200); } public function checkReceiver(Request $request) { $imaliAccountReceiver = ImaliAccount::query()->where('account_number', $request->account_number)->first(); if ($imaliAccountReceiver) { $log = new Record(); $log->createLog([ 'description' => $request->account_number, 'details' => 'Conta Verificada com sucesso', 'operation' => 'Check Receiver or Client', 'properties' => json_encode($request->all()), 'status' => 'Success', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Conta existente'], 200); } else { $log = new Record(); $log->createLog([ 'description' => $request->account_number, 'details' => 'Conta i.Mali inválida', 'operation' => 'Check Receiver or Client', // 'properties' => $request->all(), 'properties' => json_encode($request->all()), 'status' => 'Error', 'user_id' => $request->user()->id ]); return response()->json(['message' => 'Conta i.Mali inválida'], 404); } } public function pushNotifification($token, $notification = array(), $data = array()) { $apiKey = 'AAAA8zVzEPQ:APA91bHl_DXB6UGb_6gZlmFnaLTQoANtX_OBjvl3nOy2bSlnFhxedvk6EhGj7cZoIvmlbKeCnqGxXbuyMH_rEPuhRXvuitXzo6Pfl2TMXLar1PlifXqEhYq6tS55UMrY2Kffzj-P_UH-'; $fields = array('to' => $token, 'notification' => $notification, 'data' => $data); $headers = array('Authorization: key=' . $apiKey, 'Content-Type: application/json'); $url = 'https://fcm.googleapis.com/fcm/send'; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($curl); curl_close($curl); return json_decode($result, true); } }