|
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/paras.theinteractive.in/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 = [];
$query = Feesallotment::with('user', 'class', 'section', 'feescollection', 'users_admission', 'school');
// Schools =========================
if (!empty($request->school)) {
$query->whereHas('school', function ($q) use ($request) {
$q->where('schools.id', $request->school);
});
} else {
if (!Auth::user()->hasRole('superadmin')) {
$query->whereHas('school', function ($q) use ($schoolCodes) {
$q->whereIn('schools.id', $schoolCodes);
});
}
}
// Class ============================
if (!empty($request->class)) {
$query->where('feesallotments.class_id', $request->class);
}
// Section
if (!empty($request->section)) {
$query->whereHas('section', function ($q) use ($request) {
$q->where('sections.id', $request->section);
});
}
// Roll No.
if (!empty($request->roll_no)) {
$query->whereHas('users_admission', function ($q) use ($request) {
$q->where('users_admissions.enrollment_no', 'LIKE', '%' . $request->roll_no . '%');
});
}
// feesallot ========================
if (!empty($request->due_date)) {
$query->where('feesallotments.due_date', '=', date('Y-m-d', strtotime($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->school()->first()->school;
$feesCollect[] = $student->class()->first()->class;
$feesCollect[] = $student->section()->first()->section;
$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;
$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');
if($student->feescollection()->sum('fine') < 0)
{
$balanceAmount = $balanceAmount - abs($student->feescollection()->sum('fine'));
}
$feesCollect[] = (($balanceAmount != 0 || $balanceAmount != NULL))?$balanceAmount:"0";
if ($balanceAmount <= 0) {
$feesCollect[] = "PAID";
} else {
$feesCollect[] = "UNPAID";
};
$feesCollect[] = $student->feescollection()->count();
$feesCollect[] = date('Y-m-d', strtotime($student->due_date));
$feesCollect[] = $student->remarks;
array_push($returnFees, $feesCollect);
}
return $returnFees;
}
public function headings(): array
{
return [
'admission_no',
'enrollment_no',
'center',
'attempt',
'batch',
'fullname',
'father_name',
'dob',
'gender',
'fees',
'fine',
'discount',
'paid',
'balance',
'status',
'instalment',
'due_date',
'Remarks'
];
}
}