Logger.info("sendEnvelope : " + userId + " : " + notificationType);
}
}
private void sendEventNotification(PartakeConnection con, IPartakeDAOs daos, EventTicket ticket, EventEx event, String topPath, DateTime now) throws DAOException {
DateTime beginDate = event.getBeginDate();
DateTime deadline = event.getBeginDate();
// TODO: isBeforeDeadline() とかわかりにくいな。
// 締め切り1日前になっても RESERVED ステータスの人がいればメッセージを送付する。
// 次の条件でメッセージを送付する
// 1. 現在時刻が締め切り24時間前よりも後
// 2. 次の条件のいずれか満たす
// 2.1. まだメッセージが送られていない
// 2.2. 前回送った時刻が締め切り24時間以上前で、かつ送った時刻より1時間以上経過している。
{
EventTicketNotification notification = daos.getEventNotificationAccess().findLastNotification(con, ticket.getId(), NotificationType.ONE_DAY_BEFORE_REMINDER_FOR_RESERVATION);
DateTime lastSent = notification != null ? notification.getCreatedAt() : null;
if (needsToSend(now, deadline.nDayBefore(1), lastSent))
sendNotificationOnlyForReservedParticipants(con, daos, ticket, event, NotificationType.ONE_DAY_BEFORE_REMINDER_FOR_RESERVATION);
}
// 締め切り12時間前になっても RESERVED な人がいればメッセージを送付する。
{
EventTicketNotification notification = daos.getEventNotificationAccess().findLastNotification(con, ticket.getId(), NotificationType.HALF_DAY_BEFORE_REMINDER_FOR_RESERVATION);
DateTime lastSent = notification != null ? notification.getCreatedAt() : null;
if (needsToSend(now, deadline.nHourBefore(12), lastSent))
sendNotificationOnlyForReservedParticipants(con, daos, ticket, event, NotificationType.HALF_DAY_BEFORE_REMINDER_FOR_RESERVATION);
}
// イベント1日前で、参加が確定している人にはメッセージを送付する。
// 参加が確定していない人には、RESERVED なメッセージが送られている。
{
EventTicketNotification notification = daos.getEventNotificationAccess().findLastNotification(con, ticket.getId(), NotificationType.EVENT_ONEDAY_BEFORE_REMINDER);
DateTime lastSent = notification != null ? notification.getCreatedAt() : null;
if (needsToSend(now, beginDate.nDayBefore(1), lastSent))
sendNotificationOnlyForParticipants(con, daos, ticket, event, NotificationType.EVENT_ONEDAY_BEFORE_REMINDER);
}
}