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;
}
}