Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
imaliapi
/
app
/
Http
/
Controllers
:
BimController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers\Partner; use App\Bank\MasterAccount; use App\Classes\Kyc; use App\Classes\Record; use App\Classes\SendSMS; use App\Classes\TransactionGeneration; use App\Http\Controllers\Controller; use App\Imali\ImaliAccount; use App\Imali\RechargeImaliAccount; use Illuminate\Http\Request; class BimController extends Controller { public function verificarEntidadeReferencia(Request $request) { $this->validate($request, [ 'entity' => 'required', 'reference' => 'required', 'apiKey' => 'required', 'amount' => 'required' // 'amount' => 'required', // 'transaction_id' => 'required', ], [ 'entity.required' => 'O Campo entity é de carácter Obrigatório', 'reference.required' => 'Referencia obrigatoria', 'apiKey.required' => 'Chave da api obrigatoria', 'amount.required' => 'Montante necessário', // 'transaction_id.required' => 'Identificador da transacção necessária', ]); $kyc = new Kyc(); $result = $kyc->checkEntidadeReferencia($request); if ($result) { return $result; } else { return response()->json(['msg' => 'Validacao efectuada com Sucesso', 'msgtype' => 'S', 'msgid' => 'S001', 'estado' => 'P002', 'valorTotal' => $request->amount, 'dataDoc'=> date('Y/m/d')], 200); } } public function makeRecharge(Request $request) { $this->validate($request, [ 'entity' => 'required', 'reference' => 'required', 'apiKey' => 'required', 'amount' => 'required', 'transaction_id' => 'required', ], [ 'entity.required' => 'O Campo entity é de carácter Obrigatório', 'reference.required' => 'Referencia obrigatoria', 'amount.required' => 'Montante necessário', 'transaction_id.required' => 'Identificador da transacção necessária', 'apiKey.required' => 'Api Key necessária', ]); $kyc = new Kyc(); $result = $kyc->checkEntidadeReferencia($request); if ($result) { return $result; } else { $imaliAccount = ImaliAccount::query()->where('reference', $request->reference)->first(); $transactionString = new TransactionGeneration(); $user = ImaliAccount::query()->join('users', 'users.id', '=', 'imali_accounts.user_id') ->where('users.id', $imaliAccount->user_id) ->select('users.*') ->first(); $kyc = new Kyc(); $kyckCheck = $kyc->checkRecharge($request); if ($kyckCheck) { return $kyckCheck; } else { if ($imaliAccount) { $balanceActual = $imaliAccount->balance + ($request->amount)/100; $masterAccount = MasterAccount::find(2); $recharge = RechargeImaliAccount::create([ 'imali_account_id' => $imaliAccount->id, 'transaction_id' => $transactionString->generateTransaction(), 'amount' => $request->amount/100, 'last_balance' => $imaliAccount->balance, 'balance' => $balanceActual, 'recharge_way' => 'Banco', // 'recharge_way' => 'Banco Referencia' . $imaliAccount->reference, 'estado' => 'sucesso', 'estado_color' => '#388E3C', 'master_account_id' => $masterAccount->id, 'data_partner' => $request->partner_date, 'reference_partner' => $request->transaction_id, 'reference_doc_partner' => $request->partner_reference_doc ]); $masterBalance = $masterAccount->balance + $request->amount/100; $masterAccount->update(['balance' => $masterBalance]); if ($recharge) { $sms = new SendSMS(); $imaliAccount->update(['balance' => $balanceActual]); $notification = array( 'icon' => 'ic_imali_logo_verde_01', // 'icon' => 'ic_i_mali_cover', 'title' => 'Carregamento ' . $recharge->amount . ' MT', 'body' => 'Parabéns, ' . ' carregaste com ' . $recharge->amount . ' MT ' . ' na sua conta ' . $imaliAccount->account_number, 'click_action' => 'com.imali.payapp.payment_RECHARGE_DETAILS', // 'color' => '#008577' 'color' => '#ffffff' ); $data = array( 'transaction' => $recharge->transaction_id, 'name' => $user->name, 'amount' => (double)$recharge->amount, 'phone' => $user->phone, 'reference' => $imaliAccount->reference, 'data' => $recharge->created_at, 'estado' => $recharge->estado, 'recharge_way' => $recharge->recharge_way, 'route' => 'RECHARGE_DETAILS', 'terminal' => 'firebase' ); $this->pushNotifification($user->firebase_token, $notification, $data); $sms->sendSMSForUserRecharge($recharge); // $sms->sendSMSForUserRecharge($recharge); } if ($recharge) { // Mail::to($user->email)->send(new Carregamento($recharge)); } $log = new Record(); $log->createLog([ 'description' => $imaliAccount->account_number, 'details' => $user->name . ' ' . $user->last_name, 'operation' => 'Recharge by Reference', 'status' => 'success', 'user_id' => 1 ]); if ($recharge) { // return response()->json(['message' => 'Carregamento, feito com Sucesso'], 200); return response()->json(['msg' => 'Validacao efectuada com Sucesso', 'msgtype' => 'S', 'msgid' => 'S001', 'referenciarecibo' => $recharge->transaction_id, 'data' => $recharge->created_at->format('Y/m/d')], 200); } } } // return response()->json(['msg' => 'Validacao efectuada com Sucesso', 'msgtype' => 'S', 'msgid' => 'S001'], 200); } } 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); } }