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

import java.util.ArrayList;
import java.util.List;

import jp.agentec.sinaburocast.action.AbstractAction;
import jp.agentec.sinaburocast.common.SinaburoConstant;
import jp.agentec.sinaburocast.common.annotation.OperationHistoryAno;
import jp.agentec.sinaburocast.common.util.SinaburoUtil;
import jp.agentec.sinaburocast.common.util.SinaburoViewUtil;
import jp.agentec.sinaburocast.entity.EnqueteMail;
import jp.agentec.sinaburocast.form.admin.mail.MailSearchForm;
import jp.agentec.sinaburocast.service.EnqueteMailService;

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

/**
 * アンケートメール検索
 * @author kim-hs
 *
 */
public class MailSearchAction extends AbstractAction {

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

	@ActionForm
	public MailSearchForm mailSearchForm;

	public EnqueteMailService enqueteMailService;

	/**
	 * 初期表示
	 */
	@Execute(validator = false, reset="clearAll")
	public String index() {
		session.removeAttribute("mailList");
		mailSearchForm.mailSubject="";
		mailSearchForm.backFlg = true;

		List<EnqueteMail> mailList = new ArrayList<EnqueteMail>();
		mailList = enqueteMailService.findAllOrderById(null, mailSearchForm.pageNo, mailSearchForm);
		session.setAttribute("mailList", mailList);
		return "/admin/mail/mailSearch.html";
	}

	/**
	 * メール検索
	 * @return
	 */
	@Execute(validator = false, reset="clearSearch")
	public String searchMail() {
		//session.removeAttribute("mailList");
		TokenProcessor.getInstance().saveToken(request);

		if(StringUtil.isNotBlank(mailSearchForm.fromDay) && !SinaburoUtil.checkDate(mailSearchForm.fromDay)){
			addErrorMessage("dateError", "errors.E033");
			addErrorMessage("dateError_1", "errors.E033_1");
			addErrorMessage("dateError_2", "errors.E033_2");
			return "/admin/mail/mailSearch.html";
		}else if(StringUtil.isNotBlank(mailSearchForm.toDay) && !SinaburoUtil.checkDate(mailSearchForm.toDay)){
			addErrorMessage("dateError", "errors.E033");
			addErrorMessage("dateError_1", "errors.E033_1");
			addErrorMessage("dateError_2", "errors.E033_2");
			return "/admin/mail/mailSearch.html";
		}else if(StringUtil.isNotBlank(mailSearchForm.fromDay) && StringUtil.isNotBlank(mailSearchForm.toDay)
				&& mailSearchForm.toDay.compareTo(mailSearchForm.fromDay) < 0
				){
			addErrorMessage("dateError", "errors.E020");
			return "/admin/mail/mailSearch.html";
		}

		List<EnqueteMail> mailList = new ArrayList<EnqueteMail>();
		mailList = enqueteMailService.findAllOrderById(null, mailSearchForm.pageNo, mailSearchForm);
		session.setAttribute("mailList", mailList);
		return "/admin/mail/mailSearch.html";
	}

	/**
	 * メール検索ページング
	 * @return
	 */
	@Execute(validator = false, urlPattern = "searchMail/{pageNo}", reset="clearPage")
	public String memberSearchResultPage() {
		TokenProcessor.getInstance().saveToken(request);

		List<EnqueteMail> mailList = new ArrayList<EnqueteMail>();
		mailList = enqueteMailService.findAllOrderById(null, mailSearchForm.pageNo, mailSearchForm);

		session.setAttribute("mailList", mailList);
		return "/admin/mail/mailSearch.html";

	}


	/**
	 *	メール削除
	 * @return
	 */
	@Execute(validator = false)
	@OperationHistoryAno(operationTypeId=SinaburoConstant.OperationType.DELETE,target="メール削除",detail="削除",screenId=SinaburoConstant.screenId.CMS0001)
	public String deleteMail() {

    	// トークン確認
//   		if (!TokenProcessor.getInstance().isTokenValid(request, true)) {
//
//   			return "/error/admin/doubleAction.html";
//    	}

		String enqueteMailId = request.getParameter("enqueteMailId");

		EnqueteMail enqueteMail = new EnqueteMail();
		//enqueteMail.enqueteMailId = Integer.parseInt(enqueteMailId);

		enqueteMail = enqueteMailService.findById(Integer.parseInt(enqueteMailId));
		int result = 0;
		if (enqueteMail == null) {
			result = 0;
		} else {
			result = enqueteMailService.deleteMail(enqueteMail);
		}

		if(result < 1){
			request.setAttribute(SinaburoConstant.notRegistOperationHistoryKey.notRegist, SinaburoConstant.notRegistOperationHistoryKey.notRegist);
			addError(SinaburoViewUtil.getMessage("info.I001"));
			return "/admin/mail/mailSearch.html";
		}
		List<EnqueteMail> mailList = new ArrayList<EnqueteMail>();
		mailList = enqueteMailService.findAllOrderById(null, mailSearchForm.pageNo, mailSearchForm);
		session.setAttribute("mailList", mailList);

		addError(SinaburoViewUtil.getMessage("info.I002"));
		return "/admin/mail/mailSearch.html";

	}
	/**
	 * メール編集
	 * @return
	 */
	@Execute(validator = false)
	public String mailEdit() {

		return "/admin/mail/mailEdit.html";
	}

	/**
	 * 予約語挿入
	 * @return
	 */
	@Execute(validator = false)
	public String mailResevedPopup() {

		return "/admin/mail/popup.html";
	}


	/**
	 * メール検索
	 * 完了画面の戻るボタン
	 * @return
	 */
	@Execute(validator = false)
	public String searchMailRegist() {
		TokenProcessor.getInstance().saveToken(request);

		//mailSearchForm.mailSubject="";
		//mailSearchForm.backFlg = true;

		List<EnqueteMail> mailList = new ArrayList<EnqueteMail>();
		mailList = enqueteMailService.findAllOrderById(null, mailSearchForm.pageNo, mailSearchForm);
		session.setAttribute("mailList", mailList);

		return "/admin/mail/mailSearch.html";
	}

}