<?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()
{
}
}