App\Http\Controllers\ReportController::generateClientReport PHP Method

generateClientReport() private method

private generateClientReport ( $startDate, $endDate, $isExport ) : array
$startDate
$endDate
$isExport
return array
    private function generateClientReport($startDate, $endDate, $isExport)
    {
        $columns = ['client', 'amount', 'paid', 'balance'];
        $account = Auth::user()->account;
        $displayData = [];
        $reportTotals = [];
        $clients = Client::scope()->withArchived()->with('contacts')->with(['invoices' => function ($query) use($startDate, $endDate) {
            $query->where('invoice_date', '>=', $startDate)->where('invoice_date', '<=', $endDate)->where('invoice_type_id', '=', INVOICE_TYPE_STANDARD)->where('is_recurring', '=', false)->withArchived();
        }]);
        foreach ($clients->get() as $client) {
            $amount = 0;
            $paid = 0;
            foreach ($client->invoices as $invoice) {
                $amount += $invoice->amount;
                $paid += $invoice->getAmountPaid();
            }
            $displayData[] = [$isExport ? $client->getDisplayName() : $client->present()->link, $account->formatMoney($amount, $client), $account->formatMoney($paid, $client), $account->formatMoney($amount - $paid, $client)];
            $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'amount', $amount);
            $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'paid', $paid);
            $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'balance', $amount - $paid);
        }
        return ['columns' => $columns, 'displayData' => $displayData, 'reportTotals' => $reportTotals];
    }