Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
package gov.va.vamf.scheduling.varutility.resource;
import gov.va.vamf.scheduling.varutility.domain.ClinicalServices;
import gov.va.vamf.scheduling.varutility.domain.RequestEligibilityCriteria;
import gov.va.vamf.scheduling.varutility.linkbuilder.LinkBuilder;
import gov.va.vamf.scheduling.varutility.service.ClinicalServicesService;
import gov.va.vamf.scheduling.varutility.service.RequestEligibilityCriteriaService;
import gov.va.vamf.scheduling.varutility.utils.VarUtilityConstants;
import gov.va.vamf.security.v1.filters.JwtRbacRestricted;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.Authorization;
import io.swagger.annotations.AuthorizationScope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import javax.ws.rs.Consumes;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import java.util.Date;
import java.util.List;
@Path("/request-eligibility-criteria/site/{site-code}")
@Component
@Api(value = "/request-eligibility-criteria/site/{site-code}", description = "Request Eligibility Service API")
@Scope("request")
public class RequestEligibilityCriteriaResource extends AbstractUserResource {
@Autowired
private ClinicalServicesService clinicalServicesService;
@Autowired
private RequestEligibilityCriteriaService requestEligibilityCriteriaService;
@GET
@JwtRbacRestricted("Staff")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Retrieves the request eligibility criteria for a provided facility", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = RequestEligibilityCriteria.class)
public RequestEligibilityCriteria fetchRequestEligibilityCriteria(
@Context UriInfo uriInfo,
@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
List<ClinicalServices> requestServices = clinicalServicesService.fetchForRequest();
List<ClinicalServices> customRequestServices = clinicalServicesService.fetchForCustomRequest();
RequestEligibilityCriteria requestEligibilityCriteria = requestEligibilityCriteriaService.fetchRequestEligibiltyCriteria(siteCode,
requestServices, customRequestServices, uriInfo);
return requestEligibilityCriteria;
}
@POST
@JwtRbacRestricted("Staff")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@ApiOperation(value = "Saves a new request eligibility criteria for a provided facility", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = RequestEligibilityCriteria.class)
public RequestEligibilityCriteria savedRequestEligibilityCriteria( @ApiParam(value = "request eligibility criteria to save", required = true) RequestEligibilityCriteria requestEligibilityCriteria,
@Context UriInfo uriInfo, @Context ContainerRequestContext context,
@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
List<ClinicalServices> requestServices = clinicalServicesService.fetchForRequest();
List<ClinicalServices> customRequestServices = clinicalServicesService.fetchForCustomRequest();
requestEligibilityCriteria.validate(siteCode, requestServices, customRequestServices);
requestEligibilityCriteria.setCreatedDate(new Date());
requestEligibilityCriteria.setCreatedBy(getUserName(context));
requestEligibilityCriteria.cleanupDataForSave();
RequestEligibilityCriteria savedRequestEligibilityCriteria = requestEligibilityCriteriaService.saveRequestEligibilityCriteria(requestEligibilityCriteria);
LinkBuilder.fillLink(savedRequestEligibilityCriteria, uriInfo.getRequestUri());
return savedRequestEligibilityCriteria;
}
@PUT
@JwtRbacRestricted("Staff")
@Path( "/id/{id}" )
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@ApiOperation(value = "Updates the request eligibility criteria for a provided facility", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = RequestEligibilityCriteria.class)
public RequestEligibilityCriteria updateRequestEligibilityCriteria(@ApiParam(value = "request eligibility criteria to update", required = true) RequestEligibilityCriteria requestEligibilityCriteria,
@Context UriInfo uriInfo, @Context ContainerRequestContext context,
@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode,
@ApiParam(value = "request eligibility criteria id", required = true) @PathParam("id") String id) {
List<ClinicalServices> requestServices = clinicalServicesService.fetchForRequest();
List<ClinicalServices> customRequestServices = clinicalServicesService.fetchForCustomRequest();
requestEligibilityCriteria.validate(siteCode, requestServices, customRequestServices);
requestEligibilityCriteria.setLastModifiedDate(new Date());
requestEligibilityCriteria.setModifiedBy(getUserName(context));
requestEligibilityCriteria.cleanupDataForSave();
RequestEligibilityCriteria updatedRequestEligibilityCriteria = requestEligibilityCriteriaService.updateRequestEligibilityCriteria(requestEligibilityCriteria);
LinkBuilder.fillLink(updatedRequestEligibilityCriteria, uriInfo.getRequestUri());
return updatedRequestEligibilityCriteria;
}
}