<?php

namespace App\Controllers\Bolsatrabajo\Convocatoria;

use App\Controllers\GenericController;
use App\Libraries\CIAuth;
use App\Libraries\Funciones;
use App\Models\acciisitoModel;
use App\Models\accio;
use App\Models\AccionModel;
use App\Models\ConvocatoriaComunicadoModel;
use App\Models\ConvocatoriaModel;
use App\Models\ConvocatoriaPostulanteModel;
use App\Models\ConvocatoriaTipoProcesoModel;
use App\Models\ConvocatoriaTipoTrabajoModel;
use App\Models\EmpresaDatosModel;
use App\Models\Persona;
use App\Models\TipoProyectoModel;

class ConvocatoriaComunicadoController extends GenericController
{

    public function index()
    {
    }

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

        $this->validate([
            'coco_fecha'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese fecha',
                ]
            ],
            'coco_descripcion'=>[
                'rules'=>'required',
                'errors'=>[
                    'required'=>'Ingrese descripcion',
                ]
            ],
//            'coco_archivo'=>[
//                'rules'=>'uploaded[coco_archivo]',
//                'errors'=>[
//                    'uploaded'=>'Ingrese archivo',
//                ]
//            ],
        ]);

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

            $coco_archivo = null;
            $convoTemp = $convocatoriaModel->find($request->getVar("conv_id"));

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

            $coco_archivo_file = $this->request->getFile('coco_archivo');
            if ($coco_archivo_file!= null && $coco_archivo_file->isValid()) {
                if ($coco_archivo_file->isValid() && !$coco_archivo_file->hasMoved()) {
                    $newName = 'comunicado_' . $coco_archivo_file->getRandomName();
                    $directoryUpload = 'uploads/convocatoria/' . $convoTemp->conv_codigo . '/';
                    $directoryUploadPatch = Funciones::getPatchUploads() . $directoryUpload;
                    if (!is_dir($directoryUploadPatch)) {
                        mkdir($directoryUploadPatch, 0777, TRUE);
                    }
                    $coco_archivo_file->move($directoryUploadPatch, $newName);
                    $coco_archivo = $directoryUpload.$newName;
                }
            }

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

                $success = $convocatoriaComunicadoModel->where('coco_id', $request->getVar('coco_id'))
                    ->set([
                        'coco_fecha' => strtoupper($request->getVar('coco_fecha')),
                        'coco_descripcion' => strtoupper($request->getVar('coco_descripcion')),
                        'coco_archivo' => $coco_archivo,
                        'coco_estado' => true
                    ])->update();
            }else {

                $success = $convocatoriaComunicadoModel->save([
                    'coco_fecha' => strtoupper($request->getVar('coco_fecha')),
                    'coco_descripcion' => strtoupper($request->getVar('coco_descripcion')),
                    'coco_archivo' => $coco_archivo,
                    'conv_id' => strtoupper($request->getVar('conv_id')),
                    'coco_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 eliminar(): string
    {
        $request = \Config\Services::request();
        $convocatoriaComunicadoModel = new ConvocatoriaComunicadoModel();

        if($request->getVar("coco_id") !== null) {

            $success = $convocatoriaComunicadoModel->where('coco_id', $request->getVar('coco_id'))
                ->set([
                    'coco_estado' => false
                ])->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']);
            }
        }else{
            return json_encode(['status'=>0,'msg'=>'No existe la llave primaria']);
        }
    }

    public function buscar(): string
    {
        $request = \Config\Services::request();
        $convocatoriaComunicadoModel = new ConvocatoriaComunicadoModel();

        if($request->getVar('coco_id') && $request->getVar('coco_id') != '') {
            return json_encode($convocatoriaComunicadoModel->find($request->getVar('coco_id')));
        }
    }

}