/**
 *
 */
package jp.agentec.sinaburocast.action.admin.mail;

import java.util.Map;

import javax.annotation.Resource;

import jp.agentec.sinaburocast.action.AbstractAction;
import jp.agentec.sinaburocast.common.util.PropertyUtil;
import jp.agentec.sinaburocast.common.util.SinaburoUtil;
import jp.agentec.sinaburocast.form.admin.enquete.EnqueteSearchForm;
import jp.agentec.sinaburocast.service.EnqueteService;

import org.apache.log4j.Logger;
import org.seasar.framework.util.StringUtil;
import org.seasar.struts.annotation.ActionForm;
import org.seasar.struts.annotation.Execute;

/**
 *
 * 予約語選択時、ポップアップする
 * @author kim-hs
 *
 */
public class MailPopupAction extends AbstractAction {

	private final Logger logger = Logger.getLogger(getClass());

	@Resource
	protected Map requestScope;

	@ActionForm
	public EnqueteSearchForm enqueteSearchForm;

	public EnqueteService enqueteService;

	/**
	 * 初期表示
	 */
	@Execute(validator = false,reset="resetIndex")
	public String index() {
		session.removeAttribute("admin_enquete_enqueteResultForm");
		return "/admin/mail/popup.html";
	}

	/**
	 * アンケート検索
	 */
	@Execute(validator = false,urlPattern="search/{pageNo}" )
	public String search() {
		enqueteSearch();
		return "/admin/mail/popup.html";
	}

	/**
	 * アンケートを検索する。
	 *
	 */
	private void enqueteSearch(){
		formCheck();
		if(hasErrors()){
			return;
		}
		enqueteSearchForm.serverUrl = PropertyUtil.getString("ENQUETE_SERVER_URL");

		enqueteSearchForm.searchResultList = enqueteService.getEnqueteByNameStartEnd(enqueteSearchForm);
	}

	/**
	 * Formの日付のチェックを行う。
	 */
	private void formCheck(){
		if(StringUtil.isNotBlank(enqueteSearchForm.operationTermFrom) && !SinaburoUtil.checkDate(enqueteSearchForm.operationTermFrom)){
			addErrorMessage("dateError", "errors.E033");
			addErrorMessage("dateError_1", "errors.E033_1");
			addErrorMessage("dateError_2", "errors.E033_2");
		}else if(StringUtil.isNotBlank(enqueteSearchForm.operationTermTo) && !SinaburoUtil.checkDate(enqueteSearchForm.operationTermTo)){
			addErrorMessage("dateError", "errors.E033");
			addErrorMessage("dateError_1", "errors.E033_1");
			addErrorMessage("dateError_2", "errors.E033_2");
		}else if(StringUtil.isNotBlank(enqueteSearchForm.operationTermFrom) && StringUtil.isNotBlank(enqueteSearchForm.operationTermTo)
				&& enqueteSearchForm.operationTermTo.compareTo(enqueteSearchForm.operationTermFrom) < 0
				){
			addErrorMessage("dateError", "errors.E020");
		}
	}
}