|
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/Imports/ |
Upload File : |
<?php
namespace App\Imports;
use App\Models\Role;
use App\Models\User;
use App\Models\School;
use App\Models\Classes;
use App\Models\Feesallotment;
use App\Models\Feescollection;
use App\Models\Feesmaster;
use App\Models\Section;
use App\Models\Guardian;
use App\Models\Users_admission;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Maatwebsite\Excel\Concerns\ToModel;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
class ImportFees implements ToModel, WithStartRow, WithValidation, WithHeadingRow, SkipsEmptyRows
{
use Importable;
public function startRow(): int
{
return 2;
}
public function rules(): array
{
return [
"class_code" => "required|exists:classes,code",
"section_code" => "required|exists:sections,code",
"admission_no" => "required|exists:users_admissions,id",
"fees_master_code" => "required|exists:feesmasters,code",
"tax" => "required",
"payment_date" => "required",
"fees_allot" => "required|numeric",
"fees_collect" => "required|numeric",
"discount" => "required|numeric",
];
}
public function model($row)
{
$classCode = Classes::where('code', trim($row['class_code']))->first();
$sectionCode = Section::where('code', trim($row['section_code']))->first();
$users_admission = Users_admission::join('users','users.user_unique_id','=','users_admissions.user_unique_id')->where('users_admissions.id', trim($row['admission_no']))->first(['users.id','users_admissions.id as admission_no']);
$feesMaster = Feesmaster::where('code', trim($row['fees_master_code']))->first();
// dd($feesMaster);
$feesallotment = Feesallotment::create([
'class_id' => $classCode->id,
'section_id' => $sectionCode->id,
'user_id' => $users_admission->id,
'amount' => $feesMaster->amount,
'tax_value' => trim($row['tax']),
'code' => trim($feesMaster->code),
'due_date' => $feesMaster->due_date,
'status' => 'unpaid',
'created_at' => date('Y-m-d H:i:s'),
]);
// User Create
if (!empty($feesallotment)) {
$feescollection = Feescollection::create([
'user_id' => $users_admission->id,
'feesallotment_id' => $feesallotment->id,
'amount' => trim($row['fees_collect']),
'payment_id' => uniqid(),
'mode' => 'cash',
'fine' => 0,
'discount' => trim($row['discount']),
'note' => trim($row['note']),
'payment_status' => 'credit',
'payment_date' => Date::excelToDateTimeObject($row['payment_date'])->format('Y-m-d'),
'created_at' => date('Y-m-d H:i:s'),
]);
$totalFees = $feescollection->amount;
$totalReceived = trim($row['fees_collect'])+trim($row['discount']);
if($totalFees == $totalReceived){
$updateFeesAllot = array(
'status' => 'paid'
);
Feesallotment::where('id',$feesallotment->id)->update($updateFeesAllot);
}
}
}
}