<?php

namespace App\Modules\Admin;

use App\Modules\Admin\Dashboard\BorrowRequest;
use App\Modules\Admin\Dashboard\Earnings;
use App\Modules\Admin\Dashboard\RegisteredCompanies;
use App\Modules\Admin\Dashboard\Transactions;

class Dashboard
{
    private $earnings;
    private $registeredCompanies;
    private $transactions;
    private $approvedRequest;

    public function __construct()
    {
        $this->earnings = new Earnings;
        $this->registeredCompanies = new RegisteredCompanies;
        $this->transactions = new Transactions;
        $this->approvedRequest = new BorrowRequest;
    }

    public function getDashboardData($payload)
    {
        if(!$payload->selectedYear){
            $payload->selectedYear = date('Y');
        }

		$earningsData = $this->earnings->getData($payload);
		$transactionsData = $this->transactions->getData($payload);
        return [
			'subscriptionFeeEarningsPerMonth' => $earningsData['subscriptionFeeEarningsPerMonth'],
            'serviceChargeEarningsPerMonth' => $earningsData['serviceChargeEarningsPerMonth'],
            'totalEarningsPerMonth' => $earningsData['totalEarningsPerMonth'],
            'newCompanies' => $this->registeredCompanies->allCompanies($payload),
            'newGuests' => $this->registeredCompanies->newGuests($payload),
            'newAffiliates' => $this->registeredCompanies->newAffiliates($payload),
			'allCompanyTransactions' => $transactionsData['allCompanyTransactions'],
            'unpaidApprovedInvoiceTransactions' => $transactionsData['unpaidApprovedInvoiceTransactions'],
            'partiallyPaidApprovedInvoiceTransactions' => $transactionsData['partiallyPaidApprovedInvoiceTransactions'],
            'paidApprovedInvoiceTransactions' => $transactionsData['paidApprovedInvoiceTransactions'],
            'approvedRequest' => $this->approvedRequest->getData($payload),
        ];
    }
}
