package com.bohuikeji.frame.module.admin.entity.back;

import com.bohuikeji.frame.module.admin.entity.sys.SysChart;
import org.springframework.web.servlet.ModelAndView;

import java.awt.image.BufferedImage;
import java.util.List;
import java.util.Map;

public class PageEntity  extends ModelAndView {
	
	private String msgType="success";
	
	private PageEntity() {
		super.setViewName("page/msg");
		super.addObject("msgType", msgType);
	}
	
	private PageEntity(String fileName) {
		super.setViewName(fileName);
		super.addObject("msgType", msgType);
	}
	/**
	 * 添加对象到页面
	 * @param key 对象key
	 * @param obj 对象
	 * @return
	 */
	public  PageEntity add(String key,Object obj) {
		super.addObject(key, obj);
		return this;
	}

	/**
	 * 添加多个对象到页面
	 * @param params
	 * @return
	 */
	public  PageEntity add(Map<String,?> params) {
		super.addAllObjects(params);
		return this;
	}
	/**
	 * 重定向页面(重新发起请求)
	 * @param url 重定向到的url
	 * @return
	 */
	public static PageEntity redirect(String url){
		return new PageEntity("redirect:/"+url);
	}
	/**
	 * 成功封装
	 * @return
	 */
	public static PageEntity success() {
		return new PageEntity().add("msg","操作成功");
	}
	public static PageEntity success(String msg) {
		return new PageEntity().add("msg",msg);
	}
	/**
	 * 操作失败
	 * @return
	 */
	public static PageEntity fail() {
		return new PageEntity().setMsgType("fail").add("msg","操作失败");
	}
	public static PageEntity fail(String msg) {
		return new PageEntity().setMsgType("fail").add("msg",msg);
	}
	
	/**
	 *    页面操作异常
	 * @return
	 */
	public static PageEntity exception() {
		return new PageEntity().setMsgType("exception").add("msg","系统繁忙");
	}
	public static PageEntity exception(String msg) {
		return new PageEntity().setMsgType("exception").add("msg",msg);
	}
	
	/**
	 * 页面弹出alert
	 * @return
	 */
	public static PageEntity alert(String msg) {
		return new PageEntity().setMsgType("alert").add("msg",msg);
	}
	/**
	 * 返回页面
	 * @param path 页面路径
	 * @return
	 */
	
	public static PageEntity page(String path) {
		return new PageEntity(path);
	}

	/**
	 * 返回默认页面
	 * @return
	 */
	public static PageEntity page() {
		return new PageEntity("/table/index");
	}

	/**
	 * 返回图表页面块
	 * @param charts
	 * @return
	 */
	public static PageEntity charts(List<SysChart> charts){
		return  page("/include/block/chart/charts").add("charts",charts);
	}

	/**
	 * 返回卡片页面块
	 * @param cards
	 * @return
	 */
	public static PageEntity cards(List<SysChart> cards){
		return  page("/include/block/chart/cards").add("cards",cards);
	}

	/**
	 * 添加卡片
	 * 【注意】页面必须引入：/include/block/chart/cards.html
	 * @param cards
	 * @return
	 */
	public PageEntity addCared(List<SysChart> cards){return this.add("cards",cards);}

	/**
	 * 返回卡片页面块
	 * @param cards
	 * @return
	 */
	public static PageEntity getcImage(BufferedImage sourceImg){
		return  page("/storewallet/image").add("image",sourceImg);
	}

	/**
	 * 返回图表加卡片页面块
	 * @param cards
	 * @param charts
	 * @return
	 */
	public static PageEntity cardsAndCharts(List<SysChart> cards,List<SysChart> charts){
		return  page("/include/block/chart/cards_and_charts").add("cards",cards).add("charts",charts);
	}
	/*public String getMsgType() {
		return msgType;
	}*/
	private PageEntity setMsgType(String msgType) {
		this.msgType = msgType;
		super.addObject("msgType", msgType);
		return this;
	}
}
