<?php

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

class Holiday extends Admin_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->model('common_model');
    }

    public function index($flag = NULL, $id = NULL)
    {
        $data['title'] = lang('holiday');
        $data['page_title'] = lang('holiday');
        $data['page_description'] = lang('manage') . ' ' . lang('holiday');
        $data['header_actions'] = array(
            array(
                'label' => lang('add') . ' ' . lang('holiday'),
                'icon' => 'plus',
                'href' => base_url('admin/holiday/add_holiday'),
                'attrs' => array(
                    'data-modal-url' => base_url('admin/holiday/add_holiday'),
                    'data-modal-title' => lang('add') . ' ' . lang('holiday'),
                    'data-modal-size' => 'lg',
                ),
                'style' => 'primary',
            ),
        );
        $data['header_filters'] = array();

        $this->common_model->_table_name = "tbl_holiday"; //table name
        $this->common_model->_order_by = "holiday_id";
        // get holiday list by id
        if (!empty($id)) {
            $data['holiday_list'] = $this->common_model->get_by(array('holiday_id' => $id,), TRUE);
            if (empty($data['holiday_list'])) {
                $type = "error";
                $message = lang('no_record_found');
                set_message($type, $message);
                redirect('admin/settings/holiday_list');
            }
        }// click add holiday theb show
        if (!empty($flag)) {
            $data['active_add_holiday'] = $flag;
        }
        // active check with current month
        $data['current_month'] = date('m');
        if ($this->input->post('year', TRUE)) { // if input year
            $data['year'] = $this->input->post('year', TRUE);
        } else { // else current year
            $data['year'] = date('Y'); // get current year
        }
        // get all holiday list by year and month
        $data['all_holiday_list'] = $this->get_holiday_list($data['year']);  // get current year
        // retrive all data from db
        $data['subview'] = $this->load->view('admin/holiday/holiday_list', $data, TRUE);
        $this->load->view('admin/_layout_main', $data);
    }

    public function add_holiday($id = null)
    {
        // active check with current month
        $data['current_month'] = date('m');
        if ($this->input->post('year', TRUE)) { // if input year
            $data['year'] = $this->input->post('year', TRUE);
        } else { // else current year
            $data['year'] = date('Y'); // get current year
        }
        $edited = can_action('71', 'edited');
        if (!empty($id) && !empty($edited)) {
            $data['holiday_list'] = $this->db->where('holiday_id', $id)->get('tbl_holiday')->row();
            if (empty($data['holiday_list'])) {
                $type = "error";
                $message = "No Record Found";
                set_message($type, $message);
                redirect('admin/holiday');
            }
        }
        $this->load->view('admin/holiday/_modal_add_holiday', $data, FALSE);
        
    }

    public function get_holiday_list($year)
    {// this function is to create get monthy recap report
        for ($i = 1; $i <= 12; $i++) { // query for months
            $date = new DateTime($year . '-' . $i . '-01');
            $start_date = $date->modify('first day of this month')->format('Y-m-d');
            $end_date = $date->modify('last day of this month')->format('Y-m-d');
            $get_holiday_list[$i] = $this->common_model->get_holiday_list_by_date($start_date, $end_date); // get all report by start date and in date
        }
        return $get_holiday_list; // return the result
    }

    public function save_holiday($id = NULL)
    {
        $created = can_action('71', 'created');
        $edited = can_action('71', 'edited');
        if (!empty($created) || (!empty($edited) && !empty($id))) {
            $this->common_model->_table_name = "tbl_holiday"; //table name
            $this->common_model->_primary_key = "holiday_id";    //id
            // input data
            $data = $this->common_model->array_from_post(array('event_name', 'description', 'start_date', 'end_date', 'location', 'color')); //input post

            // dublicacy check into database
            if (!empty($id)) {
                $holiday_id = array('holiday_id !=' => $id);
            } else {
                $holiday_id = null;
            }
            $where = array('event_name' => $data['event_name'], 'start_date' => $data['start_date']); // where
            // check holiday by where
            // if not empty show alert message else save data
            $check_holiday = $this->common_model->check_update('tbl_holiday', $where, $holiday_id);

            $activity = null;
            if (!empty($check_holiday)) {
                $type = "error";
                $message = lang('this_information_exist');
                set_message($type, $message);
            } else {
                if (!empty($id)) {
                    $activity = lang('active_event_updated');
                } else {
                    $activity = lang('active_event_saved');
                }
                $id = $this->common_model->save($data, $id);
                // messages for user
                $type = "success";
                $message = lang('holiday_information_saved');
                set_message($type, $message);
            }

            // save into activities
            if ($type == 'success') {
                $activities = array(
                    'user' => $this->session->userdata('user_id'),
                    'module' => 'holiday',
                    'module_field_id' => $id,
                    'activity' => $activity,
                    'icon' => 'fa-ticket',
                    'value1' => $data['event_name'],
                );
                // Update into tbl_project
                $this->common_model->_table_name = "tbl_activities"; //table name
                $this->common_model->_primary_key = "activities_id";
                $this->common_model->save($activities);
            }
        } else {
            $type = "error";
            $message = "No Record Found";
            set_message($type, $message);
        }

        // ajax request will return json
        if ($this->input->is_ajax_request()) {
            if ($type == 'success') {
                echo json_encode(array("status" => $type, 'message' => $message, 'reload_page' => true));
            } else {
                echo json_encode(array("status" => $type, 'message' => $message));
            }
            exit();
        }

        redirect('admin/holiday'); // redirect page
    }

    public function delete_holiday($id)
    { // delete holiday list by id
        $deleted = can_action('71', 'deleted');
        if (!empty($deleted)) {
            $check_holiday = $this->common_model->check_by(array('holiday_id' => $id), 'tbl_holiday');
            if (empty($check_holiday)) {
                $type = "error";
                $message = lang('no_record_found');
                set_message($type, $message);
                if ($this->input->is_ajax_request()) {
                    echo json_encode(array("status" => $type, 'message' => $message));
                    exit();
                }
                redirect('admin/holiday');
            }
            $this->common_model->_table_name = "tbl_holiday"; //table name
            $this->common_model->_primary_key = "holiday_id";    //id
            $this->common_model->delete($id);
            // save into activities
            $activities = array(
                'user' => $this->session->userdata('user_id'),
                'module' => 'holiday',
                'module_field_id' => $id,
                'activity' => 'activity_delete_holiday',
                'icon' => 'fa-ticket',
                'value1' => $check_holiday->event_name,
            );
// Update into tbl_project
            $this->common_model->_table_name = "tbl_activities"; //table name
            $this->common_model->_primary_key = "activities_id";
            $this->common_model->save($activities);

            $type = "success";
            $message = lang('holoday_information_delete');
            set_message($type, $message);
        } else {
            $type = "error";
            $message = "No Record Found";
            set_message($type, $message);
        }
        if ($this->input->is_ajax_request()) {
            echo json_encode(array("status" => $type, 'message' => $message, 'reload_page' => $type == 'success'));
            exit();
        }
        redirect('admin/holiday'); //redirect page
    }
}
