<?php defined('BASEPATH') or exit('No direct script access allowed');

class Manager extends MY_Controller
{

    private $error;

    public function __construct()
    {
        parent::__construct();

        if (in_array($this->session->rank, array(1, 2, 3)) == false && $this->router->fetch_method() != 'login') 
        {
            redirect('team/login');
        }

        $this->load->model('manager_model');
    }


    public function _validation_time($time)
    {
        $result = preg_match("/(0?\d|1\d|2[0-3]):[0-5]\d/", $time);

        if(!$result)
        {
            $this->form_validation->set_message('_validation_time', 'Le format de l\'heure précisé est invalide');        

            return false;    
        }

        return true;
    }

    /*** Gestion des messages auto **/
    public function auto_messages($method = '')
    {
        # Détails des visualisation par message automatique
        if($method == 'views')
        {
         
            $data['views'] = $this->manager_model->get_message_views();

            Ygg::manager_view('messages_auto/auto_messages_views', $data);
        
        }
        # Création d'un nouveau message automatique
        else if($method == 'new')
        {
            if($this->input->method() == 'post')
            {
                $config = array(
                    array(
                            'field' => 'auto_message_name',
                            'label' => 'nom',
                            'rules' => 'required|min_length[5]|max_length[255]|xss_clean'
                    ),
                    array(
                            'field' => 'auto_message_content',
                            'label' => 'contenu',
                            'rules' => 'required|min_length[20]'
                    )
                );

                if(($this->input->post('enable_ad_message') && $this->input->post('enable_ad_message') == 1))
                {
                    $message_type = 1;

                    $config[] = array(
                        'field' => 'auto_message_ad_day',
                        'label' => 'jour de (re)publication ',
                        'rules' => 'required|in_list[1,2,3,4,5,6,7]' 
                    );

                    $config[] = array(
                        'field' => 'auto_message_ad_hour',
                        'label' => 'heure de (re)publication ',
                        'rules' => 'required|callback__validation_time' 
                    );
                }

                $this->form_validation->set_rules($config);

                if($this->form_validation->run())
                {
                    $data_ad_message = false;

                    if($message_type == 1)
                    {
                        $periodicity = $this->input->post('auto_message_ad_day').'|'.$this->input->post('auto_message_ad_hour');

                        $data_ad_message = array(
                            'message_type' => 1,
                            'periodicity' => $periodicity,
                            'instant_publish' => (bool) ($this->input->post('enable_instant_publish') && $this->input->post('enable_instant_publish') == 1)
                        );
                    }

                    $this->manager_model->new_auto_message($this->input->post('auto_message_name'), htmlentities(purify($this->input->post('auto_message_content'))), $data_ad_message);

                    $this->session->set_flashdata('auto_message_inserted', true);

                    $this->cache->redis->delete('auto_messages');
                }

                $form_errors = array_values($this->form_validation->error_array());
                
                if(count($form_errors) > 0)
                {
                    $this->output->set_content_type('application/json')->set_output(json_encode(array('error' => $form_errors[0])))->set_status_header(403);
                }
            }
            else 
            {
                Ygg::manager_view('messages_auto/new_auto_message');
            }
        }
        # Listing des messages automatique
        else 
        {
            $flashdata = $this->session->flashdata('auto_message_inserted');

            if($flashdata)
            {
                $data['js_message'] = '<script>$(function(){ $.growl.notice({ message: \'Message automatique ajouté\', size: \'large\', location: \'tc\'}); });</script>';
            }

            $data['auto_messages'] = $this->manager_model->get_auto_messages(null, null);

            Ygg::manager_view('messages_auto/auto_messages', $data);
        }
    }

    public function edit_message() 
    {
        Ygg::manager_view('messages_auto/edit_auto_message');
    }

}