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.*;
import gov.va.vamf.scheduling.varutility.service.CustomMessageService;
import gov.va.vamf.scheduling.varutility.service.CustomTextFormService;
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.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import java.util.Iterator;
@Component
@Path("/custom-text-form")
@Api(value = "/custom-text-form", description = "Institutions Service API")
@Scope("request")
public class CustomTextFormResource implements InitializingBean {
@Value("${default.messages.id}")
String defaultMessagesId;
@Value("${default.messages.text}")
String defaultMessagesText;
private String[] defaultMessageIds;
private String[] defaultMessageTexts;
@Autowired
private CustomTextFormService customTextFormService;
@Autowired
private CustomMessageService customMessageService;
@Override
public void afterPropertiesSet() throws Exception {
defaultMessageIds = defaultMessagesId.split("\\|");
defaultMessageTexts = defaultMessagesText.split("\\|");
}
@GET
@JwtRbacRestricted("Staff")
@Path("/default-custom-friendly-text/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Retrieves the custom friendly text for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomFriendlyText.class)
public CustomFriendlyText fetchDCustomFriendlyText(@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomFriendlyText foundCustomFriendlyText = customTextFormService.fetchCustomFriendlyTextBySiteCode(siteCode);
if (foundCustomFriendlyText == null) {
foundCustomFriendlyText = new CustomFriendlyText();
}
return foundCustomFriendlyText;
}
@GET
@JwtRbacRestricted("Staff")
@Path("/default-message/message-id/{message-id}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Retrieves the default message for a provided message type", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomMessage.class)
public CustomMessage fetchDefaultMessage(@ApiParam(value = "site code", required = true) @PathParam("message-id") String messageId) {
CustomMessage defaultMessage = new CustomMessage();
if (messageId != null) {
for (int i = 0; i < defaultMessageIds.length; i++) {
if (messageId.equals(defaultMessageIds[i])) {
defaultMessage.setMessageId(defaultMessageIds[i]);
defaultMessage.setMessageText(defaultMessageTexts[i]);
break;
}
}
}
return defaultMessage;
}
@PUT
@JwtRbacRestricted("Staff")
@Path("/custom-friendly-text/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Saves a new custom friendly text for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomFriendlyText.class)
public CustomFriendlyText saveCustomFriendlyText(@ApiParam(value = "custom friendly text to save", required = true) CustomFriendlyText customFriendlyText,
@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomFriendlyText foundCustomFriendlyText = customTextFormService.fetchCustomFriendlyTextBySiteCode(siteCode);
CustomFriendlyText newCustomFriendlyText = new CustomFriendlyText();
if (foundCustomFriendlyText != null && foundCustomFriendlyText.getId() != null) {
newCustomFriendlyText.setId(foundCustomFriendlyText.getId());
}
newCustomFriendlyText.setSiteCode(siteCode);
newCustomFriendlyText.setFriendlyText(customFriendlyText.getFriendlyText());
CustomFriendlyText savedCustomFriendlyText = customTextFormService.saveCustomFriendlyText(newCustomFriendlyText);
if (savedCustomFriendlyText == null) {
savedCustomFriendlyText = new CustomFriendlyText();
}
return savedCustomFriendlyText;
}
@DELETE
@JwtRbacRestricted("Staff")
@Path("/custom-messages/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Deletes the custom message for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomMessage.class, responseContainer = "List")
public CustomMessages deleteCustomMessages(@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomMessages customMessages = customMessageService.deleteCustomMessagesBySiteCode(siteCode);
if (customMessages == null) {
customMessages = new CustomMessages();
}
return customMessages;
}
@DELETE
@JwtRbacRestricted("Staff")
@Path("/custom-friendly-text/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Deletes the custom friendly text for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomFriendlyText.class, responseContainer = "List")
public CustomFriendlyTexts deleteCustomFriendlyText(@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomFriendlyTexts deletedCustomFriendlyTexts = customTextFormService.deleteCustomFriendlyTextBySiteCode(siteCode);
if (deletedCustomFriendlyTexts == null) {
deletedCustomFriendlyTexts = new CustomFriendlyTexts();
}
return deletedCustomFriendlyTexts;
}
@GET
@JwtRbacRestricted("Staff")
@Path("/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Retrieves the custom text form for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomTextForm.class)
public CustomTextForm fetchCustomTextForm(@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomFriendlyText customFriendlyText = customTextFormService.fetchCustomFriendlyTextBySiteCode(siteCode);
if (customFriendlyText == null) {
customFriendlyText = new CustomFriendlyText();
}
CustomMessages customMessages = customMessageService.fetchCustomMessagesBySiteCode(siteCode);
if (customMessages == null) {
customMessages = new CustomMessages();
}
for (int i = 0; i < defaultMessageIds.length; i++) {
if (!containsMessageId(defaultMessageIds[i], customMessages)) {
CustomMessage defaultMessage = new CustomMessage();
defaultMessage.setSiteCode(siteCode);
defaultMessage.setMessageId(defaultMessageIds[i]);
defaultMessage.setMessageText(defaultMessageTexts[i]);
CustomMessage savedDefaultMessage = customMessageService.saveCustomMessage(defaultMessage);
if (savedDefaultMessage != null) {
customMessages.add(savedDefaultMessage);
}
}
}
CustomTextForm customTextForm = new CustomTextForm();
customTextForm.setSiteCode(siteCode);
customTextForm.setUserFriendlyText(customFriendlyText.getFriendlyText());
customTextForm.setCustomMessages(customMessages);
return customTextForm;
}
@PUT
@JwtRbacRestricted("Staff")
@Path("/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Saves a new custom text form for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomTextForm.class)
public CustomTextForm saveCustomTextForm(@ApiParam(value = "custom text form to save", required = true) CustomTextForm customTextForm,
@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
if (customTextForm == null) {
customTextForm = new CustomTextForm();
}
CustomFriendlyText newCustomFriendlyText = new CustomFriendlyText();
CustomFriendlyText customFriendlyText = null;
if (customTextForm.getUserFriendlyText() == null) {
CustomFriendlyTexts deletedCustomFriendlyTexts = customTextFormService.deleteCustomFriendlyTextBySiteCode(siteCode);
if (deletedCustomFriendlyTexts != null && deletedCustomFriendlyTexts.size() > 0) {
customFriendlyText = deletedCustomFriendlyTexts.get(0);
}
}
else {
CustomFriendlyText foundCustomFriendlyText = customTextFormService.fetchCustomFriendlyTextBySiteCode(siteCode);
if (foundCustomFriendlyText != null && foundCustomFriendlyText.getId() != null) {
newCustomFriendlyText.setId(foundCustomFriendlyText.getId());
}
newCustomFriendlyText.setSiteCode(siteCode);
newCustomFriendlyText.setFriendlyText(customTextForm.getUserFriendlyText());
customFriendlyText = customTextFormService.saveCustomFriendlyText(newCustomFriendlyText);
}
if (customFriendlyText == null) {
customFriendlyText = new CustomFriendlyText();
}
CustomMessages customMessages = customTextForm.getCustomMessages();
if(customMessages == null) {
customMessages = new CustomMessages();
}
CustomMessages savedCustomMessages = new CustomMessages();
CustomMessage foundCustomMessage = null;
CustomMessage newCustomMessage = null;
CustomMessage savedCustomMessage = null;
Iterator<CustomMessage> customMessagesIterator = customMessages.iterator();
while (customMessagesIterator.hasNext()) {
newCustomMessage = customMessagesIterator.next();
foundCustomMessage = customMessageService.fetchCustomMessageBySiteCodeAndMessageId(siteCode, newCustomMessage.getMessageId());
if (foundCustomMessage != null && foundCustomMessage.getId() != null) {
newCustomMessage.setId(foundCustomMessage.getId());
}
newCustomMessage.setSiteCode(siteCode);
savedCustomMessage = customMessageService.saveCustomMessage(newCustomMessage);
if (savedCustomMessage != null) {
savedCustomMessages.add(savedCustomMessage);
}
}
CustomTextForm savedCustomTextform = new CustomTextForm();
savedCustomTextform.setSiteCode(siteCode);
savedCustomTextform.setUserFriendlyText(customFriendlyText.getFriendlyText());
savedCustomTextform.setCustomMessages(savedCustomMessages);
return savedCustomTextform;
}
@DELETE
@JwtRbacRestricted("Staff")
@Path("/site/{site-code}")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@ApiOperation(value = "Deletes the custom text form for a provided site code", authorizations = {
@Authorization(
value = VarUtilityConstants.RBAC_JWT_SECURITY_NAME,
scopes = {@AuthorizationScope(scope = "Staff", description = "Staff role")}
)
}, response = CustomTextForm.class)
public CustomTextForm deleteCustomTextForm(@ApiParam(value = "site code", required = true) @PathParam("site-code") String siteCode) {
CustomFriendlyTexts deletedCustomFriendlyTexts = customTextFormService.deleteCustomFriendlyTextBySiteCode(siteCode);
CustomFriendlyText deletedCustomFriendlyText = null;
if (deletedCustomFriendlyTexts != null && deletedCustomFriendlyTexts.size() > 0) {
deletedCustomFriendlyText = deletedCustomFriendlyTexts.get(0);
}
if (deletedCustomFriendlyText == null) {
deletedCustomFriendlyText = new CustomFriendlyText();
}
CustomMessages deletetedCustomMessages = customMessageService.deleteCustomMessagesBySiteCode(siteCode);
if (deletetedCustomMessages == null) {
deletetedCustomMessages = new CustomMessages();
}
CustomTextForm deletedCustomTextform = new CustomTextForm();
deletedCustomTextform.setSiteCode(siteCode);
deletedCustomTextform.setUserFriendlyText(deletedCustomFriendlyText.getFriendlyText());
deletedCustomTextform.setCustomMessages(deletetedCustomMessages);
return deletedCustomTextform;
}
private boolean containsMessageId(String messageId, CustomMessages customMessages) {
Iterator<CustomMessage> customMessagesIterator = customMessages.iterator();
while (customMessagesIterator.hasNext()) {
if (messageId.equals(customMessagesIterator.next().getMessageId())) {
return true;
}
}
return false;
}
}