<?php

namespace App\Controllers\Bolsatrabajo\Postulante;

use App\Controllers\GenericController;
use App\Libraries\CIAuth;
use App\Libraries\Funciones;
use App\Models\acciisitoModel;
use App\Models\AccionModel;
use App\Models\ConvocatoriaComunicadoModel;
use App\Models\ConvocatoriaGradoAcademicoModel;
use App\Models\ConvocatoriaTipoEntidadModel;
use App\Models\ConvocatoriaTipoEstudioModel;
use App\Models\ConvocatoriaTipoExperienciaModel;
use App\Models\EmpresaDatosModel;
use App\Models\EmpresaSectorModel;
use App\Models\EmpresaTamanioModel;
use App\Models\Persona;
use App\Models\PersonaEspecializacionModel;
use App\Models\PersonaExperienciaLaboralModel;
use App\Models\PersonaFormacionAcademicaModel;
use App\Models\TipoProyectoModel;
use App\Models\accio;

class PostulantePerfilController extends GenericController
{

    public function datos($persId){
        $personaModel = new Persona();
        $convocatoriaGradoAcademicoModel = new ConvocatoriaGradoAcademicoModel();
        $convocatoriaTipoEstudioModel = new ConvocatoriaTipoEstudioModel();
        $convocatoriaTipoExperienciaModel = new ConvocatoriaTipoExperienciaModel();
        $convocatoriaTipoEntidadModel = new ConvocatoriaTipoEntidadModel();

        $persona = $personaModel->find($persId);

        $lsConvocatoriaGradoAcademico = $convocatoriaGradoAcademicoModel->where('coga_estado',1)->findAll();
        $lsConvocatoriaTipoEstudioModel = $convocatoriaTipoEstudioModel->where('cote_estado',1)->findAll();
        $lsConvocatoriaTipoExperiencia = $convocatoriaTipoExperienciaModel->where('cont_estado',1)->findAll();
        $lsConvocatoriaTipoEntidad = $convocatoriaTipoEntidadModel->where('ctie_estado',1)->findAll();

        $personaExperienciaLaboralModel = new PersonaExperienciaLaboralModel();
        $totalExperiencia = $personaExperienciaLaboralModel->totalExperienciaLaboral($persId);

        $data = array(
            'tituloModulo' => 'Postulante Perfil',
            'persona' => $persona,
            'lsConvocatoriaGradoAcademico' => $lsConvocatoriaGradoAcademico,
            'lsConvocatoriaTipoEstudioModel' => $lsConvocatoriaTipoEstudioModel,
            'lsConvocatoriaTipoExperiencia' => $lsConvocatoriaTipoExperiencia,
            'lsConvocatoriaTipoEntidad' => $lsConvocatoriaTipoEntidad,
            'conAcceso' => true,
            'totalExperienciaGeneral' => $totalExperiencia->totalExperienciaGeneral,
            'totalExperienciaEspecifica' => $totalExperiencia->totalExperienciaEspecifica,
        );

        return $data;
    }

    public function index()
    {
        $persId = CIAuth::user()->pers_id;

        $data = $this->datos($persId);

        return view('bolsatrabajo/postulante/view_postulante_perfil', $data);
    }

    public function editar()
    {
        $persId = $this->request->getVar('pers_id');

        $data = $this->datos($persId);
        $data['conAcceso'] = false;

        return view('bolsatrabajo/postulante/view_edit_perfil', $data);
    }

    public function ver()
    {
        $persId = $this->request->getVar('pers_id');

        $data = $this->datos($persId);
        $data['conAcceso'] = false;

        return view('bolsatrabajo/postulante/view_view_perfil', $data);
    }

