public void approve(
      int notificationId,
      int tripNo,
      int routeNo,
      RouteType routeType,
      String startTime,
      String endTime) {

    TripDAO tripDAO = new TripDAO();
    RouteDAO routeDAO = new RouteDAO();
    Route route = routeDAO.getRoutebyRouteNo(routeNo, routeType);
    Trip trip = tripDAO.readTripByRouteAndNo(route, tripNo);

    // if cannot find trip -> return and do nothing
    if (trip == null) {
      System.out.println("Approve Action have something wrong");
      return;
    }

    boolean canApprove = false;
    LocalTime start = null;
    if (startTime != null) {
      start = parseTimeFromClient(startTime);
      canApprove = true;
    }
    LocalTime end = null;
    if (endTime != null) {
      end = parseTimeFromClient(endTime);
      canApprove = true;
    }

    if (canApprove) {
      if (start != null) {
        trip.setStartTime(start);
      }
      if (end != null) {
        trip.setEndTime(end);
      }
      tripDAO.update(trip);
    }

    // delete trip notification
    TripNotificationDAO tripNotificationDAO = new TripNotificationDAO();
    TripNotification tripNof = tripNotificationDAO.read(notificationId);
    tripNotificationDAO.delete(tripNof);

    // delete notification
    NotificationDAO notificationDAO = new NotificationDAO();
    Notification nof = notificationDAO.read(notificationId);
    notificationDAO.delete(nof);

    System.out.println("Trip Notification Approved");
  }