<?php namespace App\Http\Controllers; use App\Admin; use App\Bank\Payment; use App\Bank\Profit; use App\Credelec; use App\Imali\ImaliAccount; use App\Imali\ImaliAccountConfig; use App\Imali\MerchantAccount; use App\Imali\RechargeImaliAccount; use App\Imali\Transfer; use App\Log; use App\PurchaseVoucher; use App\SmsLog; use App\Store; use App\TransferHistory; use App\Water; use Carbon\Carbon; use Illuminate\Http\Request; class DashboardController extends Controller { public function getPayments($datainicial, $datafinal) { if ($datainicial === $datafinal) { $payments = Payment::query()->join('users', 'users.id', '=', 'payments.sender_id') // ->join('merchant_accounts', 'merchant_accounts.id', 'payments.merchant_account_id') ->join('stores', 'stores.id', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_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); } else { $payments = Payment::query()->join('users', 'users.id', '=', 'payments.sender_id') // ->join('merchant_accounts', 'merchant_accounts.id', 'payments.merchant_account_id') ->join('stores', 'stores.id', 'payments.store_id') ->join('imali_accounts', 'imali_accounts.user_id', 'payments.sender_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); } } public function getTransferencias($datainicial, $datafinal) { if ($datainicial === $datafinal) { $transfers = Transfer::query()->join('users', 'users.id', '=', 'transfers.sender_id') ->join('imali_accounts', 'imali_accounts.user_id', 'transfers.sender_id') ->orderBy('transfers.created_at', 'desc') ->whereDate('transfers.created_at', $datafinal) ->select('transfers.*', 'users.name as sender_name', 'imali_accounts.account_number as sender_account') ->get(); return response()->json(['data' => $transfers], 200); } else { $transfers = Transfer::query()->join('users', 'users.id', '=', 'transfers.sender_id') ->join('imali_accounts', 'imali_accounts.user_id', 'transfers.sender_id') ->orderBy('transfers.created_at', 'desc') ->whereDate('transfers.created_at', '>=', $datainicial) ->whereDate('transfers.created_at', '<=', $datafinal) ->select('transfers.*', 'users.name as sender_name', 'imali_accounts.account_number as sender_account') ->get(); return response()->json(['data' => $transfers], 200); } } public function getImaliConfiguracoes() { $acount = ImaliAccountConfig::all(); return response()->json(['data' => $acount], 200); } public function getCarregamentos($datainicial, $datafinal) { if ($datainicial === $datafinal) { $carregamento = ImaliAccount::query() ->join('users', 'users.id', 'imali_accounts.user_id') ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') ->orderBy('recharge_imali_accounts.created_at', 'desc') ->whereDate('recharge_imali_accounts.created_at', $datafinal) ->select('users.name as user_name', 'imali_accounts.account_number as user_account', 'recharge_imali_accounts.*')->get(); return response()->json(['data' => $carregamento], 200); } else { $carregamento = ImaliAccount::query() ->join('users', 'users.id', 'imali_accounts.user_id') ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', 'imali_accounts.id') ->orderBy('recharge_imali_accounts.created_at', 'desc') // ->whereBetween('recharge_imali_accounts.created_at', [$datainicial, $datafinal]) ->whereDate('recharge_imali_accounts.created_at', '>=', $datainicial) ->whereDate('recharge_imali_accounts.created_at', '<=', $datafinal) ->select('users.name as user_name', 'imali_accounts.account_number as user_account', 'recharge_imali_accounts.*')->get(); return response()->json(['data' => $carregamento], 200); } } public function getIndicadores() { $balance = ImaliAccount::query()->sum('balance'); $pontos = ImaliAccount::query()->sum('points'); $configImali = ImaliAccountConfig::find(1); $pontosCorrespondemEmMetical = $configImali->point_value; $coresponde = ($pontos * 1) / $pontosCorrespondemEmMetical; $comercianteBalance = Payment::query() ->whereDate('created_at', date('Y-m-d')) ->sum('amount_credited'); $lucros = Profit::query() ->whereDate('created_at', date('Y-m-d')) ->sum('comissao'); $transferencias = Transfer::query() ->whereDate('created_at', date('Y-m-d')) ->sum('amount'); $adminusers = Admin::query() ->count(); $recharges = RechargeImaliAccount::query() ->count(); $merchants = MerchantAccount::query() ->count(); $stores = Store::query() ->count(); $logs = Log::query()->count(); $imaliacounts = ImaliAccount::query()->count(); $payments = Payment::query()->count(); // TOPUP $voucherTv = PurchaseVoucher::query() ->where('type', '=', 'Tv') ->whereDate('created_at', date('Y-m-d')) ->sum('vouchervalue'); $voucherRecarga = PurchaseVoucher::query() ->where('type', '=', 'recarga') ->whereDate('created_at', date('Y-m-d')) ->sum('vouchervalue'); $water = Water::query() ->whereDate('created_at', date('Y-m-d')) ->sum('purchaseValue'); $credelec = Credelec::query() ->whereDate('created_at', date('Y-m-d')) ->sum('amount'); $smsLog = SmsLog::find(1); $sms = 0; if ($smsLog) { $sms = $smsLog->balance; } return response()->json([ 'balanceWallets2' => number_format((float)$balance, 2), 'balanceWallets' => $balance, 'balanceMerchants2' => number_format((float)$comercianteBalance, 2), 'balanceMerchants' => $comercianteBalance, 'profits2' => number_format((float)$lucros, 2), 'profits' => $lucros, 'totalPoints' => $pontos, 'totalTransfers2' => number_format((float)$transferencias, 2), 'totalTransfers' => $transferencias, 'pointsToMetical2' => number_format((float)$coresponde, 2), 'pointsToMetical' => $coresponde, 'users' => $adminusers, 'recharges' => $recharges, 'merchants' => $merchants, 'stores' => $stores, 'logs' => $logs, 'imali_accounts' => $imaliacounts, 'payments' => $payments, 'voucher' => $voucherRecarga, 'tv' => $voucherTv, 'water' => $water, 'credelec' => $credelec, 'sms' => $sms ], 200); } public function updateImaliAccountConfig(Request $request) { $config = ImaliAccountConfig::find($request->id); if ($config) { $update = $config->update($request->all()); if ($update) { return response()->json(['message' => 'Kyc Actualizado com Sucesso!'], 200); } } } public function getMyStatics() { $data = Payment::query() ->get(); return response()->json(['data' => $data]); } public function getStatistics() { } }