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

/**
 * Class 工单和报表模板编辑类
 */
class Template extends MY_Controller
{
    private $workorder = "workorder";
    private $report = "report";

    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'date', 'file'));
        $this->load->model("template_model");
    }

    /**
     * 编辑工单模板
     */
    public function workorder()
    {
        if ($this->input->post()) {
            $template_id = $this->input->post("template_id", true);
            $template = $this->get_param();
            $template['template_id'] = $template_id;
            if ($template_id) {
                $this->template_model->update_template($template);
                $this->assign("message", "模板更新成功!");
            } else {
                $template['template_id'] = $this->create_id();
                $template['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
                $this->template_model->insert_template($template);
                $this->assign("message", "模板保存成功!");
            }
            $this->create_file($template['template_file'],$template['template_html'],"workorder");
        } else {
            $this->assign("message", "");
        }
        $template = $this->template_model->get_template_with_name($this->workorder);
        if ($template) {
            $this->assign("template", $template);
        } else {
            $model = $this->template_model->get_model();
            $model['template_name'] = $this->workorder;
            $model['template_file'] = $this->workorder . ".html";
            $this->assign("template", $model);
        }
        $this->display("template/workorder.html");
    }

    /**
     * 编辑报表模板
     */
    public function report()
    {
        if ($this->input->post()) {
            $template_id = $this->input->post("template_id", true);
            $template = $this->get_param();
            $template['template_id'] = $template_id;
            if ($template_id) {
                $this->template_model->update_template($template);
                $this->assign("message", "模板更新成功!");
            } else {
                $template['template_id'] = $this->create_id();
                $template['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
                $this->template_model->insert_template($template);
                $this->assign("message", "模板保存成功!");
            }
            $this->create_file($template['template_file'],$template['template_html'],"report");
        } else {
            $this->assign("message", "");
        }
        $template = $this->template_model->get_template_with_name($this->report);
        if ($template) {
            $this->assign("template", $template);
        } else {
            $model = $this->template_model->get_model();
            $model['template_name'] = $this->report;
            $model['template_file'] = $this->report . ".html";
            $this->assign("template", $model);
        }
        $this->display("template/report.html");
    }

    /**
     * 获取提交参数
     * @return array
     */
    public function get_param()
    {
        $template = array();
        $template['template_name'] = $this->input->post("template_name", true);
        $template['template_file'] = $this->input->post("template_file", true);
        $template['template_html'] = htmlspecialchars_decode($this->input->post("template_html"));
        return $template;
    }

    /**
     * 生成模板文件
     * @param $filename 文件名称
     * @param $content 文件内容
     * @param $end 文件名结尾
     */
    public function create_file($filename, $content, $end)
    {
        $path = getcwd() . "/application/views/templates/export/";
        $file = $path . $filename;
        $header = '{include file="export/header.html"}';
        $foot = '{include file="export/foot_'.$end.'.html"}';
        $data = $header . htmlspecialchars_decode($content,ENT_QUOTES ) . $foot;
        if (file_exists($file)) {
            delete_files($file);
        }
        if (!write_file($file, $data)) {
            show_error("文件写入失败,请检查" . $path . "是否有写入权限!");
        }
    }

}