Example #1
0
  public void run() {
    Calendar today = Calendar.getInstance();
    Week prevWeek = DateUtils.week(today.getTime()).getPrevious();
    // Check to see if last week's timesheet was submitted.
    for (Employee employee : directory.getByUserName().values()) {
      if (!employee.isActive()) {
        continue;
      }

      if (!employee.active(convert(prevWeek.getStart().getTime()))) {
        continue;
      }

      TimesheetImpl timesheet =
          new TimesheetImpl(
              sarariman,
              employee.getNumber(),
              prevWeek,
              sarariman.getTimesheetEntries(),
              sarariman.getTasks(),
              sarariman.getDataSource(),
              sarariman.getDirectory());
      if (!timesheet.isSubmitted() && (employee.isFulltime() || timesheet.getRegularHours() > 0)) {
        Collection<Integer> chainOfCommand =
            sarariman.getOrganizationHierarchy().getChainsOfCommand(employee.getNumber());
        Iterable<InternetAddress> chainOfCommandAddresses =
            EmailDispatcher.addresses(sarariman.employees(chainOfCommand));
        String message =
            "Please submit your timesheet for the week of "
                + prevWeek
                + " at "
                + sarariman.getMountPoint()
                + ".";
        emailDispatcher.send(
            employee.getEmail(), chainOfCommandAddresses, "late timesheet", message);
        PhoneNumber mobile = employee.getMobile();
        if (mobile != null) {
          try {
            sarariman.getSMSGateway().send(mobile, message);
          } catch (Exception e) {
            // FIXME: log
            e.printStackTrace();
          }
        }
      }
    }
  }
  /**
   * Handles the HTTP <code>POST</code> method.
   *
   * @param request servlet request
   * @param response servlet response
   * @throws ServletException if a servlet-specific error occurs
   * @throws IOException if an I/O error occurs
   */
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    Employee user = (Employee) request.getAttribute("user");
    if (!user.isAdministrator()) {
      response.sendError(401);
      return;
    }

    Sarariman sarariman = (Sarariman) getServletContext().getAttribute("sarariman");
    if (request.getParameter("action").equals("create")) {
      try {
        Connection connection = sarariman.getDataSource().getConnection();
        try {
          PreparedStatement ps =
              connection.prepareStatement(
                  "INSERT INTO contacts (name, title, email, phone, fax, mobile, street, city, state, zip) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
          try {
            ps.setString(1, request.getParameter("name"));
            ps.setString(2, request.getParameter("title"));
            ps.setString(3, request.getParameter("email"));
            ps.setString(4, request.getParameter("phone"));
            ps.setString(5, request.getParameter("fax"));
            ps.setString(6, request.getParameter("mobile"));
            ps.setString(7, request.getParameter("street"));
            ps.setString(8, request.getParameter("city"));
            ps.setString(9, request.getParameter("state"));
            ps.setString(10, request.getParameter("zip"));
            ps.executeUpdate();
            ResultSet rs = ps.getGeneratedKeys();
            try {
              rs.next();
              long id = rs.getLong(1);
              response.sendRedirect(String.format("contact?id=%d", id));
            } finally {
              rs.close();
            }
          } finally {
            ps.close();
          }
        } finally {
          connection.close();
        }
      } catch (SQLException se) {
        throw new ServletException(se);
      }
    } else {
      try {
        Connection connection = sarariman.getDataSource().getConnection();
        try {
          PreparedStatement ps =
              connection.prepareStatement(
                  "UPDATE contacts SET name=?, title=?, email=?, phone=?, fax=?, mobile=?, street=?, city=?, state=?, zip=? WHERE id=?");
          long id = Long.parseLong(request.getParameter("id"));
          try {
            ps.setString(1, request.getParameter("name"));
            ps.setString(2, request.getParameter("title"));
            ps.setString(3, request.getParameter("email"));
            ps.setString(4, request.getParameter("phone"));
            ps.setString(5, request.getParameter("fax"));
            ps.setString(6, request.getParameter("mobile"));
            ps.setString(7, request.getParameter("street"));
            ps.setString(8, request.getParameter("city"));
            ps.setString(9, request.getParameter("state"));
            ps.setString(10, request.getParameter("zip"));
            ps.setLong(11, id);
            ps.executeUpdate();
            response.sendRedirect(String.format("contact?id=%d", id));
          } finally {
            ps.close();
          }
        } finally {
          connection.close();
        }
      } catch (SQLException se) {
        throw new ServletException(se);
      }
    }
  }