Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
WIKIPEDIA
/
amparoapi
/
app
/
Http
/
Controllers
:
PaymentController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers; use App\Classes\GeneralCheck; use App\Classes\GeneralGenerator; use App\Classes\GeneralNotification; use App\Models\CustomerAccount; use App\Models\CustomerCard; use App\Models\Payment; use App\Models\Recharge; use App\Models\Store; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class PaymentController extends Controller { protected $request; protected $token; protected $account; protected $payment; protected $accounBalance; protected $accounPhone; public function __construct(Request $request) { $this->request = $request; } public function getStoreOperatorPayments(Request $request) { $data = Payment::query() ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('customer_cards', 'customer_cards.id', '=', 'payments.customer_card_id') ->join('customer_accounts', 'customer_accounts.id', '=', 'payments.customer_account_id') ->leftJoin('operators', 'operators.id', '=', 'payments.user_id') ->where('payments.user_id', $request->user()->id) ->orderByDesc('payments.created_at') ->select('stores.store_name', 'customer_cards.card_number', 'customer_cards.username as card_username', 'customer_cards.phone_number as card_username_phone', 'customer_accounts.name as account_name', 'operators.name as operator_name', 'payments.*') ->get(); return response()->json(['data' => $data], 200); } public function getStoreOperatorPaymentsResume(Request $request) { $data = Payment::query() ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('customer_cards', 'customer_cards.id', '=', 'payments.customer_card_id') ->join('customer_accounts', 'customer_accounts.id', '=', 'payments.customer_account_id') ->leftJoin('operators', 'operators.id', '=', 'payments.user_id') ->where('payments.user_id', $request->user()->id) ->orderByDesc('payments.created_at') ->select('stores.store_name', 'customer_cards.card_number', 'customer_cards.username as card_username', 'customer_cards.phone_number as card_username_phone', 'customer_accounts.name as account_name', 'operators.name as operator_name', 'payments.*') ->get()->take(2); return response()->json(['data' => $data], 200); } public function getPayments() { $data = Payment::query() ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('customer_cards', 'customer_cards.id', '=', 'payments.customer_card_id') ->join('customer_accounts', 'customer_accounts.id', '=', 'payments.customer_account_id') ->leftJoin('operators', 'operators.id', '=', 'payments.user_id') ->orderByDesc('payments.created_at') ->select('stores.store_name', 'customer_cards.card_number', 'customer_cards.username as card_username', 'customer_cards.phone_number as card_username_phone', 'customer_accounts.name as account_name', 'operators.name as operator_name', 'payments.*') ->get(); return response()->json(['data' => $data], 200); } public function getCardHistory($number) { $payments = Payment::query() ->join('stores', 'stores.id', '=', 'payments.store_id') ->join('customer_cards', 'customer_cards.id', '=', 'payments.customer_card_id') ->join('customer_accounts', 'customer_accounts.id', '=', 'payments.customer_account_id') ->leftJoin('operators', 'operators.id', '=', 'payments.user_id') ->where('customer_cards.card_number', $number) ->orderByDesc('payments.created_at') ->select('stores.store_name', 'customer_cards.card_number', 'customer_cards.username as card_username', 'customer_cards.phone_number as card_username_phone', 'customer_accounts.name as account_name', 'operators.name as operator_name', 'payments.*') ->get(); $data = CustomerAccount::query() // ->leftJoin('companies', 'companies.id', '=', 'customer_accounts.company_id') ->join('customer_cards', 'customer_cards.customer_account_id', '=', 'customer_accounts.id') ->select('customer_cards.*', 'customer_accounts.name as manager_name', 'customer_accounts.name as company_name' , 'customer_accounts.nuit as company_nuit') // ->select('customer_cards.*', 'customer_accounts.name as manager_name') ->where('customer_cards.card_number', $number) ->first(); $dataRecharges = Recharge::query() ->join('customer_cards', 'customer_cards.id', '=', 'recharges.customer_card_id') ->join('users', 'users.id', '=', 'recharges.user_id') ->select('recharges.*', 'users.name as operator_name', 'customer_cards.card_number', 'customer_cards.username as titular_card_name', 'customer_cards.phone_number as titular_card_phone_number') ->orderByDesc('recharges.created_at') ->where('customer_cards.card_number', $number) ->get(); return response()->json(['payments' => $payments, 'data' => $data, 'recharges' => $dataRecharges], 200); } public function makePayment(Request $request) { $this->validate($request, [ 'token_sms' => 'required|min:6', 'amount' => 'required' ]); $account = CustomerAccount::query() ->leftJoin('customer_cards', 'customer_cards.customer_account_id', '=', 'customer_accounts.id') ->where('customer_cards.card_number', $request->card_number) ->select('customer_cards.*', 'customer_accounts.balance as account_balance', 'customer_accounts.id as account_id', 'customer_accounts.mobile_phone1 as account_phone') ->first(); $this->account = $account; $checker = new GeneralCheck(); $checkResult = $checker->checkPayment($request, $account); $generate = new GeneralGenerator(); if ($checkResult) { return $checkResult; } else { $this->token = $generate->generateTransaction(); DB::transaction(function () { DB::table('customer_accounts')->where('id', $this->account->account_id)->decrement('balance', $this->request->amount); DB::table('customer_cards')->where('id', $this->account->id)->decrement('card_balance', $this->request->amount); DB::table('stores')->where('store_public_id', $this->request->store_id)->increment('store_balance', $this->request->amount); DB::table('customer_cards')->where('card_number', $this->request->card_number)->update(['session_status' => 1]); $payment = Payment::create([ 'transaction' => $this->token, 'amount' => $this->request->amount, 'amount_debited' => $this->request->amount, 'amount_account' => $this->request->amount, 'amount_credited' => 0, 'amount_card' => 0, 'fee' => 0, 'description' => 'Pagamento de factura na clinica amparo', // 'store_id' => $this->request->store_id, 'store_id' => 1, 'customer_card_id' => $this->account->id, 'customer_account_id' => $this->account->account_id, 'user_id' => $this->request->user()->id ]); $this->payment = $payment; }); $store = Store::query() ->join('operators', 'operators.store_id', '=', 'stores.id') ->where('operators.id', $request->user()->id) ->select('stores.*') ->first(); // $account2 = CustomerAccount::query() // ->leftJoin('customer_cards', 'customer_cards.customer_account_id', '=', 'customer_accounts.id') // ->where('customer_cards.card_number', $request->card_number) // ->select('customer_cards.*', 'customer_accounts.balance as account_balance', // 'customer_accounts.id as account_id', 'customer_accounts.mobile_phone1 as account_phone', // 'customer_accounts.balance as account_balance') // ->first(); $account2 = CustomerCard::query() ->leftJoin('customer_accounts', 'customer_cards.customer_account_id', '=', 'customer_accounts.id') ->where('customer_cards.card_number', $request->card_number) ->select('customer_cards.*', 'customer_accounts.balance as account_balance', 'customer_accounts.id as account_id', 'customer_accounts.mobile_phone1 as account_phone', 'customer_accounts.balance as account_balance') ->first(); // COMENTAR $this->accounBalance = 0; if ($account2->account_balance != null) { $this->accounBalance = $account2->account_balance; } if ($account2->account_phone != null) { $data = [ 'phone' => $account->phone_number, 'phoneAccount' => $account->account_phone, 'transaction' => $this->payment->transaction, 'amount' => $this->payment->amount, 'createdAt' => $this->payment->created_at, 'cardNumber' => $account->card_number, 'username' => $account->username, 'loja' => $store->store_name, 'balance' => $account2->account_balance ]; $sms = new GeneralNotification(); // if ($this->account->can_receive_notification == 1) { // $sms->paymentConfirmationClient($data); // $sms->paymentConfirmationAccount($data); // } else { // $sms->paymentConfirmationAccount($data); // } } // FIM COMENTAR if ($this->payment) { return response()->json(['message' => 'Pagamento Efectuado Com Suceso'], 200); } } } }