|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/coaching/coaching.bizkrypt.com/app/Exports/ |
Upload File : |
<?php
namespace App\Exports;
use App\Models\User;
use App\Models\School;
use App\Helpers\Frontend;
use App\Models\Feesallotment;
use App\Models\Feescollection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;
// use Maatwebsite\Excel\Concerns\FromCollection;
class FeescollectionExport implements FromArray, WithHeadings
{
use Exportable;
/**
* @return \Illuminate\Support\Collection
*/
protected $request;
public function __construct($request)
{
$this->request = $request;
}
public function array(): array
{
$request = $this->request;
$schoolCodes = Frontend::get_schools();
$query = User::with('guardian', 'school', 'class', 'section', 'feesallot');
$returnFees = [];
if (!empty($this->request->class)) {
$query = Feesallotment::with('user', 'class', 'section', 'feescollection', 'users_admission', 'school');
// Schools =========================
if (!empty($this->request->school)) {
$query->whereHas('school', function ($q) use ($request) {
$q->where('schools.id', $this->request->school);
});
} else {
if (!Auth::user()->hasRole('superadmin')) {
$query->whereHas('school', function ($q) use ($schoolCodes) {
$q->whereIn('schools.id', $schoolCodes);
});
}
}
// Class ============================
if (!empty($this->request->class)) {
$query->where('feesallotments.class_id', $this->request->class);
}
// Section
if (!empty($this->request->section)) {
$query->whereHas('section', function ($q) use ($request) {
$q->where('sections.id', $this->request->section);
});
}
// Roll No.
if (!empty($this->request->roll_no)) {
$query->whereHas('users_admission', function ($q) use ($request) {
$q->where('users_admissions.enrollment_no', 'LIKE', '%' . $this->request->roll_no . '%');
});
}
// feesallot ========================
if (!empty($this->request->due_date)) {
$query->where('feesallotments.due_date', '=', date('Y-m-d', strtotime($this->request->due_date)));
}
$query->whereHas('user', function ($q) use ($request) {
$q->where('users.status', '1');
});
$query->orderBy('id', 'DESC');
$students = $query->get();
// dd($students);
foreach ($students as $student) {
$feesCollect = array();
$feesCollect[] = $student->users_admission()->first()->id;
$feesCollect[] = $student->users_admission()->first()->enrollment_no;
$feesCollect[] = $student->users_admission()->first()->first_name . ' ' . $student->users_admission()->first()->last_name;
$feesCollect[] = "";
$feesCollect[] = $student->users_admission()->first()->dob;
$feesCollect[] = $student->users_admission()->first()->gender;
$feesCollect[] = $student->amount;
// $feesCollects = $student->feesallot->where('id', $student->fees_id)->last()->with('feescollection')->where('id', $student->fees_id)->first()->feescollection;
// dd($feesCollects);
// Paid Amount ====================
// $paidAmount = 0;
// $discountAmount = 0;
// $fineAmount = 0;
// if (!empty($feesCollects)) {
// foreach ($feesCollects as $fees) {
// $paidAmount += $fees->amount;
// $discountAmount += $fees->discount;
// $fineAmount += $fees->fine;
// }
// }
// Paid Amount =====================
// $fees = $student->feesallot->where('id', $student->fees_id)->last()->amount;
$balanceAmount = ($student->amount - $student->feescollection()->sum('discount')) - $student->feescollection()->sum('amount');
$feesCollect[] = $student->feescollection()->sum('fine');
$feesCollect[] = $student->feescollection()->sum('discount');
$feesCollect[] = $student->feescollection()->sum('amount');
$feesCollect[] = $balanceAmount;
if ($balanceAmount <= 0) {
$feesCollect[] = "PAID";
} else {
$feesCollect[] = "UNPAID";
};
$feesCollect[] = $student->feescollection()->count();
$feesCollect[] = date('Y-m-d', strtotime($student->due_date));
array_push($returnFees, $feesCollect);
}
return $returnFees;
}
return $returnFees;
}
public function headings(): array
{
return [
'admission_no',
'enrollment_no',
'fullname',
'father_name',
'dob',
'gender',
'fees',
'fine',
'discount',
'paid',
'balance',
'status',
'instalment',
'due_date'
];
}
}