    public function guardarPerfil(){

        $personaModel = new Persona();

        $pers_num_doc = $this->request->getVar('pers_num_doc');
        $pers_primer_nombre = $this->request->getVar('pers_primer_nombre');
        $pers_primer_apellido = $this->request->getVar('pers_primer_apellido');
        $pers_segundo_apellido = $this->request->getVar('pers_segundo_apellido');
        $pers_nacionalidad = $this->request->getVar('pers_nacionalidad');
        $pers_lugar_nacimiento = $this->request->getVar('pers_lugar_nacimiento');
        $pers_fecha_nac = $this->request->getVar('pers_fecha_nac');
        $pers_celular = $this->request->getVar('pers_celular');
        $pers_direccion = $this->request->getVar('pers_direccion');
        $pers_ubigeo_actual = $this->request->getVar('pers_ubigeo_actual');
        $pers_perfil_profesional = $this->request->getVar('pers_perfil_profesional');
        $pers_habilidades_tecnicas = $this->request->getVar('pers_habilidades_tecnicas');

        $pers_discapacidad = $this->request->getVar('pers_discapacidad');
        $pers_licenciado_ffaa = $this->request->getVar('pers_licenciado_ffaa');
        $pers_deportista_calificado = $this->request->getVar('pers_deportista_calificado');

        $pers_id = $this->request->getVar('pers_id');


        if($pers_discapacidad == null){
            $pers_discapacidad = 0;
        }
        if($pers_licenciado_ffaa == null){
            $pers_licenciado_ffaa = 0;
        }
        if($pers_deportista_calificado == null){
            $pers_deportista_calificado = 0;
        }
        if($pers_ubigeo_actual == ''){
            $pers_ubigeo_actual = null;
        }

        $pers_archivo_documento_identidad = null;
        $pers_discapacidad_archivo = null;
        $pers_licenciado_ffaa_archivo = null;
        $pers_deportista_calificado_archivo = null;

        if($this->request->getVar('pers_archivo_documento_identidad_temp') != null && $this->request->getVar('pers_archivo_documento_identidad_temp') != ""){
            $pers_archivo_documento_identidad = $this->request->getVar('pers_archivo_documento_identidad_temp');
        }
        if($this->request->getVar('pers_discapacidad_archivo_temp') != null && $this->request->getVar('pers_discapacidad_archivo_temp') != ""){
            $pers_discapacidad_archivo = $this->request->getVar('pers_discapacidad_archivo_temp');
        }
        if($this->request->getVar('pers_licenciado_ffaa_archivo_temp') != null && $this->request->getVar('pers_licenciado_ffaa_archivo_temp') != ""){
            $pers_licenciado_ffaa_archivo = $this->request->getVar('pers_licenciado_ffaa_archivo_temp');
        }
        if($this->request->getVar('pers_deportista_calificado_archivo_temp') != null && $this->request->getVar('pers_deportista_calificado_archivo_temp') != ""){
            $pers_deportista_calificado_archivo = $this->request->getVar('pers_deportista_calificado_archivo_temp');
        }


        $pers_archivo_documento_identidad_file = $this->request->getFile('pers_archivo_documento_identidad');
        if ($pers_archivo_documento_identidad_file!= null && $pers_archivo_documento_identidad_file->isValid()) {
            if ($pers_archivo_documento_identidad_file->isValid() && !$pers_archivo_documento_identidad_file->hasMoved()) {
                $newName = 'dni_' . $pers_archivo_documento_identidad_file->getRandomName();
                $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                if (!is_dir($directoryUploadPatch)) {
                    mkdir($directoryUploadPatch, 0777, TRUE);
                }
                $pers_archivo_documento_identidad_file->move($directoryUploadPatch, $newName);
                $pers_archivo_documento_identidad = $directoryUpload.$newName;
            }
        }

        $pers_discapacidad_archivo_file = $this->request->getFile('pers_discapacidad_archivo');
        if ($pers_discapacidad_archivo_file!= null && $pers_discapacidad_archivo_file->isValid()) {
            if ($pers_discapacidad_archivo_file->isValid() && !$pers_discapacidad_archivo_file->hasMoved()) {
                $newName = 'discapacidad_' . $pers_discapacidad_archivo_file->getRandomName();
                $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                if (!is_dir($directoryUploadPatch)) {
                    mkdir($directoryUploadPatch, 0777, TRUE);
                }
                $pers_discapacidad_archivo_file->move($directoryUploadPatch, $newName);
                $pers_discapacidad_archivo = $directoryUpload.$newName;
            }
        }

        $pers_licenciado_ffaa_archivo_file = $this->request->getFile('pers_licenciado_ffaa_archivo');
        if ($pers_licenciado_ffaa_archivo_file!= null && $pers_licenciado_ffaa_archivo_file->isValid()) {
            if ($pers_licenciado_ffaa_archivo_file->isValid() && !$pers_licenciado_ffaa_archivo_file->hasMoved()) {
                $newName = 'ffaa_' . $pers_licenciado_ffaa_archivo_file->getRandomName();
                $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                if (!is_dir($directoryUploadPatch)) {
                    mkdir($directoryUploadPatch, 0777, TRUE);
                }
                $pers_licenciado_ffaa_archivo_file->move($directoryUploadPatch, $newName);
                $pers_licenciado_ffaa_archivo = $directoryUpload.$newName;
            }
        }

        $pers_deportista_calificado_archivo_file = $this->request->getFile('pers_deportista_calificado_archivo');
        if ($pers_deportista_calificado_archivo_file!= null && $pers_deportista_calificado_archivo_file->isValid()) {
            if ($pers_deportista_calificado_archivo_file->isValid() && !$pers_deportista_calificado_archivo_file->hasMoved()) {
                $newName = 'deportista_' . $pers_deportista_calificado_archivo_file->getRandomName();
                $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                if (!is_dir($directoryUploadPatch)) {
                    mkdir($directoryUploadPatch, 0777, TRUE);
                }
                $pers_deportista_calificado_archivo_file->move($directoryUploadPatch, $newName);
                $pers_deportista_calificado_archivo = $directoryUpload.$newName;
            }
        }

        $success = $personaModel->where('pers_id', $pers_id)
            ->set([
                'pers_num_doc' => strtoupper($pers_num_doc),
                'pers_primer_nombre' => strtoupper($pers_primer_nombre),
                'pers_primer_apellido' => strtoupper($pers_primer_apellido),
                'pers_segundo_apellido' => strtoupper($pers_segundo_apellido),
                'pers_nacionalidad' => strtoupper($pers_nacionalidad),
                'pers_lugar_nacimiento' => strtoupper($pers_lugar_nacimiento),
                'pers_fecha_nac' => strtoupper($pers_fecha_nac),
                'pers_celular' => strtoupper($pers_celular),
                'pers_direccion' => strtoupper($pers_direccion),
                'pers_ubigeo_actual' => $pers_ubigeo_actual,
                'pers_perfil_profesional' => strtoupper($pers_perfil_profesional),
                'pers_habilidades_tecnicas' => strtoupper($pers_habilidades_tecnicas),
                'pers_discapacidad' => strtoupper($pers_discapacidad),
                'pers_licenciado_ffaa' => strtoupper($pers_licenciado_ffaa),
                'pers_deportista_calificado' => strtoupper($pers_deportista_calificado),

                'pers_archivo_documento_identidad' => $pers_archivo_documento_identidad,
                'pers_discapacidad_archivo' => $pers_discapacidad_archivo,
                'pers_licenciado_ffaa_archivo' => $pers_licenciado_ffaa_archivo,
                'pers_deportista_calificado_archivo' => $pers_deportista_calificado_archivo,
            ])->update();

        if( $success ){
            return json_encode(['status'=>1,'msg'=>'Los datos fueron guardados correctamente']);
        }else{
            return json_encode(['status'=>0,'msg'=>'Sucedio un error al guardar']);
        }

    }

