@Autowired
 public ReminderController(
     ReminderValidator reminderValidator,
     UserService userService,
     ReminderService reminderService) {
   try {
     this.qm = QuartzManager.getSingletonManager();
     this.reminderValidator = reminderValidator;
     this.userService = userService;
   } catch (SchedulerException e) {
     e.printStackTrace();
   }
   this.reminderService = reminderService;
 }
  @RequestMapping(value = "/reminder", method = RequestMethod.POST)
  public String submitReminder(
      @ModelAttribute("form") @Valid ReminderForm form, BindingResult result) {
    System.out.println("test reminder");

    if (result.hasErrors()) {
      /* show error to user */
      return "reminder";
    }

    Reminder reminder = Reminder.createReminder(form);

    /* Save to database code. should url be localhost:8080/reminder/{userId} ? */

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String name = auth.getName();
    Optional<User> opUser = (Optional<User>) userService.getUserByEmail(name);
    User user = opUser.get();

    reminder.setUser(user);

    reminderService.save(reminder);

    System.out.println("Post reminder request from " + name);
    System.out.println("details: " + user.getEmail());
    System.out.println(
        reminder.getMessage()
            + "+"
            + reminder.getRecipient()
            + "+"
            + reminder.getStart()
            + "+"
            + reminder.getInterval());

    try {
      qm.createCronJob(reminder);
    } catch (SchedulerException e) {
      e.printStackTrace();
    }

    return "redirect:/main";
  }