<?php

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

class Consultazione_sva 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') . "Log_SVACo2.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['Matricola'] = preg_replace($pattern, "", $row['Matricola']);

            // 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['Matricola']) < 3) continue;

            $riga = array('date' => $row['Date'], 'ora' => $row['Time'], 'qrcode' => $row['Matricola']);
            $esiste = $this->consultazione_macchinario_model->get_record('', 'log_sva', $riga);

            if (!$esiste) {
                $header = array(
                    0 => "date",
                    1 => "ora",
                    2 => "fase",
                    3 => "qrcode",
                    4 => "coppia_serraggio",
                    5 => "tot_estintori",
                    6 => "utente"
                );

                $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;

                unset($csv['tot_estintori']);

                $this->consultazione_macchinario_model->inserisci_riga('log_sva', $csv);
            }
        }
        redirect(base_url('Consultazione_sva/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_sva/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_sva = '1>0 ';
                $this->session->data_sva='';
                $this->session->articolo_sva='';
                $this->session->descrizione_articolo_sva='';
                $this->session->matricola_sva='';
                $this->session->utente_sva='';

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

                if (!empty($this->input->post('articolo_sva'))){
                    $this->session->params_sva .= " and articolo like '%" . strtoupper($this->input->post("articolo_sva")) . "%' ";
                    $this->session->articolo_sva=$this->input->post("articolo_sva");
                }

                if (!empty($this->input->post('descrizione_articolo_sva'))){
                    $this->session->params_sva .= " and descrizione_articolo like '%" . strtoupper($this->input->post("descrizione_articolo_sva")) . "%' ";
                    $this->session->descrizione_articolo_sva=$this->input->post("descrizione_articolo_sva");
                }

                if (!empty($this->input->post('matricola_sva'))){
                    $this->session->params_sva .= " and matricola =" . $this->input->post("matricola_sva");
                    $this->session->matricola_sva=$this->input->post("matricola_sva");
                }

                if (!empty($this->input->post('utente_sva'))){
                    $this->session->params_sva .= " and utente =" . $this->input->post("utente_sva") . " ";
                    $this->session->utente_sva=$this->input->post("utente_sva");
                }

            }

            $config['total_rows'] = $this->consultazione_macchinario_model->count_all('log_sva', $this->session->params_sva);
            //var_dump($config['total_rows']);
            //die();
            $csv = $this->consultazione_macchinario_model->get_record('date DESC, ora DESC', 'log_sva', $this->session->params_sva, $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;
        $this->load->view('comune/header');
        $this->load->view('comune/navbar');
        $this->load->view('consultazione_sva/report_macchinario', $data);
        $this->load->view('comune/footer');
    }

}
