'use strict';

/**
 * 控制器基类
 *
 * @author CaiAoLin
 * @date 2017/10/11
 * @version
 */
const moment = require('moment');
const Controller = require('egg').Controller;
const menuList = require('../../config/menu');
class BaseController extends Controller {

    /**
     * 构造函数
     *
     * @param {Object} ctx - egg全局context
     * @return {void}
     */
    constructor(ctx) {
        super(ctx);
        ctx.menuList = menuList;
        ctx.menu = menuList[ctx.controllerName] ? menuList[ctx.controllerName] : {};
        ctx.title = ctx.menu.name ? ctx.menu.name : '';
    }

    /**
     * 渲染layout
     *
     * @param {String} view - 渲染的view
     * @param {Object} data - 渲染的数据
     * @param {String} modal - 渲染的modal
     * @return {void}
     */
    async layout(view, data = {}, modal = '') {
        data.moment = moment;

        try {
            const contentString = await this.ctx.renderView(view, data);
            const modalString = modal === '' ? '' : await this.ctx.renderView(modal, data);
            const renderData = {
                content: contentString,
                modal: modalString,
            };

            await this.ctx.render('layout/layout.ejs', renderData);
        } catch (err) {
            console.log(err);
        }
    }
}

module.exports = BaseController;
