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
:
AccountController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers; use App\Classes\GeneralGenerator; use App\Models\AccountCardType; use App\Models\AccountType; use App\Models\Company; 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\Hash; use Ramsey\Uuid\Uuid; use SimpleSoftwareIO\QrCode\Facades\QrCode; class AccountController extends Controller { protected $empresa; public function getOperatorUser(Request $request) { $store = Store::query() ->join('operators', 'operators.store_id', '=', 'stores.id') ->join('merchants', 'merchants.id', '=', 'stores.merchant_id') ->where('operators.id', '=', $request->user()->id) ->get(); return response()->json($store); } public function checkAccountCards($number) { } public function getAccoutTypes() { $data = AccountType::query()->orderBy('name', 'asc')->get(); return response()->json(['data' => $data]); } public function getAllAccounts() { // $data = CustomerAccount::query() // ->leftJoin('companies', 'companies.id', '=', 'customer_accounts.company_id') // ->orderBy('companies.name', 'asc') // ->select('companies.name as company_name', // 'companies.nuit as company_nuit', // 'companies.email as company_email', // 'companies.address as company_address', // 'companies.contact_phone_fixo as company_contact_phone_fixo', // 'companies.contact_phone_mobile as company_contact_phone_mobile', // 'companies.manager_name as company_manager_name', // 'customer_accounts.*') // ->get(); $data = CustomerAccount::query() // ->leftJoin('companies', 'companies.id', '=', 'customer_accounts.company_id') ->orderBy('name', 'asc') ->get(); return response()->json(['data' => $data]); } public function getAccount($id) { $account = CustomerAccount::find($id); if ($account) { $cards = CustomerCard::query()->where('customer_account_id', $account->id)->get(); $cardsTotal = CustomerCard::query()->where('customer_account_id', $account->id)->count(); $payments = Payment::query() ->join('customer_cards', 'customer_cards.id', '=', 'payments.customer_card_id') ->join('users', 'users.id', '=', 'payments.user_id') ->where('payments.customer_account_id', $account->id) ->select('payments.*', 'customer_cards.card_number', 'customer_cards.username as titular_name', 'customer_cards.phone_number as phone_titular', 'users.name as operador_name') ->get(); $recharges = Recharge::query() ->join('customer_accounts', 'customer_accounts.id', '=', 'recharges.customer_account_id') ->join('users', 'users.id', '=', 'recharges.user_id') ->select('recharges.*', 'users.name as operator_name') ->where('customer_account_id', $account->id) ->orderByDesc('recharges.created_at') ->get(); $totalPayments = Payment::query()->where('customer_account_id', $account->id)->count(); $totalAmount = Payment::query()->where('customer_account_id', $account->id)->sum('amount'); $cardsTotalActivo = CustomerCard::query() ->where('customer_account_id', $account->id) ->where('status', '=', 'activo') ->count(); $cardsTotalBloqueado = CustomerCard::query() ->where('customer_account_id', $account->id) ->where('status', '=', 'bloqueado') ->count(); $cardsTotalEcerado = CustomerCard::query() ->where('customer_account_id', $account->id) ->where('status', '=', 'expirado') ->count(); $rechargesTotal = Recharge::query() ->where('customer_account_id', $account->id) ->count(); $rechargesTotalAmount = Recharge::query() ->where('customer_account_id', $account->id) ->sum('amount'); return response()->json([ 'totalCards' => $cardsTotal, 'totalCardsActivo' => $cardsTotalActivo, 'totalCardsBloqueado' => $cardsTotalBloqueado, 'totalCardsExpirado' => $cardsTotalEcerado, 'totalPayments' => $totalPayments, 'totalAmount' => $totalAmount, 'totalRecharges' => $rechargesTotal, 'totalRechargesAmount' => $rechargesTotalAmount, 'account' => $account, 'cards' => $cards, 'payments' => $payments, 'recharges' => $recharges ]); } else { return response()->json(['message' => 'Conta não encontrado!'], 400); } } public function getCompanies() { $data = Company::query() ->orderBy('name', 'asc') ->get(); return response()->json(['data' => $data]); } public function addAccount(Request $request) { $this->validate($request, [ 'name' => 'required', 'email' => 'required', 'mobile_phone1' => 'required', 'payment_enabled' => 'required', 'card_has_limit' => 'required', 'document_type' => 'required', 'document_number' => 'required', 'account_type_id' => 'required', 'address' => 'required', // 'balance' => 'required' ], [ 'name.required' => 'Nome do Responsavél Obrigatório' ]); $tipoConta = AccountType::query()->where('id', $request->account_type_id)->first(); if ($tipoConta->name == 'Empresa' || $tipoConta->name == 'empresa') { // $this->empresa = Company::create([ // 'name' => $request->company_name, // 'nuit' => $request->company_nuit, // 'email' => $request->company_email, // 'address' => $request->company_address, // 'contact_phone_fixo' => $request->company_contact_phone_fixo, // 'contact_phone_mobile' => $request->company_contact_phone_mobile, // 'manager_name' => $request->company_manager_name, // 'password' => Hash::make('12345678'), // 'pin' => Hash::make('1234'), // 'status' => 'activo', // 'balance' => '1000', // 'balance_cards' => '100', // ]); // } else { // $this->empresa = null; } $g = new GeneralGenerator(); $uuid = Uuid::uuid4(); QrCode::size(250)->format('svg')->mergeString(public_path('/images/geral/logo.png'))->generate($uuid, public_path('images/account/' . $uuid . '.svg')); $conta = ""; if ($this->empresa != null) $conta = $this->empresa->id; else $conta = null; $conta = CustomerAccount::create([ 'name' => $request->name, 'email' => $request->email, 'mobile_phone1' => $request->mobile_phone1, 'mobile_phone2' => $request->mobile_phone2, 'account_number' => $g->generateAccountNumberAndCardNumber(), 'reference' => $g->generateReferenceAccount(), 'card_has_limit' => $request->card_has_limit, // 'card_balance_limit' => $request->card_balance_limit, 'card_balance_limit' => 0, 'balance' => 0, 'balance_cards' => 0, 'qrcode' => url('/') . '/images/account/' . $uuid . '.svg', 'public_id' => $uuid, 'document_type' => $request->document_type, 'document_number' => $request->document_number, 'payment_enabled' => $request->payment_enabled, 'address' => $request->address, // 'company_id' => $conta, 'account_type_id' => $tipoConta->id, 'user_id' => $request->user()->id ]); return response()->json(['message' => "Conta Criada Com Sucesso! \n Conta: $conta->account_number"]); } public function updateAccount(Request $request) { $this->validate($request, [ 'public_id' => 'required' ]); $data = CustomerAccount::query() ->where('public_id', $request->public_id) ->first(); if ($data) { $data->update([ 'name' => $request->name, 'email' => $request->email, 'mobile_phone1' => $request->mobile_phone1, 'mobile_phone2' => $request->mobile_phone2, 'card_has_limit' => $request->card_has_limit, 'card_balance_limit' => $request->card_balance_limit, // 'balance' => $request->balance, 'document_type' => $request->document_type, 'document_number' => $request->document_number, 'payment_enabled' => $request->payment_enabled, 'address' => $request->address, 'account_type_id' => $request->account_type_id ]); return response()->json(['message' => 'Parámetros da Conta ' . $data->account_number . ' alterados com Sucesso'], 201); } else { return response()->json(['message' => 'Conta inválida'], 402); } } public function associateCartToAccount(Request $request) { $this->validate($request, [ 'account_number' => 'required', 'card_number' => 'required' ]); $card = CustomerCard::query() ->where('card_number', $request->card_number) ->first(); $account = CustomerAccount::query() ->where('account_number', $request->account_number) ->first(); if ($account) { if ($card) { if ($card->customer_account_id != null && $card->session_status == 1) { return response()->json(['message' => 'Este Cartão já está associado a uma Conta.'], 400); } else { $card->update([ 'customer_account_id' => $account->id ]); // Adicionar Tipo de Cartão $validar = AccountCardType::query() ->where('customer_account_id', $account->id) ->where('card_type_id', $card->card_type_id) ->count(); if (!($validar > 0)) { AccountCardType::create([ 'customer_account_id' => $account->id, 'card_type_id' => $card->card_type_id ]); } return response()->json(['message' => 'Cartão associado com Sucesso!'], 200); } } else { return response()->json(['message' => 'Cartão inválido!'], 400); } } else { return response()->json(['message' => 'Conta inválida'], 402); } } }