'use strict';

/**
 * 标段管理控制器
 *
 * @author CaiAoLin
 * @date 2018/2/5
 * @version
 */

const tenderConst = require('../const/tender');
module.exports = app => {

    class TenderController extends app.BaseController {

        /**
         * 构造函数
         *
         * @param {Object} ctx - egg全局变量
         * @return {void}
         */
        constructor(ctx) {
            super(ctx);
            ctx.showProject = true;
            ctx.showTitle = true;
        }

        /**
         * 标段列表页
         *
         * @param {object} ctx - egg全局变量
         * @return {void}
         */
        async index(ctx) {
            // 获取新增标段的规则
            const rule = ctx.service.tender.rule('add');
            const jsValidator = await this.jsValidator.convert(rule).build();

            // 根据项目id获取标段数据
            const tenderList = await ctx.service.tender.getList();
            const renderData = {
                tenderList,
                tenderConst,
                jsValidator,
            };
            await this.layout('tender/index.ejs', renderData);
        }

        /**
         * 添加标段操作
         *
         * @param {Object} ctx - egg全局变量
         * @return {void}
         */
        async add(ctx) {
            try {
                const rule = ctx.service.tender.rule('add');
                ctx.helper.validate(rule);

                const result = ctx.service.tender.add(ctx.request.body);
                if (!result) {
                    throw '新增标段失败';
                }
            } catch (error) {
                console.log(error);
                this.setMessage(error.toString(), this.messageType.ERROR);
            }

            ctx.redirect(ctx.request.headers.referer);
        }
    }

    return TenderController;
};
