|
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/peoplebee.in/___accounts-admin/app/Imports/ |
Upload File : |
<?php
namespace App\Imports;
use App\Models\User;
use App\Models\Role;
use App\Models\HRMS\{
EmployeeBonus,
Employee
};
use App\Models\VisitorCompanyRelation;
use Illuminate\Validation\ValidationException;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\SkipsOnFailure;
use Maatwebsite\Excel\Concerns\SkipsFailures;
use Maatwebsite\Excel\Validators\Failure;
use Illuminate\Support\Facades\Auth;
class EmployeeBonusImport implements ToModel,WithHeadingRow
{
use SkipsFailures;
private $admin_id;
public function __construct($adminId)
{
$this->admin_id = $adminId;
}
public function model(array $row)
{
//dd($row);
$upload_by = Auth::user()->id;
$mainArray = array();
$rowArray = array(
"admin_id"=> $this->admin_id,
"employee_id"=> $row["employee_id"],
"month" => $row["month"],
"year" => $row["year"],
"amount" => $row["bonus"],
);
array_push($mainArray,$rowArray);
//dd($mainArray);
foreach($mainArray as $user)
{
$company = Employee::where("employee_id",$user["employee_id"])->first();
if($company)
{
$user["user_unique_id"] = $company->user_unique_id;
}
$check_user = EmployeeBonus::where(
[
["employee_id","=",$user["employee_id"]],
["month",$user["month"]],
["year",$user["year"]]
])->first();
if($check_user)
{
throw ValidationException::withMessages([
'bonus' => "Bonus already exists for employee {$row['employee_id']} for {$row['month']}/{$row['year']}"
]);
}
EmployeeBonus::create([
"admin_id"=>$this->admin_id,
"approved_by"=> $upload_by,
"employee_id"=> $user["employee_id"],
"user_unique_id"=> $user["user_unique_id"],
"month"=>$user["month"],
"year"=>$user["year"],
"amount"=> $user["amount"],
"status"=> "active",
'created_at' => date('Y-m-d H:i:s')
]);
}
}
}