    public function guardarFormacionAcademica(){
        $request = \Config\Services::request();
        $validation = \Config\Services::validation();

        $this->validate([
            'pefa_especialidad'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese especialidad',
                ]
            ],
            'pefa_centro_estudio'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese centro de estudio',
                ]
            ],
            'pefa_ciudad'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese ciudad',
                ]
            ],
            'pefa_pais'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese pais',
                ]
            ],
            'pefa_fecha_expedicion'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese fecha expedicion',
                ]
            ],
            'pefa_fecha_inicio'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese fecha inicio',
                ]
            ]
        ]);

        if( $validation->run() == FALSE ){
            $errors = $validation->getErrors();
            return json_encode(['status'=>0,'error'=>$errors]);
        }else{
            $personaFormacionAcademicaModel = new PersonaFormacionAcademicaModel();
            $success = false;

            $pers_id = $request->getVar('pers_id');
            $pefa_fecha_fin = $request->getVar('pefa_fecha_fin');
            $pefa_archivo = null;

            if($this->request->getVar('pefa_archivo_temp') != null && $this->request->getVar('pefa_archivo_temp') != ""){
                $pefa_archivo = $this->request->getVar('pefa_archivo_temp');
            }

            $pefa_archivo_file = $this->request->getFile('pefa_archivo');
            if ($pefa_archivo_file!= null && $pefa_archivo_file->isValid()) {
                if ($pefa_archivo_file->isValid() && !$pefa_archivo_file->hasMoved()) {
                    $newName = 'formacion_academica_' . $pefa_archivo_file->getRandomName();
                    $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                    $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                    if (!is_dir($directoryUploadPatch)) {
                        mkdir($directoryUploadPatch, 0777, TRUE);
                    }
                    $pefa_archivo_file->move($directoryUploadPatch, $newName);
                    $pefa_archivo = $directoryUpload.$newName;
                }
            }

            if($pefa_fecha_fin == null || $pefa_fecha_fin == ""){
                $pefa_fecha_fin = null;
            }

            if($request->getVar("pefa_id") !== null && $request->getVar("pefa_id") !== '') {

                $success = $personaFormacionAcademicaModel->where('pefa_id', $request->getVar('pefa_id'))
                    ->set([
                        'pefa_especialidad' => strtoupper($request->getVar('pefa_especialidad')),
                        'pefa_centro_estudio' => strtoupper($request->getVar('pefa_centro_estudio')),
                        'pefa_ciudad' => strtoupper($request->getVar('pefa_ciudad')),
                        'pefa_pais' => strtoupper($request->getVar('pefa_pais')),
                        'pefa_fecha_expedicion' => strtoupper($request->getVar('pefa_fecha_expedicion')),
                        'pefa_fecha_inicio' => strtoupper($request->getVar('pefa_fecha_inicio')),
                        'pefa_fecha_fin' => $pefa_fecha_fin,
                        'coga_id' => strtoupper($request->getVar('coga_id')),
                        'pefa_archivo' => $pefa_archivo,
                        'pers_id' => $pers_id,
                    ])->update();

            }else {

                $success = $personaFormacionAcademicaModel->save([
                    'pefa_especialidad' => strtoupper($request->getVar('pefa_especialidad')),
                    'pefa_centro_estudio' => strtoupper($request->getVar('pefa_centro_estudio')),
                    'pefa_ciudad' => strtoupper($request->getVar('pefa_ciudad')),
                    'pefa_pais' => strtoupper($request->getVar('pefa_pais')),
                    'pefa_fecha_expedicion' => strtoupper($request->getVar('pefa_fecha_expedicion')),
                    'pefa_fecha_inicio' => strtoupper($request->getVar('pefa_fecha_inicio')),
                    'pefa_fecha_fin' => $pefa_fecha_fin,
                    'coga_id' => strtoupper($request->getVar('coga_id')),
                    'pefa_archivo' => $pefa_archivo,
                    'pers_id' => $pers_id,
                    'pefa_estado' => true
                ]);
            }

            if( $success ){
                return json_encode(['status'=>1,'msg'=>'Los datos fueron guardados correctamente']);
            }else{
                return json_encode(['status'=>0,'msg'=>'Sucedio un error al guardar']);
            }
        }
    }

    public function buscarFormacionAcademica(): string
    {
        $request = \Config\Services::request();
        $personaFormacionAcademicaModel = new PersonaFormacionAcademicaModel();

        if($request->getVar('pefa_id') && $request->getVar('pefa_id') != '') {
            return json_encode($personaFormacionAcademicaModel->find($request->getVar('pefa_id')));
        }
        if($request->getVar('pers_id') && $request->getVar('pers_id') != '') {
            return json_encode($personaFormacionAcademicaModel->listFormacionAcademica($request->getVar('pers_id')));
        }
        return json_encode([]);
    }

    public function guardarEspecializacion(){
        $request = \Config\Services::request();
        $validation = \Config\Services::validation();

        $this->validate([
            'pees_descripcion'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese descripcion',
                ]
            ],
            'pees_institucion'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese institucion',
                ]
            ],
            'pees_ciudad'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese ciudad',
                ]
            ],
            'pees_pais'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese pais',
                ]
            ],
            'pees_fecha_inicio'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese fecha inicio',
                ]
            ],
            'pees_horas_lectivas'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese horas lectivas',
                ]
            ],
            'pees_nivel'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese nivel',
                ]
            ]
        ]);

        if( $validation->run() == FALSE ){
            $errors = $validation->getErrors();
            return json_encode(['status'=>0,'error'=>$errors]);
        }else{
            $personaEspecializacionModel = new PersonaEspecializacionModel();
            $success = false;

            $pers_id = $request->getVar('pers_id');
            $pees_fecha_fin = $request->getVar('pees_fecha_fin');
            $pees_archivo = null;

            if($this->request->getVar('pees_archivo_temp') != null && $this->request->getVar('pees_archivo_temp') != ""){
                $pees_archivo = $this->request->getVar('pees_archivo_temp');
            }

            $pees_archivo_file = $this->request->getFile('pees_archivo');
            if ($pees_archivo_file!= null && $pees_archivo_file->isValid()) {
                if ($pees_archivo_file->isValid() && !$pees_archivo_file->hasMoved()) {
                    $newName = 'especializacion_' . $pees_archivo_file->getRandomName();
                    $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                    $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                    if (!is_dir($directoryUploadPatch)) {
                        mkdir($directoryUploadPatch, 0777, TRUE);
                    }
                    $pees_archivo_file->move($directoryUploadPatch, $newName);
                    $pees_archivo = $directoryUpload.$newName;
                }
            }

            if($pees_fecha_fin == null || $pees_fecha_fin == ""){
                $pees_fecha_fin = null;
            }

            if($request->getVar("pees_id") !== null && $request->getVar("pees_id") !== '') {

                $success = $personaEspecializacionModel->where('pees_id', $request->getVar('pees_id'))
                    ->set([
                        'pees_descripcion' => strtoupper($request->getVar('pees_descripcion')),
                        'pees_institucion' => strtoupper($request->getVar('pees_institucion')),
                        'pees_ciudad' => strtoupper($request->getVar('pees_ciudad')),
                        'pees_pais' => strtoupper($request->getVar('pees_pais')),
                        'pees_fecha_inicio' => strtoupper($request->getVar('pees_fecha_inicio')),
                        'pees_fecha_fin' => $pees_fecha_fin,
                        'pees_horas_lectivas' => strtoupper($request->getVar('pees_horas_lectivas')),
                        'pees_nivel' => strtoupper($request->getVar('pees_nivel')),
                        'pees_archivo' => $pees_archivo,
                        'cote_id' => strtoupper($request->getVar('cote_id')),
                        'pers_id' => $pers_id,
                    ])->update();

            }else {

                $success = $personaEspecializacionModel->save([
                    'pees_descripcion' => strtoupper($request->getVar('pees_descripcion')),
                    'pees_institucion' => strtoupper($request->getVar('pees_institucion')),
                    'pees_ciudad' => strtoupper($request->getVar('pees_ciudad')),
                    'pees_pais' => strtoupper($request->getVar('pees_pais')),
                    'pees_fecha_inicio' => strtoupper($request->getVar('pees_fecha_inicio')),
                    'pees_fecha_fin' => $pees_fecha_fin,
                    'pees_horas_lectivas' => strtoupper($request->getVar('pees_horas_lectivas')),
                    'pees_nivel' => strtoupper($request->getVar('pees_nivel')),
                    'pees_archivo' => $pees_archivo,
                    'cote_id' => strtoupper($request->getVar('cote_id')),
                    'pers_id' => $pers_id,
                    'pees_estado' => true
                ]);
            }

            if( $success ){
                return json_encode(['status'=>1,'msg'=>'Los datos fueron guardados correctamente']);
            }else{
                return json_encode(['status'=>0,'msg'=>'Sucedio un error al guardar']);
            }
        }
    }

    public function buscarEspecializacion(): string
    {
        $request = \Config\Services::request();
        $personaEspecializacionModel = new PersonaEspecializacionModel();

        if($request->getVar('pees_id') && $request->getVar('pees_id') != '') {
            return json_encode($personaEspecializacionModel->find($request->getVar('pees_id')));
        }
        if($request->getVar('pers_id') && $request->getVar('pers_id') != '') {
            return json_encode($personaEspecializacionModel->listEspecializacion($request->getVar('pers_id')));
        }
        return json_encode([]);
    }

    public function guardarExperiencia(){
        $request = \Config\Services::request();
        $validation = \Config\Services::validation();

        $this->validate([
            'peel_nombre_entidad'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese nombre entidad',
                ]
            ],
            'peel_cargo'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese cargo',
                ]
            ],
            'peel_funciones'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese funciones',
                ]
            ],
            'peel_fecha_inicio'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese fecha inicio',
                ]
            ]
        ]);

        if( $validation->run() == FALSE ){
            $errors = $validation->getErrors();
            return json_encode(['status'=>0,'error'=>$errors]);
        }else{
            $personaExperienciaLaboralModel = new PersonaExperienciaLaboralModel();
            $success = false;

            $pers_id = $request->getVar('pers_id');
            $peel_fecha_final = $request->getVar('peel_fecha_final');
            $peel_experiencia_general = $request->getVar('peel_experiencia_general');
            $peel_experiencia_especifica = $request->getVar('peel_experiencia_especifica');
            $peel_archivo = null;

            if($this->request->getVar('peel_archivo_temp') != null && $this->request->getVar('peel_archivo_temp') != ""){
                $peel_archivo = $this->request->getVar('peel_archivo_temp');
            }

            $peel_archivo_file = $this->request->getFile('peel_archivo');
            if ($peel_archivo_file!= null && $peel_archivo_file->isValid()) {
                if ($peel_archivo_file->isValid() && !$peel_archivo_file->hasMoved()) {
                    $newName = 'experiencia_' . $peel_archivo_file->getRandomName();
                    $directoryUpload = 'uploads/perfil/postulante_' . $pers_id . '/';
                    $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                    if (!is_dir($directoryUploadPatch)) {
                        mkdir($directoryUploadPatch, 0777, TRUE);
                    }
                    $peel_archivo_file->move($directoryUploadPatch, $newName);
                    $peel_archivo = $directoryUpload.$newName;
                }
            }

            if($peel_fecha_final == null || $peel_fecha_final == ""){
                $peel_fecha_final = null;
            }
            if($peel_experiencia_general == null){
                $peel_experiencia_general = 0;
            }
            if($peel_experiencia_especifica == null){
                $peel_experiencia_especifica = 0;
            }

            if($request->getVar("peel_id") !== null && $request->getVar("peel_id") !== '') {

                $success = $personaExperienciaLaboralModel->where('peel_id', $request->getVar('peel_id'))
                    ->set([
                        'peel_experiencia_general' => $peel_experiencia_general,
                        'peel_experiencia_especifica' => $peel_experiencia_especifica,
                        'peel_nombre_entidad' => strtoupper($request->getVar('peel_nombre_entidad')),
                        'peel_cargo' => strtoupper($request->getVar('peel_cargo')),
                        'peel_funciones' => strtoupper($request->getVar('peel_funciones')),
                        'peel_fecha_inicio' => strtoupper($request->getVar('peel_fecha_inicio')),
                        'peel_fecha_final' => $peel_fecha_final,
                        'peel_archivo' => $peel_archivo,
                        'cont_id' => strtoupper($request->getVar('cont_id')),
                        'ctie_id' => strtoupper($request->getVar('ctie_id')),
                        'pers_id' => $pers_id,
                    ])->update();

            }else {

                $success = $personaExperienciaLaboralModel->save([
                    'peel_experiencia_general' => $peel_experiencia_general,
                    'peel_experiencia_especifica' => $peel_experiencia_especifica,
                    'peel_nombre_entidad' => strtoupper($request->getVar('peel_nombre_entidad')),
                    'peel_cargo' => strtoupper($request->getVar('peel_cargo')),
                    'peel_funciones' => strtoupper($request->getVar('peel_funciones')),
                    'peel_fecha_inicio' => strtoupper($request->getVar('peel_fecha_inicio')),
                    'peel_fecha_final' => $peel_fecha_final,
                    'peel_archivo' => $peel_archivo,
                    'cont_id' => strtoupper($request->getVar('cont_id')),
                    'ctie_id' => strtoupper($request->getVar('ctie_id')),
                    'pers_id' => $pers_id,
                    'peel_estado' => true
                ]);
            }

            if( $success ){
                return json_encode(['status'=>1,'msg'=>'Los datos fueron guardados correctamente']);
            }else{
                return json_encode(['status'=>0,'msg'=>'Sucedio un error al guardar']);
            }
        }
    }

    public function buscarExperiencia(): string
    {
        $request = \Config\Services::request();
        $personaExperienciaLaboralModel = new PersonaExperienciaLaboralModel();

        if($request->getVar('peel_id') && $request->getVar('peel_id') != '') {
            return json_encode($personaExperienciaLaboralModel->find($request->getVar('peel_id')));
        }
        if($request->getVar('pers_id') && $request->getVar('pers_id') != '') {
            return json_encode($personaExperienciaLaboralModel->listExperienciaLaboral($request->getVar('pers_id')));
        }
        return json_encode([]);
    }
}