@GET
    @Produces({ "application/json", "application/xml" })  
    @OAuthSecurity(scope="default")
    @Path("/requests/shift")
    public ServiceResponse getShiftRequests(@QueryParam("offset") Integer offset, @QueryParam("limit") Integer limit) {
		
		RequestsAdapterFactory factory = requestsAdapterFactory.getInstance();
		
		RequestsAdapter adapter = factory.getrequestsAdapter(ServiceConstants.ADAPTER_NAME);
				
		ServiceResponse response = adapter.getShiftRequests(offset, limit);
		
		return response;
    }
    @GET
    @Produces({ "application/json", "application/xml" })  
    @OAuthSecurity(scope="default")
    @Path("/requests/occurrence_dispute/{occurrence_dispute_id}")
    public ServiceResponse getOccurrenceDisputeById(@PathParam("occurrence_dispute_id") String occurrenceDisputeId) {
		
		RequestsAdapterFactory factory = requestsAdapterFactory.getInstance();
		
		RequestsAdapter adapter = factory.getrequestsAdapter(ServiceConstants.ADAPTER_NAME);
				
		ServiceResponse response = adapter.getOccurrenceDisputeById(occurrenceDisputeId);
		
		return response;
    }
    @GET
    @Produces({ "application/json", "application/xml" })  
    @OAuthSecurity(scope="default")
    @Path("/requests/time_off/{time_off_request_id}")
    public ServiceResponse getTimeOffRequestById(@PathParam("time_off_request_id") String timeOffRequestId) {
		
		RequestsAdapterFactory factory = requestsAdapterFactory.getInstance();
		
		RequestsAdapter adapter = factory.getrequestsAdapter(ServiceConstants.ADAPTER_NAME);
				
		ServiceResponse response = adapter.getTimeOffRequestById(timeOffRequestId);
		
		return response;
    }
    @GET
    @Produces({ "application/json", "application/xml" })  
    @OAuthSecurity(scope="default")
    @Path("/requests/count")
    public ServiceResponse getRequestsCount(@QueryParam("startTime") Date startTime, @QueryParam("includeShift") Boolean includeShift, @QueryParam("includeTimeOff") Boolean includeTimeOff, @QueryParam("includeOccurrence") Boolean includeOccurrence, @QueryParam("includeAlerts") Boolean includeAlerts) {
		
		RequestsAdapterFactory factory = requestsAdapterFactory.getInstance();
		
		RequestsAdapter adapter = factory.getrequestsAdapter(ServiceConstants.ADAPTER_NAME);
				
		ServiceResponse response = adapter.getRequestsCount(startTime, includeShift, includeTimeOff, includeOccurrence, includeAlerts);
		
		return response;
    }
    @POST
    @Produces({ "application/json", "application/xml" })  
    @OAuthSecurity(scope="default")
    @Path("/requests/time_off")
    public ServiceResponse submitTimeOffRequest(@QueryParam("type") String type, @QueryParam("startDate") Date startDate, @QueryParam("endDate") Date endDate) {
		
		RequestsAdapterFactory factory = requestsAdapterFactory.getInstance();
		
		RequestsAdapter adapter = factory.getrequestsAdapter(ServiceConstants.ADAPTER_NAME);
				
		ServiceResponse response = adapter.submitTimeOffRequest(type, startDate, endDate);
		
		return response;
    }