<?php
namespace App\Http\Controllers;
use App\Bank\Payment;
use App\Imali\ImaliAccount;
use App\Imali\Transfer;
use App\TransferHistory;
use App\User;
use Illuminate\Http\Request;
class ImaliAccountController extends Controller
{
public function getImaliByPhoneNumber($phone)
{
$imali = ImaliAccount::query()
->join('users', 'users.id', '=', 'imali_accounts.user_id')
->where('users.phone', $phone)
->select('users.name', 'imali_accounts.account_number')
->first();
if ($imali) {
return response()->json($imali);
} else {
return response()->json(['message' => 'Conta não encontrada'], 404);
}
}
public function getContacts(Request $request)
{
$contacts = User::query()
->select('phone')
->where('phone', '<>', $request->user()->phone)
->get();
return response()->json(['data' => $contacts]);
}
public function getContacts2(Request $request)
{
$contacts = User::query()
->select('phone')
->where('phone', '<>', $request->user()->phone)
->get();
return response()->json($contacts);
}
public function getImaliTransactions($datainicial, $datafinal, $imali, $type)
{
$data1 = (string)$datainicial;
$data2 = (string)$datafinal;
// return (string)$datafinal. ''.''.$datainicial;
// return $data1;
if ($datainicial === $datafinal) {
// return "Entra";
if ($type === 'transfer') {
$transfers = TransferHistory::query()
->join('users', 'users.id', '=', 'transfer_histories.user_id')
->join('users as receiver', 'receiver.id', '=', 'transfer_histories.client_id')
->join('imali_accounts', 'imali_accounts.user_id', 'transfer_histories.user_id')
->orderBy('transfer_histories.created_at', 'desc')
->whereDate('transfer_histories.created_at', $datafinal)
->where('imali_accounts.account_number', $imali)
->select('transfer_histories.*', 'receiver.name as reciever_name', 'users.name as sender_name', 'imali_accounts.account_number as sender_account')
->get();
return response()->json(['data' => $transfers], 200);
}
if ($type === 'payment') {
$imaliA = ImaliAccount::query()
->where('account_number', $imali)
->first();
$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', $imaliA->user_id)
->orderBy('payments.created_at', 'desc')
->whereDate('payments.created_at', $datafinal)
->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);
}
if ($type === 'recharge') {
$imaliA = ImaliAccount::query()
->where('account_number', $imali)
->first();
$recharges = ImaliAccount::query()
->join('users', 'users.id', '=', 'imali_accounts.user_id')
->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.user_id')
->orderBy('recharge_imali_accounts.created_at', 'desc')
// ->where('recharge_imali_accounts.imali_account_id', $imaliA->id)
->whereDate('recharge_imali_accounts.created_at', $datafinal)
->get();
return response()->json(['data' => $recharges], 200);
}
} else {
if ($type === 'transfer') {
$transfers = TransferHistory::query()
->join('users', 'users.id', '=', 'transfer_histories.user_id')
->join('users as receiver', 'receiver.id', '=', 'transfer_histories.client_id')
->join('imali_accounts', 'imali_accounts.user_id', 'transfer_histories.user_id')
->orderBy('transfer_histories.created_at', 'desc')
// ->whereBetween('transfer_histories.created_at', [$datainicial, $datafinal])
->whereDate('transfer_histories.created_at', '>=', $datainicial)
->whereDate('transfer_histories.created_at', '<=', $datafinal)
->where('imali_accounts.account_number', $imali)
->select('transfer_histories.*', 'receiver.name as reciever_name', 'users.name as sender_name', 'imali_accounts.account_number as sender_account')
->get();
return response()->json(['data' => $transfers], 200);
}
if ($type === 'payment') {
$imaliA = ImaliAccount::query()
->where('account_number', $imali)
->first();
$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', $imaliA->user_id)
->orderBy('payments.created_at', 'desc')
// ->whereBetween('payments.created_at', [$datainicial, $datafinal])
->whereDate('payments.created_at', '>=', $datainicial)
->whereDate('payments.created_at', '<=', $datafinal)
->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);
}
if ($type === 'recharge') {
$imaliA = ImaliAccount::query()
->where('account_number', $imali)
->first();
$recharges = ImaliAccount::query()
->join('users', 'users.id', '=', 'imali_accounts.user_id')
->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.user_id')
->orderBy('recharge_imali_accounts.created_at', 'desc')
->where('recharge_imali_accounts.imali_account_id', $imaliA->id)
// ->whereBetween('recharge_imali_accounts.created_at', [$datainicial, $datafinal])
->whereDate('recharge_imali_accounts.created_at', '>=', $datainicial)
->whereDate('recharge_imali_accounts.created_at', '<=', $datafinal)
->get();
return response()->json(['data' => $recharges], 200);
}
// return response()->json(['data' => $transfers, 'payments' => $payments, 'recharges' => $recharges], 200);
}
}
public function updateKyc(Request $request)
{
$kyc = ImaliAccount::query()
->where('account_number', $request->account_number)
->first();
if ($kyc) {
$kyc->update(['imali_account_config' => $request->kyc_id]);
return response()->json(['message' => 'kyc actualizado com Sucesso']);
} else {
return response()->json(['Conta não encontrada'],404);
}
}
}