• File: ImaliAccountController.php
  • Full Path: /var/www/imaliapi/app/Http/Controllers/ImaliAccountController.php
  • Date Modified: 04/15/2024 8:53 PM
  • File size: 7.97 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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);
        }
    }
}