/**
 * 请勿将俱乐部专享资源复制给任何人，保护知识产权即是保护我们所在的行业，进而保护我们自己的利益
 * 即便是公司的同事，也请尊重 JFinal 作者的努力与付出，不要复制给同事
 * <p>
 * 如果你尚未加入俱乐部，请立即删除该项目，或者现在加入俱乐部：http://jfinal.com/club
 * <p>
 * 俱乐部将提供 jfinal-club 项目源码、直播视频、专用 QQ 群，以及作者在俱乐部定期的分享与答疑，
 * 价值远比仅仅拥有 jfinal club 项目源代码要大得多，俱乐部福利资源是不断增加的，以下是俱乐部
 * 新福利计划：
 * https://jfinal.com/club/1-2
 * <p>
 * JFinal 俱乐部是七年以来首次寻求外部资源的尝试，以便于创建更加高品质的产品与服务，为你带来
 * 更多、更大的价值
 * <p>
 * JFinal 项目的可持续性发展需要你的支持！！！
 */

package com.jfinal.club._admin.banners;

import com.jfinal.aop.Inject;
import com.jfinal.club.common.banner.BannersService;
import com.jfinal.club.common.controller.BaseController;
import com.jfinal.club.common.model.Banners;
import com.jfinal.club.my.setting.MySettingService;
import com.jfinal.club.util.Cons;
import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.upload.UploadFile;

/**
 * 项目管理控制器
 */
public class BannersAdminController extends BaseController {


    @Inject
    MySettingService mySettingSrv;

    @Inject
    BannersService bannersService;

    public void index() {
        int type = getParaToInt("type");
        Page<Banners> bannersByType = bannersService.getBannersByType(getInt("p",1),type, Cons.ADMIN_PAGE_SIZE);
        setAttr("bannersPage", bannersByType);
        setAttr("type", type);
        render("index.html");
    }

    /**
     * 创建
     */
    public void add() {
        keepPara("type");
        render("add_edit.html");
    }


    /**
     * 修改
     */
    public void edit() {
        keepPara("p");    // 保持住分页的页号，便于在 ajax 提交后跳转到当前数据所在的页
        Integer id = getParaToInt("id");
        Banners banners = bannersService.getBanners(id);
        setAttr("banners", banners);
        setAttr("type", banners.getType());
        render("add_edit.html");
    }

    public void delete() {
        Ret ret = bannersService.deleteById(getParaToInt("id"));
        renderJson(ret);
    }

    /**
     * 提交创建
     */
    public void save() {
        UploadFile uf = null;
        try {
            uf = getFile("filenames", mySettingSrv.getAvatarTempDir(), mySettingSrv.getAvatarMaxSize());

            Banners banners = getModel(Banners.class);
            if (uf == null){
                if(banners.getId() == null){
                    renderJson(Ret.fail("msg", "请先选择上传文件"));
                    return;
                }
            }else {
                Ret ret = mySettingSrv.uploadAvatar(1, uf);
                if (ret.isOk()) {   //上传成功则将文件 url 径暂存起来，供下个环节进行裁切
                    String avatarUrl = ret.get("avatarUrl").toString();
                    banners.setPicurl(avatarUrl);
                } else {
                    renderJson(ret);
                }
            }

            Ret ret1;
            if(banners.getId() == null){
                ret1 = bannersService.saveBanner(banners);
            }else {
                ret1 = bannersService.updateBanner(banners);
            }
            //renderJson(ret1);
            redirect("/admin/banners?type=0");

        } catch (Exception e) {
            if (e instanceof com.jfinal.upload.ExceededSizeException) {
                renderJson(Ret.fail("msg", "文件大小超出范围"));
            } else {
                if (uf != null) {
                    // 只有出现异常时才能删除，不能在 finally 中删，因为后面需要用到上传文件
                    uf.getFile().delete();
                }
                renderJson(Ret.fail("msg", e.getMessage()));
            }
            return;
        }
    }

//    /**
//     * 锁定
//     */
//    public void lock() {
//        Ret ret = srv.lock(getParaToInt("id"));
//
//        projectSrv.clearHotProjectCache();
//        indexSrv.clearCache();
//        renderJson(ret);
//    }
//
//    /**
//     * 解除锁定
//     */
//    public void unlock() {
//        Ret ret = srv.unlock(getParaToInt("id"));
//
//        projectSrv.clearHotProjectCache();
//        indexSrv.clearCache();
//        renderJson(ret);
//    }
//
//    /**
//     * 删除 project
//     */
//    public void delete() {
//        Ret ret = srv.delete(getParaToInt("id"));
//        renderJson(ret);
//    }
}


