KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/paras.theinteractive.in/app/Exports/FeescollectionExport.php
<?php


namespace App\Exports;

use App\Models\User;
use App\Models\Feesallotment;
use Illuminate\Support\Facades\Auth;
use App\Helpers\Frontend;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;

class FeescollectionExport implements FromArray, WithHeadings, WithStyles
{
    use Exportable;

    protected $request;

    public function __construct($request)
    {
        $this->request = $request;
    }

    public function styles(Worksheet $sheet)
    {
        // Wrap text in the column that contains the expand_due_date info
        return [
            'T' => ['alignment' => ['wrapText' => true]], // Column T = 20th column
        ];
    }

    public function array(): array
    {
        $request = $this->request;
        $schoolCodes = Frontend::get_schools();
        $returnFees = [];

        $query = Feesallotment::with('user', 'class', 'section', 'feescollection', 'users_admission', 'school');

        // Filter: School
        if (!empty($request->school)) {
            $query->whereHas('school', fn($q) => $q->where('schools.id', $request->school));
        } elseif (!Auth::user()->hasRole('superadmin')) {
            $query->whereHas('school', fn($q) => $q->whereIn('schools.id', $schoolCodes));
        }

        // Filter: Class
        if (!empty($request->class)) {
            $query->where('feesallotments.class_id', $request->class);
        }

        // Filter: Section
        if (!empty($request->section)) {
            $query->whereHas('section', fn($q) => $q->where('sections.id', $request->section));
        }

        // Filter: Roll no
        if (!empty($request->roll_no)) {
            $query->whereHas('users_admission', fn($q) => $q->where('users_admissions.enrollment_no', 'like', '%' . $request->roll_no . '%'));
        }

        // Filter: Due Date
        if (!empty($request->due_date)) {
            $query->whereDate('feesallotments.due_date', date('Y-m-d', strtotime($request->due_date)));
        }

        // Filter: active users
        $query->whereHas('user', fn($q) => $q->where('users.status', 1));
        $query->orderByDesc('id');

        $students = $query->get();

        foreach ($students as $student) {
            $admission = $student->users_admission;
            $school = $student->school;
            $class = $student->class;
            $section = $student->section;
            $collections = $student->feescollection;
            // dd($collections);
            $feesCollect = [];

            $feesCollect[] = optional($admission)->id;
            $feesCollect[] = optional($admission)->enrollment_no;
            $feesCollect[] = optional($school)->school;
            $feesCollect[] = optional($class)->class;
            $feesCollect[] = optional($section)->section;

            $user_unique_id = Frontend::getUserUniquidId($student->user_id);
            $promote = Frontend::getPromoteStudent($user_unique_id, $student->class_id);
            $feesCollect[] = optional($promote)->section;

            $feesCollect[] = optional($admission)->first_name . ' ' . optional($admission)->last_name;
            $feesCollect[] = ''; // Father name or blank
            $feesCollect[] = optional($admission)->dob;
            $feesCollect[] = optional($admission)->gender;

            $feesCollect[] = $student->amount;

            $fine = $collections->sum('fine');
            $discount = $collections->sum('discount');
            $paid = $collections->where('payment_status', 'credit')->sum('amount');
            $refund = $collections->where('payment_status', 'refund')->sum('amount');
            $adjustment = $collections->where('payment_status', 'adjustment')->sum('amount');
            $credit = $collections->where('payment_status', 'credit')->sum('amount');

            $balanceAmount = ($student->amount - $discount) - ($paid-$refund-$adjustment);
            if ($fine < 0) {
                $balanceAmount -= abs($fine);
            }




            $feesCollect[] = $fine;
            $feesCollect[] = $discount;
            $feesCollect[] = $paid;
            $feesCollect[] = ($balanceAmount != 0 && $balanceAmount != null) ? $balanceAmount + abs($fine) : "0";
            $feesCollect[] = $balanceAmount <= 0 ? "PAID" : "UNPAID";
            $feesCollect[] = $collections->count();
            $feesCollect[] = date('Y-m-d', strtotime($student->due_date));
              $feesCollect[] = (!empty($refund)) ? $refund : "0"; // Refund amount
            $feesCollect[] = (!empty($adjustment))?$adjustment:"0";
            $feesCollect[] = (!empty($credit))?$credit:"0";

            $feesCollect[] = $student->remarks;


            // Expand Due Dates with \n and wrap
            $expandDueInfo = [];

            if (!empty($student->expand_due_date) && is_string($student->expand_due_date)) {
                $decoded = json_decode($student->expand_due_date, true);
                if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) {
                    foreach ($decoded as $key => $value) {
                        $value = is_array($value) ? json_encode($value, JSON_UNESCAPED_UNICODE) : $value;

                        $date = date('d-m-Y', strtotime($key));
                        $expandDueInfo[] = "$date: $value";
                    }
                }
            }

            $feesCollect[] = implode("\n", $expandDueInfo); // final cell with line breaks

            $returnFees[] = $feesCollect;
        }

        return $returnFees;
    }

    public function headings(): array
    {
        return [
            'Admission No',
            'Enrollment No',
            'Center',
            'Attempt',
            'Batch',
            'Current Batch',
            'Full Name',
            'Father Name',
            'DOB',
            'Gender',
            'Fees',
            'Fine',
            'Discount',
            'Paid',
            'Balance',
            'Status',
            'Installments',
            'Due Date',
               'Refund',
            'Adjustment',
            'Credit',
            'Remarks',

            'Expand Due Dates'
        ];
    }
}

Anon7 - 2021