| Path : /var/www/html/thb_loan_system/app/Exports/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : //var/www/html/thb_loan_system/app/Exports/CollectionSheetExport.php |
<?php
namespace App\Exports;
use App\Models\Loan;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithHeadings;
class CollectionSheetExport implements FromQuery, WithHeadings, WithMapping
{
private $current_row = 0;
public $start_date;
public $end_date;
public $user_id;
public function __construct($start_date, $end_date, $user_id = null)
{
$this->start_date = $start_date;
$this->end_date = $end_date;
$this->user_id = $user_id;
}
public function headings(): array
{
return [
"No",
"Loan officer",
"Borrower",
"Phone",
"Loan Product",
"Expected repayment date",
"Maturity date",
"Expected amount",
"Due",
"Outstanding",
];
}
public function query()
{
return Loan::query()
->loan_total_penalty($this->end_date)
->loan_total_fees($this->end_date)
->loan_total_interest($this->end_date)
->loan_total_principal($this->end_date)
->loan_total_interest_waived($this->end_date)
->loan_total_pay_off($this->end_date)
->loan_total_paid()
->loan_total_penalty()
->loan_total_fees()
->loan_total_interest()
->loan_total_principal()
->loan_total_interest_waived()
->loan_total_pay_off()
->transactions_sum_payment($this->start_date, $this->end_date)
->transactions_sum_waived($this->start_date, $this->end_date)
->with([
'borrower',
'schedules',
'loan_product:id,name,repayment_order',
'loan_officer:id,first_name,last_name',
'latest_schedule' => function ($query) {
return $query->whereBetween('due_date', [$this->start_date, $this->end_date])->withCount('loanTransactions');
},
])
->when(!empty($this->user_id), function ($query){
$query->where('loan_officer_id', $this->user_id);
})
->where('branch_id', session('branch_id'))
->where('status', 'disbursed')
->get();
}
public function map($transaction): array
{
$this->current_row++;
return [
$this->current_row,
$transaction->name,
$transaction->category->name,
(float)$transaction->amount,
$transaction->transaction_date->format('d-m-Y'),
];
}
}