ensureValidSessionToken();
if (user.isBanned()) {
throw new PartakeException(UserErrorCode.BANNED_USER);
}
Event embryo = new Event();
embryo.setOwnerId(user.getId());
embryo.setDraft(optBooleanParameter("draft", true));
embryo.setCreatedAt(TimeUtil.getCurrentDateTime());
// Title
String title = getParameter("title");
if (StringUtils.isBlank(title) || title.length() > 100)
return renderInvalid(UserErrorCode.INVALID_PARAMETERS, Collections.singletonMap("title", "タイトルは 100 文字以下で必ず入力してください。"));
embryo.setTitle(title);
// beginDate
{
DateTime beginDate = getDateTimeParameter("beginDate");
if (beginDate == null)
return renderInvalid(UserErrorCode.INVALID_PARAMETERS, Collections.singletonMap("beginDate", "開始日時は必ず入力して下さい。"));
Calendar beginCalendar = TimeUtil.calendar(beginDate.toDate());
if (beginCalendar.get(Calendar.YEAR) < 2000 || 2100 < beginCalendar.get(Calendar.YEAR))
return renderInvalid(UserErrorCode.INVALID_PARAMETERS, Collections.singletonMap("beginDate", "開始日時の範囲が不正です。"));
embryo.setBeginDate(beginDate);
}
// endDate
{
DateTime endDate = getDateTimeParameter("endDate");
if (endDate != null) {
Calendar endCalendar = TimeUtil.calendar(endDate.toDate());
if (endCalendar.get(Calendar.YEAR) < 2000 || 2100 < endCalendar.get(Calendar.YEAR))
return renderInvalid(UserErrorCode.INVALID_PARAMETERS, Collections.singletonMap("endDate", "終了日時の範囲が不正です。"));
if (!embryo.getBeginDate().isBefore(endDate))
return renderInvalid(UserErrorCode.INVALID_PARAMETERS, Collections.singletonMap("endDate", "終了日時が開始日時より前になっています。"));
}
embryo.setEndDate(endDate);
}
String eventId = new CreateTransaction(embryo).execute();
ObjectNode obj = new ObjectNode(JsonNodeFactory.instance);
obj.put("eventId", eventId);