<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Consultazione_co2 extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('file');
        $this->load->model('consultazione_fatture_model');
        $this->load->model('consultazione_macchinario_model');

        $this->load->library('pagination');
    }

    public function index() {
        $filename = $this->config->item('root_files_log') . "Co2.csv";
        $csv_totale = array_reverse($this->normalize_csv($filename));
        foreach ($csv_totale as $key => $row) {

            // Rimuovo i caratteri non stampabili dal qrcode, altrimenti la query va in errore.
            // Questi caratteri sono generati dal macchinario a causa di un errore di lettuara della pistola.
            // $pattern = '/[[:^print:]]/'; Funziona solo con versioni più nuove del PHP
            $pattern = '/[\x00-\x1F\x80-\xFF]/'; // Adatto alla versione PHP 5.5.19 del server
            $row['Barcode'] = preg_replace($pattern, "", $row['Barcode']);

            // Se il qrcode non ha una lunghezza di almeno 3 caratteri, salto la riga.
            // Se il qrcode non viene sparato la macchina inserisce comunque 3 trattini.
            // Il controllo serve per ridurre il rischio di errori
            if(strlen($row['Barcode']) < 3) continue;

            $riga = array('date' => $row['Date'], 'time' => $row['Ora'].':'.$row['Minuti'].':00', 'qrcode' => $row['Barcode']);
            $esiste = $this->consultazione_macchinario_model->get_record('', 'riempimenti_log_co2', $riga);

            if (!$esiste) {
                $header = array(
                    0 => "date",
                    1 => "time",
                    2 => "mese",
                    3 => "giorno",
                    4 => "ora",
                    5 => "minuti",
                    6 => "utente",
                    7 => "peso",
                    8 => "peso_netto",
                    9 => "peso_finale",
                    10=> "durata_l",
                    11=> "durata_h",
                    12=> "auto_man",
                    13=> "lotto_1",
                    14=> "lotto_2",
                    15=> "qrcode"
                );
                $csv = array_combine($header, $row);

                $articolo = substr($csv['qrcode'], 24, 8);
                $matricola = substr($csv['qrcode'], 9, 8);
                $descrizione_articolo = '';
                if (!empty($this->consultazione_fatture_model->get_articoli($articolo))) {
                    $descrizione_articolo = $this->consultazione_fatture_model->get_articoli($articolo)->ARDES;
                }
                $csv['articolo'] = $articolo;
                $csv['descrizione_articolo'] = $descrizione_articolo;
                $csv['matricola'] = $matricola;
                $csv['time']=$csv['ora'].':'.$csv['minuti'].':00';
                unset($csv['mese']);
                unset($csv['giorno']);
                unset($csv['ora']);
                unset($csv['minuti']);
                unset($csv['peso_netto']);
                unset($csv['peso_finale']);
                unset($csv['durata_l']);
                unset($csv['lotto_1']);
                unset($csv['lotto_2']);
                unset($csv['auto_man']);

                $this->consultazione_macchinario_model->inserisci_riga('riempimenti_log_co2', $csv);
            }
        }
        redirect(base_url('Consultazione_co2/creaTabellaReportMacchinario'));
    }

    function normalize_csv($file) {
        $rows = array_map('str_getcsv', file($file));
        $header = array_shift($rows);
        $csv = array();
        foreach ($rows as $row) {
            $csv[] = array_combine($header, $row);
        }

        return $csv;
    }

    public function creaTabellaReportMacchinario($numrows = null) {

        try {
            if ($numrows == null) {
                $numrows = 0;
            }
            $config = array();
            $config['base_url'] = base_url('Consultazione_co2/creaTabellaReportMacchinario');
            $config['per_page'] = 10;
            $config['full_tag_open'] = '<nav aria-label="Page navigation example"><ul class="pagination justify-content-center">';
            $config['full_tag_close'] = '</ul></nav>';
            $config['first_link'] = 'First';
            $config['last_link'] = 'Last';
            $config['first_tag_open'] = '<li class="page-item">';
            $config['first_tag_close'] = '</li>';
            $config['prev_link'] = '&laquo';
            $config['prev_tag_open'] = '<li class="page-item">';
            $config['prev_tag_close'] = '</li>';
            $config['next_link'] = '&raquo';
            $config['next_tag_open'] = '<li class="page-item">';
            $config['next_tag_close'] = '</li>';
            $config['last_tag_open'] = '<li class="page-item">';
            $config['last_tag_close'] = '</li>';
            $config['cur_tag_open'] = '<li class="page-item active" aria-current="page"><a class="page-link" href="#">';
            $config['cur_tag_close'] = '</a></li>';
            $config['num_tag_open'] = '<li class="page-item">';
            $config['num_tag_close'] = '</li>';
            $config['attributes'] = array('class' => 'page-link');

            if (!empty($this->input->post())) {
                $this->session->params_co2 = '1>0 ';
                $this->session->data_co2='';
                $this->session->articolo_co2='';
                $this->session->descrizione_articolo_co2='';
                $this->session->matricola_co2='';
                $this->session->utente_co2='';

                if (!empty($this->input->post('data'))){
                        $this->session->params_co2 .= "and date = '" . $this->input->post("data") . "'";
                        $this->session->data_co2=$this->input->post("data");
                }

                if (!empty($this->input->post('articolo'))){
                    $this->session->params_co2 .= " and articolo like '%" . strtoupper($this->input->post("articolo")) . "%' ";
                    $this->session->articolo_co2=$this->input->post("articolo");
                }
                if (!empty($this->input->post('descrizione_articolo'))){
                    $this->session->params_co2 .= " and descrizione_articolo like '%" . strtoupper($this->input->post("descrizione_articolo")) . "%' ";
                    $this->session->descrizione_articolo_co2=$this->input->post("descrizione_articolo");
                }
                if (!empty($this->input->post('matricola'))){
                    $this->session->params_co2 .= " and matricola =" . $this->input->post("matricola");
                    $this->session->matricola_co2=$this->input->post("matricola");
                }
                if (!empty($this->input->post('utente'))){
                    $this->session->params_co2 .= " and utente like '%" . $this->input->post("utente") . "%' ";
                    $this->session->utente_co2=$this->input->post("utente");
                }
            }

            $config['total_rows'] = $this->consultazione_macchinario_model->count_all('riempimenti_log_co2', $this->session->params_co2);
            // var_dump($config['total_rows']);
            // die();
            $csv = $this->consultazione_macchinario_model->get_record('date DESC, time DESC', 'riempimenti_log_co2', $this->session->params_co2, $config['per_page'], $numrows);

            $this->pagination->initialize($config);

            $data["links"] = $this->pagination->create_links();
        } catch (Exception $e) {
            echo( $e->getMessage());
            die();
        }


        $data['report_macchinario'] = $csv;
    //    var_dump($data);
    //    die();
        $this->load->view('comune/header');
        $this->load->view('comune/navbar');
        $this->load->view('consultazione_co2/report_macchinario', $data);
        $this->load->view('comune/footer');
    }

}
