package crmdna.api.endpoint; import com.google.api.server.spi.config.Api; import com.google.api.server.spi.config.ApiMethod; import com.google.api.server.spi.config.ApiMethod.HttpMethod; import com.google.appengine.api.users.User; import crmdna.attendance.AttendanceFactory; import crmdna.attendance.CheckInMemberProp; import crmdna.attendance.IAttendance; import crmdna.common.Utils; import crmdna.common.api.APIResponse; import crmdna.common.api.APIResponse.Status; import crmdna.common.api.APIUtils; import crmdna.common.api.RequestInfo; import javax.annotation.Nullable; import javax.inject.Named; import javax.servlet.http.HttpServletRequest; import java.util.List; @Api(name = "attendance", clientIds = {"220866004543.apps.googleusercontent.com", com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID}) public class AttendanceApi { @ApiMethod(path = "checkin", httpMethod = HttpMethod.POST) public APIResponse checkin(@Named("client") String client, @Named("memberId") long memberId, @Named("programId") long programId, @Named("sessionDateYYYYMMDD") int sessionDateYYYYMMDD, @Named("batchNo") int batchNo, @Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req, User user) { if (client == null) client = "isha"; String login = null; try { login = Utils.getLoginEmail(user); IAttendance impl = AttendanceFactory.getImpl(client); int numCheckins = impl.checkin(memberId, programId, sessionDateYYYYMMDD, batchNo, login); APIResponse apiResponse = new APIResponse(); apiResponse.statusCode = Status.SUCCESS; apiResponse.object = numCheckins; apiResponse.userFriendlyMessage = "Number of checkins: " + numCheckins; return apiResponse; } catch (Exception ex) { return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req) .login(login)); } } @ApiMethod(path = "checkout", httpMethod = HttpMethod.POST) public APIResponse checkout(@Named("client") String client, @Named("memberId") long memberId, @Named("programId") long programId, @Named("sessionDateYYYYMMDD") int sessionDateYYYYMMDD, @Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req, User user) { if (client == null) client = "isha"; String login = null; try { login = Utils.getLoginEmail(user); IAttendance impl = AttendanceFactory.getImpl(client); int numCheckins = impl.checkout(memberId, programId, sessionDateYYYYMMDD, login); APIResponse apiResponse = new APIResponse(); apiResponse.statusCode = Status.SUCCESS; apiResponse.object = numCheckins; apiResponse.userFriendlyMessage = "Number of checkins: " + numCheckins; return apiResponse; } catch (Exception ex) { return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req) .login(login)); } } @ApiMethod(path = "getNumCheckins", httpMethod = HttpMethod.GET) public APIResponse getNumCheckins(@Named("client") String client, @Named("programId") long programId, @Named("sessionDateYYYYMMDD") int sessionDateYYYYMMDD, @Named("batchNo") int batchNo, @Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req) { if (client == null) client = "isha"; try { IAttendance impl = AttendanceFactory.getImpl(client); int numCheckins = impl.getNumCheckins(programId, sessionDateYYYYMMDD, batchNo); APIResponse apiResponse = new APIResponse(); apiResponse.statusCode = Status.SUCCESS; apiResponse.object = numCheckins; apiResponse.userFriendlyMessage = "Number of checkins: " + numCheckins; return apiResponse; } catch (Exception ex) { return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req)); } } @ApiMethod(path = "getMembersForCheckIn", httpMethod = HttpMethod.GET) public APIResponse getMembersForCheckIn(@Named("client") String client, @Named("searchStr") String searchStr, @Named("programId") long programId, @Named("sessionDateYYYYMMDD") int sessionDateYYYYMMDD, @Nullable @Named("maxResultsSizeDefault10") Integer maxResultSize, @Nullable @Named("showStackTrace") Boolean showStackTrace, HttpServletRequest req, User user) { if (client == null) client = "isha"; String login = null; if (maxResultSize == null) maxResultSize = 10; try { login = Utils.getLoginEmail(user); IAttendance impl = AttendanceFactory.getImpl(client); List<CheckInMemberProp> checkInMemberProps = impl.getMembersForCheckIn(searchStr, programId, sessionDateYYYYMMDD, maxResultSize, login); return new APIResponse().status(Status.SUCCESS).object(checkInMemberProps); } catch (Exception ex) { return APIUtils.toAPIResponse(ex, showStackTrace, new RequestInfo().client(client).req(req) .login(login)); } } }