package jp.agentec.sinaburocast.service;

import java.util.List;

import jp.agentec.sinaburocast.entity.MemberNotifyMail;

import org.seasar.extension.jdbc.where.SimpleWhere;
import org.seasar.framework.container.annotation.tiger.Component;
import org.seasar.framework.container.annotation.tiger.InstanceType;

@Component(instance=InstanceType.SINGLETON)
public class MemberNotifyMailService extends AbstractService<MemberNotifyMail> {
	
	public static final String ID_SEQ_NAME = "member_notify_mail_id_seq";

	public NotifyMailSendResultService notifyMailSendResultService;

	/**
	 * IDを発行して、登録する。
	 */
	public int insertMemberNotifyMail(MemberNotifyMail memberNotifyMail, String insId) {
		memberNotifyMail.memberNotifyMailId = getSeqNextVal(Integer.class, ID_SEQ_NAME);
		return super.insert(memberNotifyMail, insId);
	}
	

    public MemberNotifyMail findById(Integer memberNotifyMailId) {
        return select().id(memberNotifyMailId).innerJoin("enquete").getSingleResult();
    }

    public MemberNotifyMail findByEnqueteId(Integer enqueteId) {
        return select().where(new SimpleWhere().eq("enqueteId",enqueteId )).getSingleResult();
    }
    
    
    public List<MemberNotifyMail> findAllOrderById() {
        return select().orderBy("memberNotifyMailId asc").getResultList();
    }
    
    public List<MemberNotifyMail> findAllByEnqueteId(String eid) {
        return select().where(new SimpleWhere().eq("enqueteId",eid)).getResultList();
    }
    
    
    /**
     * アンケート検索画面で削除ボタンを押した場合。
     * @param eid アンケートID
     * @return
     */
	public int deleteByEnqueteId(String eid) {
		List<MemberNotifyMail> list = findAllByEnqueteId(eid);
		if (!list.isEmpty()) {
			// 送信履歴の削除
			for (MemberNotifyMail mail : list) {
				notifyMailSendResultService.deleteByMemberNotifyMailId(mail.memberNotifyMailId);
			}
			jdbcManager.deleteBatch(list).execute();
		}
		return 0;
	}
}