ConsultingServlet.java

/**
 * $Id: ConsultingServlet.java,v 1.4 2002/05/29 15:57:55 feldman Exp $
 *
 * VKBOBA - Versicherungs Kammer Bayern Online Beratung Assistent.
 * Copyright 2002 Think Tank Corporate Consulting. All Rights Reserved.
 *
 * Use is subject to license terms.
 *
 */
package de.vkb.oba.client.servlet;


import javax.servlet.http.HttpServletResponse;

import org.frameworks.bundle.ResourceBundle;
import org.frameworks.exception.common.email.FFEmailException;
import org.frameworks.servlet.FFHttpServletRequest;
import org.frameworks.type.FFDateTime;
import org.frameworks.type.FFString;

import de.vkb.oba.client.servlet.base.BaseServlet;
import de.vkb.oba.common.config.CommonInterface;
import de.vkb.oba.common.email.VKBConsultingEmail;
import de.vkb.oba.server.business.VKBUser;


/**
 * Servlet: Consulting date form processing:
 * - sends date, time and user contact information by email.
 *
 * @author   Alexander Feldman (updated by $Author: feldman $)
 * @created  2002-05-27 Alexander Feldman
 * @version  $Revision: 1.4 $
 *
 */
public class ConsultingServlet extends BaseServlet
  implements CommonInterface
{
  /**
   * Servlet entry.
   *
   * @param request FFHttpServletRequest.
   * @param response HttpServletResponse.
   *
   */
  public void doService(FFHttpServletRequest request,
    HttpServletResponse response)
  {
    FFString lastName  = getCheckedLastName();
    FFString firstName = getCheckedFirstName();
    FFString phone     = getCheckedPhone();
    FFString mobile    = getCheckedMobile();
    FFString email     = getCheckedEmail();
    FFString callMe    = getCheckedCallMe();
    FFString willCome  = getCheckedWillCome();
    FFDateTime dt = request.getDateTime(
      PARAMETER_DATE_YEAR, PARAMETER_DATE_MONTH, PARAMETER_DATE_DAY,
      PARAMETER_TIME_HOUR, null, null);
    if (dt.isNull())
    {
      ResourceBundle rb = new ResourceBundle(RESOURCE_COMMON);
      request.addErrorItem(rb.get(COMMON_MESSAGE_WRONG_DATE));
    }

    if ( !request.hasErrors())
    {
      VKBUser user = (VKBUser) request.getSession().getObject(SESSION_USER);
      user.setFirstName(firstName);
      user.setLastName(lastName);
      user.setPhone(phone);
      user.setMobile(mobile);
      user.setEmail(email);

      processConsulting(user, dt, callMe, willCome);
    }
  }


  /**
   * Sends user contacts and required-selected date by email.
   *
   * @param user - an user requested for consulting.
   * @param dt - date/time of consulting user selected.
   * @param callMe - string with user's request: please call me.
   * @param willCome - string with user's request: I will come.
   *
   */
  private void processConsulting(VKBUser user, FFDateTime dt,
    FFString callMe, FFString willCome)
  {
    ResourceBundle rb = new ResourceBundle(RESOURCE_COMMON);
    try
    {
      VKBConsultingEmail consultingEmail =
        new VKBConsultingEmail(user, dt, callMe, willCome);
      consultingEmail.send();
      request.addInfoItem(rb.get(COMMON_MESSAGE_CONSULTING_SAVED_THANKS));
      setTarget(WELCOME_URL);
    }
    catch (FFEmailException e)
    {
      String msg = rb.get(COMMON_MESSAGE_CONSULTING_SAVE_FAILED);
      log.error(msg + ", got: " + e.toString());
      request.addErrorItem(msg);
    }
  }


  /**
   * Call-back function is called by base class if any errors accored (added
   * by addErrorItem).
   *
   * @param request FFHttpServletRequest.
   *
   * @return URL where to go in case of such errors.
   *
   */
  public String getCalledPage(FFHttpServletRequest request)
  {
    // Note: log may not be initialized here.
    return CONSULTING_URL;
  }

}