<?php
class Apoyos_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->model('apoyos_model');
    }

    // Función para obtener la lista de niveles educativos
    public function obtenerNiveles()
    {
        $this->db->order_by('idnivel', 'ASC')->select('*')->from('niveles');
        $niveles = $this->db->get()->result_array();

        $respuesta = array(
            'respuesta' => $niveles,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;
    }
    // Función para obtener la lista de escuelas
    public function obtenerEscuelas()
    {
        $this->db->order_by('escuela', 'ASC')->select('*')->from('escuelas2');
        $escuelas = $this->db->get()->result_array();

        $respuesta = array(
            'respuesta' => $escuelas,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;
    }
    // Función para obtener la lista de colonias
    public function obtenerColonias()
    {
        $this->db->order_by('colonia', 'ASC')->select('*')->from('colonias');
        $colonias = $this->db->get()->result_array();

        $respuesta = array(
            'respuesta' => $colonias,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;
    }

    public function obtenerTiposDocumento()
    {
        $this->db->select('*')->from('tipos_documento')->where('activo =', 1);
        $tipos_documento = $this->db->get()->result_array();

        $respuesta = array(
            'respuesta' => $tipos_documento,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;
    }

    // Función para obtener el propuesta basado en el ID
    public function obtenerApoyo($idapoyo)
    {
        $this->db->select('*')->from('apoyos')->where('idapoyo =', $idapoyo);
        $apoyo = $this->db->get()->row_array();
        // print_r($idapoyo);
        $respuesta = array(
            'respuesta' => $apoyo,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;        
    }

    // Función para obtener los anexos basado en el ID
    public function obtenerAnexos($idapoyo)
    {
        $this->db->select('*')->from('anexos')->where('idapoyo =', $idapoyo);
        $propuesta = $this->db->get()->result_array();

        $respuesta = array(
            'respuesta' => $propuesta,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;        
    }

    public function existeCampo($campo, $valor, $nuevo, $idapoyo)
    {
        $valor_actual = "";

        if (!$nuevo) {
            $valor_actual = $this->db->get_where('apoyos', array('idapoyo' => $idapoyo), 1)->row()->valor;
        }

        $query = $this->db->get_where('apoyos', array($campo => $valor), 1);

        if($query->num_rows() > 0 )
        {
            if ($valor == $valor_actual) {
                $informacion = array(
                    'mensaje' => 'valor disponible',
                    'registrado' => false,
                    'result' => $query->result(),
                    'status' => 200,
                );

                $respuesta = array(
                    'respuesta' => $informacion,
                    'status' => REST_Controller::HTTP_OK
                );
        
                return $respuesta;

            } else {
                $informacion = array(
                    'mensaje' => 'El valor ya existe',
                    'registros' => $query->row(),
                    'registrado' => true,
                    'status' => 200,
                );

                $respuesta = array(
                    'respuesta' => $informacion,
                    'status' => REST_Controller::HTTP_OK
                );
        
                return $respuesta;
            }
        }

        else
        {
            $informacion = array(
                'mensaje' => 'valor disponible',
                'registros' => '',
                'registrado' => false,
                'status' => 200,
            );

            $respuesta = array(
                'respuesta' => $informacion,
                'status' => REST_Controller::HTTP_OK
            );
    
            return $respuesta;
        }
    }


    // Función para guardar el apoyo
    public function guardarApoyo($post)
    {
        // Comenzando la transacción
        $this->db->trans_begin();

        // Creando el array con los datos del apoyo
        $apoyo = array(
        'no_empleado' => $post['no_empleado'],
        'nombre' => $post['nombre'],
        'apellido_p' => $post['apellido_p'],
        'apellido_m' => $post['apellido_m'],
        'sexo' => $post['sexo'],
        'calle' => $post['calle'],
        'no_ext' => $post['no_ext'],
        'no_int' => $post['no_int'],
        'idcolonia' => $post['idcolonia'],
        'telefono' => $post['telefono'],
        'correo' => $post['correo'],
        'curp' => $post['curp'],
        'rfc' => $post['rfc'],
        'banco' => $post['banco'],
        'cuenta_bancaria' => $post['cuenta_bancaria'],
        'clabe' => $post['clabe'],
        'idnivel' => $post['idnivel'],
        'idescuela' => $post['idescuela'],
        'grado' => $post['grado'],
        'asignatura' => $post['asignatura'],
        'turno' => $post['turno'],
        'domicilio_escuela' => $post['domicilio_escuela'],
        'idcolonia_escuela' => $post['idcolonia_escuela'],
        'telefono_escuela' => $post['telefono_escuela'],
        'clave_escuela' => $post['clave_escuela'],
        );
        // print_r($apoyo);
        if(!isset($apoyo['idescuela']) || $apoyo['idescuela'] == 0){
            $this->db->insert('escuelas', array('idnivel' => $post['idnivel'], 'escuela' => $post['nueva_escuela'], 'clave' => $post['nueva_clave']));
            $apoyo['idescuela'] = $this->db->insert_id();
        }

        $this->db->select('*')->from('escuelas2')->where('idescuela =', $post['idescuela']);
        $escuela = $this->db->get()->row_array();
        $apoyo['escuela'] = $escuela['escuela'];
        
        $this->db->insert('apoyos', $apoyo);
        $id = $this->db->insert_id();

        $this->load->library('upload');
            $archivos=[];
            if (!empty($_FILES)) {
                $i=1;
                foreach($_FILES as $archivo){
                    //print_r($archivo);
                    $this->agregarFiles($id,'jpg|jpeg|png|pdf', $id.'/', $archivo,$i);
                    $i = $i + 1;
                }
            }

        if ($this->db->trans_status() === false) 
        {
            $respuesta = array(
                'respuesta' => 'Ocurrio un error al guardar los datos',
                'status' => REST_Controller::HTTP_UNPROCESSABLE_ENTITY
            );
            return $respuesta;
        } 
        
        // De lo contrario
        else 
        {
            $this->db->trans_commit();
            $respuesta = array(
                'respuesta' => 'Propuesta agregada correctamente',
                'status' => REST_Controller::HTTP_OK,
                'idapoyo' => $id
            );
            return $respuesta;
        }
    }

    // function agregarFiles($id,$extensiones,$ruta,$archivo,$i)
    // {
    //     if (!is_dir(SERVIDOR . APP . 'assets/documentos/'.$ruta)) {
    //         mkdir(SERVIDOR . APP . 'assets/documentos/'.$ruta, 0777, true);
    //     }
    //     $config['upload_path'] = SERVIDOR . APP . 'assets/documentos/'.$ruta;
    //     $config['allowed_types'] = $extensiones;
    //     $config['max_size'] = '50000 KB';
    //     $config['encrypt_name'] = true;
    //     //$config['encrypt_name'] = true;
    //     $this->upload->initialize($config);
    //     if ($this->upload->do_upload('adjunto'.$i)) {
    //         $data = array("upload_data" => $this->upload->data());
    //         $nombre = $this->upload->data('file_name');
    //         $ext = $this->upload->data('file_ext');
    //         $anexo = array(
    //             'idapoyo' => $id,
    //             'ruta' => $ruta.$nombre,
    //             );
    //         $this->db->insert('anexos', $anexo);
    //     }else{
    //         $error = array('error' => $this->upload->display_errors());
    //     }
        
    //     return [$nombre,$ext];
    // }

    public function actualizarApoyo($post)
    {
        // Comenzando la transacción
        $this->db->trans_begin();
        // print_r($post);
        // Creando el array con los datos del apoyo
        $apoyo = array(
        'no_empleado' => $post['no_empleado'],
        'nombre' => $post['nombre'],
        'apellido_p' => $post['apellido_p'],
        'apellido_m' => $post['apellido_m'],
        'sexo' => $post['sexo'],
        'calle' => $post['calle'],
        'no_ext' => $post['no_ext'],
        'no_int' => $post['no_int'],
        'idcolonia' => $post['idcolonia'],
        'telefono' => $post['telefono'],
        'correo' => $post['correo'],
        'curp' => $post['curp'],
        'rfc' => $post['rfc'],
        'idnivel' => $post['idnivel'],
        'idescuela' => $post['idescuela'],
        'grado' => $post['grado'],
        'asignatura' => $post['asignatura'],
        'turno' => $post['turno'],
        'domicilio_escuela' => $post['domicilio_escuela'],
        'idcolonia_escuela' => $post['idcolonia_escuela'],
        'telefono_escuela' => $post['telefono_escuela'],
        'clave_escuela' => $post['clave_escuela'],
        );
        
        $this->db->where('idapoyo', $post['idapoyo']);
        $this->db->update('apoyos', $apoyo);
        $id = $post['idapoyo'];

        // foreach($post['documentosForm'] as $doc){
        //     if(is_dir($doc['ruta']))
        // }



        $this->load->library('upload');
            $archivos=[];
            if (!empty($_FILES)) {
                $i=1;
                foreach($_FILES as $archivo){
                    //print_r($archivo);
                    $this->agregarFiles($id,'jpg|jpeg|png|pdf', $id.'/', $archivo,$i);
                    $i = $i + 1;
                }
            }

        if ($this->db->trans_status() === false) 
        {
            $respuesta = array(
                'respuesta' => 'Ocurrio un error al guardar los datos',
                'status' => REST_Controller::HTTP_UNPROCESSABLE_ENTITY
            );
            return $respuesta;
        } 
        
        // De lo contrario
        else 
        {
            $this->db->trans_commit();
            $respuesta = array(
                'respuesta' => 'Propuesta agregada correctamente',
                'status' => REST_Controller::HTTP_OK,
                'idapoyo' => $id
            );
            return $respuesta;
        }
    }

    public function cambiarEstado($idapoyo)
    {
        $this->db->trans_begin();
        $this->db->set('activo', 'NOT activo', FALSE)->where('idapoyo', $idapoyo)->update('apoyos');

        if($this->db->trans_status() === FALSE)
        {
            $this->db->trans_rollback();

            $respuesta = "Ocurrio un error, vuelva a intentar.";
            $status = REST_Controller::HTTP_INTERNAL_SERVER_ERROR;
        }

        else
        {
            $this->db->trans_commit();   
            $respuesta = "Estado actualizado correctamente";
            $status = REST_Controller::HTTP_OK;
        }    

        return array(
            'respuesta' =>  $respuesta,
            'status' => $status
        );
    }

    public function paginado($datos)
    {
        $this->load->library('paginado');
        $paginado = $this->paginado->paginar($datos, 'view_apoyosp');
        
        $respuesta = array(
            'respuesta' => $paginado,
            'status' => REST_Controller::HTTP_OK
        );

        return $respuesta;
    }

}
 