/* Final menu asks for confirmation, then sends out */ @RequestMapping(value = path + "confirm") @ResponseBody public Request voteConfirm( @RequestParam(value = phoneNumber) String inputNumber, @RequestParam(value = entityUidParam) String requestUid, @RequestParam(value = userInputParam) String userInput, @RequestParam(value = "time", required = false) String time, @RequestParam(value = "field", required = false) String field, @RequestParam(value = interruptedFlag, required = false) boolean interrupted) throws URISyntaxException { User user = userManager.findByInputNumber(inputNumber, saveVoteMenu("confirm", requestUid)); String[] promptFields; if (!interrupted) { switch (field) { case "standard": promptFields = setStandardTime(requestUid, time, user); break; case "custom": promptFields = setCustomTime(requestUid, userInput, user); break; case "issue": promptFields = adjustSubject(requestUid, userInput, user); break; default: promptFields = new String[] {"Error!", "Error occurred!"}; break; } } else { EventRequest vote = eventRequestBroker.load(requestUid); promptFields = new String[] { vote.getName(), "at " + vote.getEventDateTimeAtSAST().format(dateTimeFormat) }; } USSDMenu menu = new USSDMenu(getMessage(thisSection, "confirm", promptKey, promptFields, user)); menu.addMenuOption( voteMenus + "send" + entityUidUrlSuffix + requestUid, getMessage(thisSection, "confirm", optionsKey + "yes", user)); menu.addMenuOption( backVoteUrl("issue", requestUid), getMessage(thisSection, "confirm", optionsKey + "topic", user)); menu.addMenuOption( backVoteUrl("time", requestUid), getMessage(thisSection, "confirm", optionsKey + "time", user)); return menuBuilder(menu); }
private String[] adjustSubject(String requestUid, String userInput, User user) { String dateTime; eventRequestBroker.updateName(user.getUid(), requestUid, userInput); EventRequest vote = eventRequestBroker.load(requestUid); if (vote.getEventStartDateTime().isBefore(Instant.now().plus(7, ChronoUnit.MINUTES))) { // user is manipulating an "instant" vote so need to reset the counter, else may expire before // send eventRequestBroker.updateEventDateTime( user.getUid(), requestUid, LocalDateTime.now().plusMinutes(7L)); dateTime = getMessage(thisSection, "confirm", "time.instant", user); } else { // need a quick way to do "at" in i18n dateTime = "at " + vote.getEventDateTimeAtSAST().format(dateTimeFormat); } return new String[] {userInput, dateTime}; }