• File: TransactionHistoryController.php
  • Full Path: /var/www/imalipartnersapi/app/Http/Controllers/TransactionHistoryController.php
  • Date Modified: 02/07/2023 8:01 PM
  • File size: 5.47 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Imali\ImaliAccount;
use App\TransactionHistory;
use Illuminate\Http\Request;

class
TransactionHistoryController extends Controller
{
    public function getExtrato($accountNumber, $datainicial, $datafinal)
    {
//        $data = TransactionHistory::query()
//            ->leftJoin('purchase_vouchers', 'purchase_vouchers.id', '=', 'transaction_histories.voucher_id')
//            ->leftJoin('payments', 'payments.id', '=', 'transaction_histories.payment_id')
//            ->leftJoin('transfer_histories', 'transfer_histories.id', '=', 'transaction_histories.transfer_history_id')
//            ->leftJoin('waters', 'waters.id', '=', 'transaction_histories.water_id')
//            ->leftJoin('credelecs', 'credelecs.id', '=', 'transaction_histories.credelec_id')
//            ->leftJoin('recharge_imali_accounts', 'recharge_imali_accounts.id', '=', 'transaction_histories.recharge_id')
//            ->leftJoin('ramo_activities', 'ramo_activities.id', '=', 'transaction_histories.category_id')
//            ->orderByDesc('transaction_histories.created_at')
//            ->paginate(25);
//
//        $data = TransactionHistory::query()
//            ->leftJoin('purchase_vouchers', function ($join) {
//                $join->on('purchase_vouchers.id', '=', 'transaction_histories.voucher_id')
//                    ->where('transaction_histories.voucher_id', '<>', null);
//            })
//            ->leftJoin('payments', function ($join) {
//                $join->on('payments.id', '=', 'transaction_histories.payment_id');
//            })
//            ->leftJoin('transfer_histories', function ($join) {
//                $join->on('transfer_histories.id', '=', 'transaction_histories.transfer_history_id');
//            })
//            ->leftJoin('waters', function ($join) {
//                $join->on('waters.id', '=', 'transaction_histories.water_id');
//            })
//            ->leftJoin('credelecs', function ($join) {
//                $join->on('credelecs.id', '=', 'transaction_histories.credelec_id');
//            })
//            ->leftJoin('recharge_imali_accounts', function ($join) {
//                $join->on('recharge_imali_accounts.id', '=', 'transaction_histories.recharge_id');
//            })
//            ->leftJoin('ramo_activities', function ($join) {
//                $join->on('ramo_activities.id', '=', 'transaction_histories.category_id');
//            })
//            ->orderByDesc('transaction_histories.created_at')
////            ->whereNull(['transaction_histories.voucher_id', 'transaction_histories.credelec_id', 'transaction_histories.transfer_history_id',
////                'transaction_histories.water_id', 'transaction_histories.recharge_id', 'transaction_histories.category_id'])
////            ->select('transaction_histories.transaction_type')
//            ->paginate(25);
//
//        $data->makeHidden(['voucher_id', 'credelect_id', 'water_id', 'transfer_history_id', 'payment_id', 'transfer_id', 'recharge_id', 'money_request_id', 'id', 'category_id']);

//        $data = TransactionHistory::query()
//            ->with(['vouchers', function ($query) {
//                $query->select('id');
//            }])
//            ->get();

        if ($datainicial === $datafinal) {

            $account = ImaliAccount::query()
                ->where('account_number', $accountNumber)
                ->first();

            if ($account) {
//                'payment.store','payment.storePayment'

                $data = TransactionHistory::query()
                    ->with(['voucher', 'transferHistory.client', 'transferHistory', 'water', 'payment','payment.storePayment','credelec', 'recharge', 'category', 'user'])
                    ->orderByDesc('transaction_histories.created_at')
                    ->where('transaction_histories.user_id', $account->user_id)
                    ->whereDate('transaction_histories.created_at', '=', $datainicial)
                    ->paginate(10);

                $data->makeHidden(['voucher_id', 'credelec_id', 'water_id', 'transfer_history_id', 'payment_id', 'transfer_id', 'recharge_id', 'money_request_id', 'id', 'category_id']);

                return response()->json($data);
            } else {
                return response()->json(['message' => 'Conta inválida'], 404);
            }

        } else {

            $account = ImaliAccount::query()
                ->where('account_number', $accountNumber)
                ->first();

            if ($account) {

                $data = TransactionHistory::query()
                    ->with(['voucher', 'transferHistory.client', 'transferHistory', 'water', 'payment', 'credelec', 'recharge', 'category', 'user'])
                    ->orderByDesc('transaction_histories.created_at')
                    ->where('transaction_histories.user_id', $account->user_id)
                    ->whereDate('transaction_histories.created_at', '>=', $datainicial)
                    ->whereDate('transaction_histories.created_at', '<=', $datafinal)
                    ->paginate(10);

                $data->makeHidden(['voucher_id', 'credelec_id', 'water_id', 'transfer_history_id', 'payment_id', 'transfer_id', 'recharge_id', 'money_request_id', 'id', 'category_id']);

                return response()->json($data);
            } else {
                return response()->json(['message' => 'Conta inválida'], 404);
            }

        }


    }
}