<?php namespace App\Http\Controllers; use App\Classes\TransactionGeneration; use App\Imali\ImaliAccount; use App\MoneyRequest; use App\User; use App\UserMoneyRequest; use Illuminate\Http\Request; class MoneyRequestController extends Controller { public function getPedido($id, $clientId) { $pedidos = MoneyRequest::query() // ->join('users', 'users.id', '=', 'money_requests.user_id') ->join('user_money_requests', 'user_money_requests.money_request_id', '=', 'money_requests.id') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'user_money_requests.user_id') // ->join('imali_accounts as imali_accounts_clients', 'imali_accounts_clients.user_id', '=', 'user_money_requests.user_id') ->join('imali_accounts as imali_accounts_clients', 'imali_accounts_clients.user_id', '=', 'user_money_requests.client_id') ->join('users as client', 'client.id', '=', 'user_money_requests.client_id') // ->join('users as client', 'client.id', '=', 'user_money_requests.user_id') // ->where('user_money_requests.user_id', $request->user()->id) ->where('money_requests.id', $id) ->where('user_money_requests.user_id', $clientId) ->select('money_requests.*', 'client.name', 'client.phone', 'imali_accounts_clients.account_number', 'user_money_requests.user_status') // ->select('money_requests.*', 'user_money_requests.user_status') ->orderByDesc('money_requests.created_at') ->first(); return response()->json($pedidos); } public function getMeusPedidos(Request $request) { // $pedidos = MoneyRequest::query() // ->join('users', 'users.id', '=', 'money_requests.user_id') // ->join('imali_accounts', 'imali_accounts.user_id', '=', 'money_requests.user_id') // ->join('imali_accounts as imali_accounts_clients', 'imali_accounts_clients.user_id', '=', 'money_requests.client_id') // ->join('users as client', 'client.id', '=', 'money_requests.client_id') // ->where('money_requests.user_id', $request->user()->id) // ->select('money_requests.*', 'client.name', 'client.phone', 'imali_accounts_clients.account_number') // ->orderByDesc('money_requests.created_at') // ->get(); $size = (!request()->per_page) ? 4 : request()->per_page; $new_start_date = null; $new_end_date = null; if ($request->filled('start_date')) { $start_date = explode('-', $request->start_date); if (strlen($start_date[2]) >= 4) $new_start_date = $start_date[2] . '-' . $start_date[1] . '-' . $start_date[0]; } if ($request->filled('end_date')) { $end_date = explode('-', $request->end_date); if (strlen($end_date[2]) >= 4) $new_end_date = $end_date[2] . '-' . $end_date[1] . '-' . $end_date[0]; } $pedidos = MoneyRequest::query() // ->join('users', 'users.id', '=', 'money_requests.user_id') ->join('user_money_requests', 'user_money_requests.money_request_id', '=', 'money_requests.id') ->join('imali_accounts', 'imali_accounts.user_id', '=', 'user_money_requests.user_id') // ->join('imali_accounts as imali_accounts_clients', 'imali_accounts_clients.user_id', '=', 'user_money_requests.user_id') ->join('imali_accounts as imali_accounts_clients', 'imali_accounts_clients.user_id', '=', 'user_money_requests.client_id') ->join('users as client', 'client.id', '=', 'user_money_requests.client_id') // ->join('users as client', 'client.id', '=', 'user_money_requests.user_id') ->where('user_money_requests.user_id', $request->user()->id) ->select('money_requests.*', 'client.name', 'client.phone', 'imali_accounts_clients.account_number', 'user_money_requests.user_status') // ->select('money_requests.*', 'user_money_requests.user_status') // new ------------------------ ->when($request->filled('start_date'), function ($query) use ($request, $new_start_date) { $query->whereDate('money_requests.created_at', '>=', $new_start_date ?? $request->start_date); }) ->when($request->filled('end_date'), function ($query) use ($request, $new_end_date) { $query->whereDate('money_requests.created_at', '<=', $new_end_date ?? $request->end_date); }) // new ------------------------ ->orderByDesc('money_requests.created_at') // ->get(); ->paginate($size); return response()->json($pedidos, 200); //return response()->json(['data' => $pedidos]); } public function requestMoney(Request $request) { $client = User::query()->where('phone', $request->phone)->first(); $token = new TransactionGeneration(); $imali = ImaliAccount::query()->where('user_id', $request->user()->id)->first(); $response = MoneyRequest::create([ 'transaction' => $token->generateTransaction(), 'amount' => $request->amount, 'fee' => 0, 'description' => $request->description, 'user_id' => $request->user()->id, 'client_id' => $client->id, //'user_id' => $client->id, //'client_id' => $request->user()->id, 'status' => 'pendente' ]); // MoneyRequest::create([ // 'transaction' => $token->generateTransaction(), // 'amount' => $request->amount, // 'fee' => 0, // 'status_user' => 'receptor', // 'description' => $request->description, // 'user_id' => $client->id, // 'client_id' => $request->user()->id // ]); UserMoneyRequest::create([ 'user_status' => 'remetente', 'user_id' => $request->user()->id, 'fee' => 0, 'money_request_id' => $response->id, 'client_id' => $client->id ]); UserMoneyRequest::create([ 'user_status' => 'receptor', 'user_id' => $client->id, 'fee' => 0, 'money_request_id' => $response->id, 'client_id' => $request->user()->id ]); $notification = array( 'icon' => 'ic_i_mali_cover', 'title' => 'Pedido ' . $request->amount . ' MT', // 'body' => $request->user()->name . ' pediu ' . $request->amount . ' na sua conta ' . $imali->account_number, 'body' => $request->user()->name . ' pediu ' . $request->amount . ' MT', // 'image' => 'http://imali.co.mz/public/images/imali_novo.png', 'click_action' => 'com.imali.payapp.payment_TARGET_NOTIFICATION', 'color' => '#008577' ); $data = array( 'id' => $response->id, 'client_id' => $client->id, 'cliente' => $response->user_id, 'name' => $request->user()->name, 'amount' => $response->amount, 'user_id' => $request->user()->id, 'account_number' => $imali->account_number, 'phone' => $request->user()->phone, 'description' => $response->description, 'status' => $response->status, 'route' => 'TARGET_NOTIFICATION', 'createdAt' => $response->created_at, 'updatedAt' => $response->updated_at, 'terminal' => 'firebase' ); $this->pushNotifification($client->firebase_token, $notification, $data); return response()->json(['message' => 'Pedido de dinheiro enviado com Sucesso', 'transaction' => $response->transaction]); } public function recusarPedido(Request $request) { $moneyRequest = MoneyRequest::find($request->id); $imali = ImaliAccount::query() ->where('user_id', $moneyRequest->user_id) ->first(); if ($moneyRequest) { $moneyRequest->update([ 'status' => 'recusado' ]); $notification = array( // 'icon' => 'ic_i_mali_cover', 'icon' => 'ic_imali_logo_verde_01', 'title' => 'Pedido Recusado', 'body' => $request->user()->name . ' recusou o seu pedido de ' . $moneyRequest->amount . ' MT', // 'click_action' => 'com.imali.payapp.payment_TARGET_NOTIFICATION', 'click_action' => 'com.imali.payapp.payment_NOTICIA', // 'color' => '#008577' 'color' => '#fff' ); $data = array( 'id' => $moneyRequest->id, 'name' => $request->user()->name, 'client_id' => $request->client_id, 'user_id' => $imali->id, 'amount' => $moneyRequest->amount, 'account_number' => $imali->account_number, 'sms' => $request->user()->name . ' recusou o seu pedido de ' . $moneyRequest->amount . ' MT', 'phone' => $request->user()->phone, 'description' => $moneyRequest->description, 'route' => 'NOTICIA', 'terminal' => 'firebase' ); $clientUser = User::find($moneyRequest->user_id); $this->pushNotifification($clientUser->firebase_token, $notification, $data); return response()->json(['message' => 'Pedido Recusado com Sucesso '], 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); } }