Untitled
unknown
plain_text
4 years ago
5.9 kB
5
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...