File manager - Edit - /var/www/payraty/hris/app/Imports/EmployeesImport.php
Back
<?php namespace App\Imports; use App\Models\Branch; use Maatwebsite\Excel\Concerns\Importable; use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\WithHeadingRow; use App\Models\User; use App\Models\Employee; use App\Models\Profile; use App\Models\JobInfo; use App\Models\BankInfo; use Illuminate\Support\Str; use Illuminate\Support\Facades\Hash; use PhpOffice\PhpSpreadsheet\Shared\Date; class EmployeesImport implements ToModel, WithHeadingRow { use Importable; function convertExcelDate($value) { if (is_numeric($value)) { return Date::excelToDateTimeObject($value)->format('Y-m-d'); } return $value; } public function model(array $row) { // Skip empty rows if (empty(array_filter($row))) { return null; } // Create User $user = User::create([ 'email' => $row['email'], 'password' => Hash::make('password'), 'invitation_code' => Str::random(22), // Random 22-character code 'is_active' => 0, 'is_registered' => 0, ]); $branch = null; if (isset($row['branch'])) { $branch = Branch::updateOrCreate( [ 'name' => $row['branch'], 'created_by' => auth()->user()->creatorId(), ], [ 'name' => $row['branch'], ] ); } // Create Profile Profile::create([ 'user_id' => $user->id, 'first_name' => $row['first_name'] ?? null, 'last_name' => $row['last_name'] ?? null, 'middle_name' => $row['middle_name'] ?? null, 'dob' => isset($row['dob']) ? $this->convertExcelDate($row['dob']) : null, 'work_phone' => $row['work_phone'] ?? null, 'mobile_phone' => $row['mobile_phone'] ?? null, 'work_email' => $row['work_email'] ?? null, 'personal_email' => $row['email'], 'address' => $row['address'] ?? null, 'nationality' => $row['nationality'] ?? null, 'gender' => $row['gender'] ?? null, 'marital_status' => $row['marital_status'] ?? null, ]); // Create Job Info $jobData = [ 'user_id' => $user->id, 'employee_id' => $row['employee_id'], 'employment_type_id' => $row['employment_type_id'], 'pay_frequency' => $row['pay_frequency'], 'gross_amount' => $row['gross_salary_amount'] ?? 0, 'annual_rent_amount' => $row['annual_rent_amount'] ?? 0.00, 'basic_salary_percentage_on_gross' => $row['percentage_basic_salary_on_gross'], 'currency' => $row['currency'] ?? "NGN", 'hire_date' => isset($row['employment_date']) ? $this->convertExcelDate($row['employment_date']) : null, 'is_annual_pay' => isset($row['is_annual_pay']) && strtolower($row['is_annual_pay']) == 'yes' ]; JobInfo::create($jobData); // Create Bank Info BankInfo::create([ 'user_id' => $user->id, 'bank_name' => $row['bank_name'] ?? null, 'account_number' => $row['account_number'] ?? null, 'account_name' => $row['account_name'] ?? null, 'bank_code' => $row['bank_code'] ?? null, // 'pfa_pin' => $row['pfa_pin'] ?? null, 'pfa_name' => $row['pfa_name'] ?? null, // 'pfa_plan_id' => $row['pfa_plan_id'] ?? null, 'tax_id' => $row['tax_id'] ?? null, 'nhf_number' => $row['nhf_number'] ?? null, ]); return new Employee([ 'user_id' => $user->id, 'name' => trim(($row['first_name'] ?? '') . ' ' . ($row['last_name'] ?? '')), 'dob' => $row['dob'] ?? null, 'gender' => $row['gender'] ?? null, 'phone' => $row['work_phone'] ?? null, 'address' => $row['address'] ?? null, 'email' => $row['email'], 'password' => Hash::make('password'), 'employee_id' => $user->id, 'branch_id' => $branch ? $branch->id : 0, 'department_id' => 0, 'designation_id' => 0, 'account_holder_name' => $row['account_name'] ?? null, 'account_number' => $row['account_number'] ?? null, 'bank_name' => $row['bank_name'] ?? null, 'tax_payer_id' => $row['tax_id'] ?? null, 'salary' => $row['gross_salary_amount'] ?? 0, 'is_active' => 1, ]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.30 | Generation time: 0.44 |
proxy
|
phpinfo
|
Settings