@RequestMapping("download")
  public void download(ReportVo reportVo, HttpServletResponse response, HttpServletRequest request)
      throws IOException {
    if (reportVo != null) {
      String template = "config/templates/" + reportVo.getReportType() + ".html";
      PdfDocumentGenerator pdfGenerator = new PdfDocumentGenerator();
      List<User> users = userService.findAll();
      if (users != null) {
        List<DocumentVo> employeeReportVos = new ArrayList<DocumentVo>();
        for (User user : users) {
          EmployeeReportVo employeeReportVo = new EmployeeReportVo(user, reportVo.getReportType());
          if (employeeReportVo.getIsEmployee() != null && employeeReportVo.getIsEmployee()) {
            employeeReportVos.add(employeeReportVo);
          }
        }
        try {
          if (reportVo.getReportType().equals(ReportType.TimeCardReport.name())
              || reportVo.getReportType().equals(ReportType.ExceptionsReport.name())) {
            try {
              pdfGenerator.generate(
                  createTimeCardReport(reportVo, employeeReportVos), response.getOutputStream());
            } catch (Exception e) {
              e.printStackTrace();
            }
          } else {
            pdfGenerator.generate(template, employeeReportVos, response.getOutputStream());
          }

        } catch (DocumentGeneratingException e) {
          e.printStackTrace();
        }
      }
    }
  }
  @RequestMapping("/condition")
  public ModelAndView condition(
      ReportType type, HttpServletResponse response, HttpServletRequest request) throws Exception {
    ModelAndView view = new ModelAndView();

    User user = SessionUtils.getUser(request);
    if (user != null && user.getCompany() != null) {
      List<PayGroup> payGroups = tmsService.findAllPageGroups(user.getCompany().getId());
      view.getModelMap().put("payGroupList", payGroups);
    }

    if (ReportType.TimeCardReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/timecard");
    }

    if (ReportType.TimeCardDetailsReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/timecarddetails");
    }
    if (ReportType.EmployeesListReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/employeelist");
    }
    if (ReportType.ExceptionsReport.getName().equals(type.getName())) {
      view.getModelMap().put("types", ExcetpitonTypes.values());
      view.setViewName("admin/report/exceptions");
    }
    if (ReportType.OnsiteReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/onsite");
    }
    if (ReportType.LeaveReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/leave");
    }
    if (ReportType.JobHoursSummaryReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/jobhourssummary");
    }
    if (ReportType.JobHoursDetailsReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/jobhoursdetails");
    }
    if (ReportType.AuditingReport.getName().equals(type.getName())) {
      view.setViewName("admin/report/auditing");
    }

    return view;
  }