Untitled
unknown
plain_text
4 years ago
5.9 kB
9
Indexable
<?php
namespace App\Imports\V2\HealthTracker;
use App\CoreArea;
use App\CoreEmployee;
use App\Models\v2\General\Lists;
use App\Models\v2\General\ListType;
use App\Models\v2\HealthTracker\HtOrganizationalUnit;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class EmployeesImport implements ToModel, WithHeadingRow
{
public function model(array $row)
{
if (!is_null($row['uen']) && $row['uen'] != '' && $row['uen'] != '-') {
$nameSociety = $row['uen'];
$society = DB::table('societies')
->select('id', 'name')
->where('name', 'LIKE', "%$nameSociety%")
->first();
}
if (!is_null($row['posicion']) && $row['posicion'] != '' && $row['posicion'] != '-') {
$namePosition = $row['posicion'];
$position = DB::table('positions')
->select('id', 'name')
->where('name', 'LIKE', "%$namePosition%")
->first();
}
if (!is_null($row['nombre_jefe_inmediato']) && $row['nombre_jefe_inmediato'] != '' && $row['nombre_jefe_inmediato'] != '-') {
$nameBoss = $row['nombre_jefe_inmediato'];
$boss = DB::table('core_employees')
->select('id')
->where('name', 'LIKE', "%$nameBoss%")
->first();
}
if (!is_null($row['unidad_organizativa']) && $row['unidad_organizativa'] != '' && $row['unidad_organizativa'] != '-') {
$nameArea = $row['unidad_organizativa'];
$area = DB::table('core_areas')
->select('id')
->where('name', 'LIKE', "%$nameArea%")
->first();
if (is_null($area)) {
$area = new CoreArea();
$area->name = $nameArea;
$area->save();
}
}
if (!is_null($row['me_macro_ent_name']) && $row['me_macro_ent_name'] != '' && $row['me_macro_ent_name'] != '-') {
$organizationalUnitName = $row['me_macro_ent_name'];
$organizationalUnit = DB::table('ht_organizational_unit')
->select('id')
->where('name', 'LIKE', "%$organizationalUnitName%")
->first();
if (is_null($organizationalUnit)) {
$organizationalUnit = new HtOrganizationalUnit();
$organizationalUnit->name = $organizationalUnitName;
$organizationalUnit->save();
}
}
if (!is_null($row['eps_empleado']) && $row['eps_empleado'] != '' && $row['eps_empleado'] != '-') {
$nameEps = ucwords(strtolower($row['eps_empleado']));
$eps = DB::table('lists')
->select('id')
->where('name', 'LIKE', "%$nameEps%")
->first();
if (is_null($eps)) {
$typeListEps = DB::table('list_types')
->select('id')
->where('name', 'EPS')
->first();
if (is_null($typeListEps)) {
$typeListEps = new ListType();
$typeListEps->name = 'EPS';
$typeListEps->save();
}
$eps = new Lists();
$eps->name = ucwords(strtolower($row['eps_empleado']));
$eps->type_list_id = $typeListEps->id;
$eps->save();
}
}
$birthDate = $row['fecha_de_nacimiento'];
$data = [
'sharp_id' => $row['n_sharp'],
'name' => ucwords(strtolower($row['nombre_completo'])),
'position_type' => strtolower($row['tipo_de_posicion']),
'age' => (!is_null($row['edad']) && $row['edad'] != '' && $row['edad'] != '-') ? $row['edad'] : null,
'birthdate' => (!is_null($birthDate) && $birthDate != '' && $birthDate != '-') ? Carbon::parse(strtotime($birthDate))->format('Y-m-d') : null,
'cc' => $row['n_identificacion'],
'gender' => strtolower($row['genero']),
'email' => strtolower($row['correo']),
'society_id' => (isset($society)) ? $society->id : null,
'position_id' => (isset($position)) ? $position->id : null,
'boss_id' => (isset($boss)) ? $boss->id : null,
'eps_id' => (isset($eps)) ? $eps->id : null,
'core_area_id' => (isset($area)) ? $area->id : null,
'ht_organizational_unit_id' => (isset($organizationalUnit)) ? $organizationalUnit->id : null,
];
$message = 'Se actualizo el empleado';
$employee = CoreEmployee::query()
->where('cc', $row['n_identificacion'])
->first();
if (is_null($employee)) {
$employee = new CoreEmployee();
$message = 'Se creo el empleado';
}
$employee->forceFill($data);
$employee->save();
Log::info($message . ' ' . $employee->name);
for ($i = 1; $i <= 3; $i++) {
if (!is_null($row['sindicato_' . $i]) && $row['sindicato_' . $i] != '' && $row['sindicato_' . $i] != '-') {
$laborUnion = DB::table('labor_unions')
->select('id', 'name')
->where('name', strtoupper($row['sindicato_' . $i]))
->first();
if (!is_null($laborUnion)) {
DB::table('core_employees_labor_unions')->insert([
[
'core_employee_id' => $employee->id,
'labor_union_id' => $laborUnion->id,
'created_at' => Carbon::now()
]
]);
}
}
}
}
}
Editor is loading...