<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
ini_set('memory_limit', '-1');
class GastosF extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->library(array('session','form_validation'));
        $this->load->model('gastos/Franquiciatario/Gastos_models');
    }

    public function index(){
        if($this->session->userdata('Rol_IdRol')==FALSE || 
			$this->session->userdata('Rol_IdRol') == '1'|| 
			$this->session->userdata('Rol_IdRol') == '3')
		{
			redirect(base_url().'acceso/acceso');
		} else {
            $this->load->view('layout/headerFran'); 
            $this->load->view('layout/menuFranquicia');
            $this->load->view('gastos/Franquiciatario/Gastos_views');
            $this->load->view('layout/footerFran');  
        }
    }
 
    /*-----------------------------------------I.Generación de contraseña encriptada------------------------------------------*/
    public function clave(){
        var_dump(md5('L2S+54wq'));
        exit();
        $v1 = $this->_data_last_month_day();
        $v2 = $this->_data_first_month_day();
        var_dump($v1);
        var_dump($v2);
        exit();
        $ruta = $this->Gastos_models->ruta(279);

                $franquicia = 'CORPORATIVO MODEL ART SPA';//$this->Gastos_models->obtenerFranquicia();
                $ext = substr($ruta->Ruta, -4);
                $txtgastoUpdate = 'mi gasto';
        //$ext = substr('e.pdf', -4);
        $nombre= "";
        var_dump($ext);
                if($ext = 'jpeg' || $ext = 'JPEG'){
                    
                    $nombre = $franquicia.'_'.$txtgastoUpdate.'_'.date("YmdHis").'.'.$ext;
                }else{
                    $nombre = $franquicia.'_'.$txtgastoUpdate.'_'.date("YmdHis").$ext;
                }
                var_dump($ext);
                var_dump($ruta->Ruta);
        var_dump($nombre);
        exit();
        //$gasto->nombreGasto
        var_dump($this->Gastos_models->obtenerGasto()->IdGasto);
        exit();
        // $suma =$this->Gastos_models->prueba();
        //   var_dump($suma);
        //   exit();
        $número = 1234.550;

        // notación inglesa (por defecto)
        $numero_formato_ingles = number_format($número);
        // 1,235
        var_dump($numero_formato_ingles);
        // notación francesa
        $nombre_format_francais = number_format($número, 2, ',', ' ');
        // 1 234,56
        var_dump($numero_formato_ingles);
        $número = 1234.542;

        // notación inglesa sin separador de millares
        $english_format_number = number_format($número, 2, '.', '');
        // 1234.57
        var_dump(floatval($english_format_number));

        var_dump(floatval('452.375'));

        //var_dump($value->IdGasto);
        //var_dump($value->nombreGasto);
        var_dump(md5('L2S+54wq'));
        var_dump(date("Y-m-d H:i:s"));
        var_dump($this->Gastos_models->obtenerFranquicia());
        exit();
    }
    /*-----------------------------------------F.Generación de contraseña encriptada------------------------------------------*/
    /** Actual month last day **/
    public function _data_last_month_day() { 
        $month = date('m');
        $year = date('Y');
        $day = date("d", mktime(0,0,0, $month+1, 0, $year));

        return date('Y-m-d', mktime(0,0,0, $month, $day, $year));
    }

    /** Actual month first day **/
    public function _data_first_month_day() {
        $month = date('m');
        $year = date('Y');
        return date('Y-m-d', mktime(0,0,0, $month, 1, $year));
    }
    //lista de gastos...
    public function gastos(){
        //var_dump($this->Gastos_models->BuscarGastos());
        //exit();
        $inicio = $this->_data_first_month_day();
        $fin = $this->_data_last_month_day();
        $result = array('data' => array());
        $data = $this->Gastos_models->BuscarGastos($inicio, $fin);
        $button = "";
        if ($data > 0) {
            foreach ($data as $key => $value) {
                if($value['Ruta']==null || $value['Ruta'] == ''){
                    $button = '<a class="label label-primary"><span class="glyphicon glyphicon-pencil" onclick=(editarGasto('.$value['IdGasto'].')) data-toggle="modal" data-target="#modalUpdateGasto"></span></a>
                        <a class="label label-danger" onclick=(eliminarGasto('.$value['IdGasto'].'))><span class="glyphicon glyphicon-trash"></span></a>';
                }else{
                    $button = '<a class="label label-primary"><span class="glyphicon glyphicon-pencil" onclick=(editarGasto('.$value['IdGasto'].')) data-toggle="modal" data-target="#modalUpdateGasto"></span></a>
                        <a class="label label-danger" onclick=(eliminarGasto('.$value['IdGasto'].'))><span class="glyphicon glyphicon-trash"></span></a>
                        <a href="'.base_url().$value['Ruta'].'" download="'.$value['NombreArchivo'].'"class="label label-info"><span class="glyphicon glyphicon-cloud-download"></span></a>';

                }
                    $result['data'][$key]=array(
                        $value['FechaCreacion'],
                        $value['Tipo'],
                        $value['NombreGasto'],
                        $value['Cantidad'],
                        $value['Precio'],
                        $value['Total'],
                        $value['NombreUsuario'],
                        $button
                    );
            }
        }
        echo json_encode($result);
    }    
    //Fin listado de gastos... 
    public function regex_string($str) { 
        if (1 !== preg_match("/^[a-zñáéíóúüA-ZÑÁÉÍÓÚÜ ,.]*$/u", $str)) { 
            $this->form_validation->set_message('regex_string', 'El campo %s no tiene un formato válido!'); 
            return FALSE; 
        } else { 
            return TRUE; } 
    }
    //Inicio inserción de gastos 
    public function insertGastos(){
        /*echo json_encode(basename($_FILES['file']['name']).$_POST['txtgasto']. $this->input->post('selectGasto'));
        //echo json_encode(
        var_dump($this->input->post());
        exit();*/
        if ($this->input->post()) {
            $this->form_validation->set_rules('txtgasto', 'Nombre de gasto', 'trim|required|alpha_numeric_spaces');
            $this->form_validation->set_rules('cantidadGasto', 'Cantidad', 'trim|required|is_natural_no_zero');
            $this->form_validation->set_rules('precioGasto', 'Precio', 'trim|required|numeric');
            
            if ($this->form_validation->run() == FALSE){
                switch ($this->form_validation->run() == FALSE) {
                    case form_error("txtgasto"):
                        $result['type'] = "errorGasto";
                        $result['result'] = form_error("txtgasto");
                        echo json_encode($result);
                        break;
                    case form_error("cantidadGasto"):
                        $result['type'] = "errorCantidad";
                        $result['result'] = form_error("cantidadGasto");
                        echo json_encode($result);
                        break;
                    case form_error("precioGasto"):
                        $result['type'] = "errorPrecio";
                        $result['result'] = form_error("precioGasto");
                        echo json_encode($result);
                        break;
                    default:
                        # code...
                        break;
                }
            }else{
                $data = $this->input->post();
                $gasto = $data['txtgasto'];
                $tipoGasto = $data['tipoGasto'];
                $cantidadGasto = $data['cantidadGasto'];
                $precioGasto = $data['precioGasto'];
                //$response = redirect(base_url().'gastos/franquiciatario/GastosF/main');
                $id = $this->Gastos_models->insertGastos($gasto, $tipoGasto, $cantidadGasto, $precioGasto);
                /*if ($_FILES['file']['error'] != 4) {
                    $path = "files/ComprobantesGasto/";
                    if (!is_dir($path)) {
                        mkdir($path, 0777, true);
                        chmod($path, 0777);
                    }

                    $franquicia = $this->Gastos_models->obtenerFranquicia();
                    $extencion = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
                    $nombreArchivo = $franquicia.'_'.$gasto.'_'.date("YmdHis").'.'.$extencion;
                    //$name = pathinfo($_FILES['file']['name'], PATHINFO_FILENAME).'.'.$extencion;
                    $path = $path.$nombreArchivo;//basename($_FILES['file']['name']);
                                        //name del input ][ name del archivo
                   if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
                        $response = $this->Gastos_models->updateInsert($nombreArchivo, $path, $id);
                    } 
                    //echo json_encode($response);
                }else{
                    if ($id)
                        $response = true;
                    else
                        $response = false;              
                }*/
                if ($id) {
                    $result['type'] = "success";
                    $result['result'] = $id;
                }else{
                    $result['type'] = "error";
                    $result['result'] = "error al guardar los datos";
                }                       
                echo json_encode($result); 
            } 
        }else{
            $result['type'] = "error";
            $result['result'] = "Error al cargar datos!";
            echo json_encode($result);
        }
    }
    //Fin insercion de gastos.... 
    public function main(){
        if ($_FILES['file']['error'] != 4) {
            $path = "files/ComprobantesGasto/";

            if (!is_dir($path)) {
                mkdir($path, 0777, true);
                chmod($path, 0777);
            }
            $response = "";
            $franquicia = $this->Gastos_models->obtenerFranquicia();
            $gasto = $this->Gastos_models->obtenerGasto();
            $extencion = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
            $nombreArchivo = $franquicia.'_'.$gasto->NombreGasto.'_'.date("YmdHis").'.'.$extencion;
            //$name = pathinfo($_FILES['file']['name'], PATHINFO_FILENAME).'.'.$extencion;
            $path = $path.$nombreArchivo;//basename($_FILES['file']['name']);
                                //name del input ][ name del archivo
           if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {
                $response = $this->Gastos_models->updateInsert($nombreArchivo, $path, $gasto->IdGasto);
            } 
            echo json_encode($response);
        }
    }

    /**/
    public function obtenerDatos($id){
        $response['datos'] = $this->Gastos_models->obtenerDatos($id);
        if($response['datos']->Ruta){
            $response['peso'] = filesize($response['datos']->Ruta);
        }

        echo json_encode($response);
    }

    public function updateGasto(){
        /*echo json_encode(basename($_FILES['file']['name']).$_POST['txtgastoUpdate']. $this->input->post('selectGasto'));
        //echo json_encode(
        var_dump($this->input->post());
        exit();*/
        if ($this->input->post()) {
            $this->form_validation->set_rules('txtgastoUpdate', 'Nombre de gasto', 'trim|required|alpha_numeric_spaces');
            $this->form_validation->set_rules('cantidadGastoUpdate', 'Cantidad', 'trim|required|is_natural_no_zero');
            $this->form_validation->set_rules('precioGastoUpdate', 'Precio', 'trim|required|numeric');
            
            if ($this->form_validation->run() == FALSE){
                switch ($this->form_validation->run() == FALSE) {
                    case form_error("txtgastoUpdate"):
                        $result['type'] = "errorGasto";
                        $result['result'] = form_error("txtgastoUpdate");
                        echo json_encode($result);
                        break;
                    case form_error("cantidadGastoUpdate"):
                        $result['type'] = "errorCantidad";
                        $result['result'] = form_error("cantidadGastoUpdate");
                        echo json_encode($result);
                        break;
                    case form_error("precioGastoUpdate"):
                        $result['type'] = "errorPrecio";
                        $result['result'] = form_error("precioGastoUpdate");
                        echo json_encode($result);
                        break;
                    default:
                        # code...
                        break;
                }
            }else{
                $data = $this->input->post();
                $idGasto = $data['idGastoUpdate'];
                $txtgastoUpdate = $data['txtgastoUpdate'];
                $tipoGastoUpdate = $data['tipoGastoUpdate'];
                $cantidadGastoUpdate = $data['cantidadGastoUpdate'];
                $precioGastoUpdate = $data['precioGastoUpdate'];
                $ruta = $this->Gastos_models->ruta($idGasto);
                $gasto = $this->Gastos_models->obtenerGastoUpdate($idGasto);
                $nombre = $this->Gastos_models->obtenerGastoUpdate($idGasto);
                $path = $ruta->Ruta;
                if($ruta->Ruta != ''){
                    $franquicia = $this->Gastos_models->obtenerFranquicia();
                    $ext = substr($ruta->Ruta, -4);
                    $nombre = $franquicia.'_'.$txtgastoUpdate.'_'.date("YmdHis");
                    if($ext == 'jpeg' || $ext == 'JPEG'){
                        //$nuevaExt = '.'.$ext;
                        $nombre = $franquicia.'_'.$txtgastoUpdate.'_'.date("YmdHis").'.'.$ext;
                        
                    }else{
                        $nombre = $franquicia.'_'.$txtgastoUpdate.'_'.date("YmdHis").$ext;
                    }
                    
                    $path = 'files/ComprobantesGasto/'.$nombre;
                
                    // if ($ruta->Comprobante != '') {
                    //     unlink($ruta->Comprobante);
                    // }
                        rename ($ruta->Ruta, $path);
                }
                
                    
                $id = $this->Gastos_models->updateGasto($idGasto, $tipoGastoUpdate, $txtgastoUpdate, $cantidadGastoUpdate, $precioGastoUpdate, $nombre, $path);            
                //$idGasto = $this->input->post("idGastoUpdate");
                

                if ($id) {
                    $result['type'] = "success";
                    $result['result'] = $id;
                }else{
                    $result['type'] = "error";
                    $result['result'] = "error al guardar los datos";
                }                       
                echo json_encode($result); 
            } 
        }else{
            $result['type'] = "error";
            $result['result'] = "Error al cargar datos!";
            echo json_encode($result);
        }
    }

    public function mainUpdate(){
        if ($_FILES['fileUpdate']['error'] != 4) {
            $path = "files/ComprobantesGasto/";

            if (!is_dir($path)) {
                mkdir($path, 0777, true);
                chmod($path, 0777);
            }
            $idGasto = $this->input->post("idGastoUpdate");
            $ruta = $this->Gastos_models->ruta($idGasto);
            // if ($ruta) {
            //     unlink($ruta->Comprobante);
            // }
                
            $franquicia = $this->Gastos_models->obtenerFranquicia();
            $gasto = $this->Gastos_models->obtenerGastoUpdate($idGasto);
            $extencion = pathinfo($_FILES['fileUpdate']['name'], PATHINFO_EXTENSION);
            $nombreArchivo = $franquicia.'_'.$gasto.'_'.date("YmdHis").'.'.$extencion;
            $path = $path.$nombreArchivo;

                                //name del input ][ name del archivo
           if (move_uploaded_file($_FILES['fileUpdate']['tmp_name'], $path)) {
                $response = $this->Gastos_models->updateInsert($nombreArchivo, $path, $idGasto);
            } 
            echo json_encode($ruta);
        }
    }

    /*Inicio delete gasto*/
    public function deleteArchivo($id){
        //$activo = '1';
        $ruta = $this->Gastos_models->ruta($id);
        $response = $this->Gastos_models->deleteArchivo($id);

        //$result = "";
        if($response && $ruta->Ruta){
            unlink($ruta->Ruta);
            $result['type'] = "success";
            $result['result'] = $response;
        }elseif ($response) {
            $result['type'] = "success";
            $result['result'] = $response;
        } else{
            $result['type'] = "error";
            $result['result'] = "El registro no pudo ser eliminado";
        }     
        
                    
        echo json_encode($result);
    }
    public function deleteGasto($id){
        //$activo = '1';
        $ruta = $this->Gastos_models->ruta($id);
        $response = $this->Gastos_models->deleteGasto($id);

        //$result = "";
        if($response && $ruta->Ruta){
            unlink($ruta->Ruta);
            $result['type'] = "success";
            $result['result'] = $response;
        }elseif ($response) {
            $result['type'] = "success";
            $result['result'] = $response;
        } else{
            $result['type'] = "error";
            $result['result'] = "El registro no pudo ser eliminado";
        }     
        
                    
        echo json_encode($result);
    }
    /*fin delete gasto*/
}
?>