public OkResponse contact(String alias, MailToShow mailToSend) {
    ValidationResult validate = captchaValidator.validate(mailToSend.getCaptcha());
    if (!validate.isSuccess()) {
      throw new IllegalArgumentException("Rosszul megadott Captcha: " + validate.toString());
    }
    MimeMessage mail = mailSender.createMimeMessage();
    try {
      MimeMessageHelper helper = new MimeMessageHelper(mail, false);

      String body =
          "----- Ez a levél a tilos.hu műsoroldaláról lett küldve-----\n"
              + "\n"
              + "A form kitöltője a "
              + mailToSend.getFrom()
              + " email-t adta meg válasz címnek, de ennek valódiságát nem ellenőriztük."
              + "\n"
              + "-------------------------------------"
              + "\n"
              + mailToSend.getBody();

      helper.setFrom("*****@*****.**");
      helper.setReplyTo(mailToSend.getFrom());
      helper.setSubject("[tilos.hu] " + mailToSend.getSubject());
      helper.setText(body);

      DBObject one = db.getCollection("show").findOne(aliasOrId(alias));
      if (one == null) {
        throw new IllegalArgumentException("No such show: " + alias);
      }
      ShowDetailed detailed = mapper.map(one, ShowDetailed.class);

      detailed
          .getContributors()
          .forEach(
              contributor -> {
                DBObject dbAuthor =
                    db.getCollection("author").findOne(aliasOrId(contributor.getAuthor().getId()));

                if (dbAuthor.get("email") != null) {
                  try {
                    helper.setTo((String) dbAuthor.get("email"));
                  } catch (MessagingException e) {
                    throw new RuntimeException(e);
                  }
                  mailSender.send(mail);
                }
              });
    } catch (Exception e) {
      throw new InternalErrorException("Can't send the email message: " + e.getMessage(), e);
    }
    return new OkResponse("Üzenet elküldve.");
  }
  public ShowDetailed get(String alias) {
    DBObject one = db.getCollection("show").findOne(aliasOrId(alias));
    if (one == null) {
      throw new NotFoundException("No such show");
    }
    ShowDetailed detailed = mapper.map(one, ShowDetailed.class);

    Date now = new Date();
    for (SchedulingSimple ss : detailed.getSchedulings()) {
      if (ss.getValidFrom().compareTo(now) < 0 && ss.getValidTo().compareTo(now) > 0)
        ss.setText(schedulingTextUtil.create(ss));
    }
    if (detailed.getContributors() != null) {
      for (ShowContribution contributor : detailed.getContributors()) {
        if (contributor.getAuthor() != null) {
          avatarLocator.locateAvatar(contributor.getAuthor());
        }
      }
    }
    long mixCount =
        db.getCollection("mix")
            .count(new BasicDBObject("show.ref", new DBRef(db, "show", one.get("_id").toString())));
    detailed.getStats().mixCount = (int) mixCount;
    detailed.setUrls(processUrls(detailed.getUrls()));
    return detailed;
  }