package crmdna.api.servlet; import crmdna.common.DateUtils; import crmdna.common.DateUtils.DateRange; import crmdna.common.api.APIResponse; import crmdna.common.api.APIResponse.Status; import crmdna.common.api.APIUtils; import crmdna.common.api.RequestInfo; import crmdna.interaction.Interaction; import crmdna.interaction.Interaction.InteractionType; import crmdna.interaction.InteractionProp; import crmdna.interaction.InteractionQueryCondition; import crmdna.interaction.InteractionQueryResult; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; public class InteractionServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String action = request.getParameter("action"); if (action == null) { ServletUtils.setJson(response, new APIResponse().status(Status.ERROR_RESOURCE_NOT_FOUND)); } else { String client = request.getParameter("client"); if (client == null) client = "isha"; String login = ServletUtils.getLogin(request); try { if (action.equals("createInteraction")) { String strInteractionType = ServletUtils.getStrParam(request, "interactionType"); InteractionType interactionType = (strInteractionType != null) ? InteractionType.valueOf(strInteractionType) : null; InteractionProp prop = Interaction.createInteraction(client, ServletUtils.getLongParam(request, "memberId"), ServletUtils.getStrParam(request, "content"), interactionType, new Date(), null, true, login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(prop)); } else if (action.equals("createSubInteraction")) { Interaction.createSubInteraction(client, ServletUtils.getLongParam(request, "interactionId"), ServletUtils.getStrParam(request, "content"), new Date(), login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).message("Added sub interaction")); } else if (action.equals("deleteInteraction")) { long interactionId = ServletUtils.getLongParam(request, "interactionId"); Interaction.deleteInteraction(client, interactionId, login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object("interaction Id [" + interactionId + "] deleted")); } else if (action.equals("deleteSubInteraction")) { Long interactionId = ServletUtils.getLongParam(request, "interactionId"); Long subInteractionId = ServletUtils.getLongParam(request, "subInteractionId"); Interaction.deleteSubInteraction(client, interactionId, subInteractionId, login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS) .message("Sub interaction [(" + interactionId + ") " + subInteractionId + "] deleted")); } else if (action.equals("updateInteraction")) { String strNewInteractionType = ServletUtils.getStrParam(request, "newInteractionType"); InteractionType newInteractionType = (strNewInteractionType != null) ? InteractionType.valueOf(strNewInteractionType) : null; InteractionProp prop = Interaction.updateInteraction(client, ServletUtils.getLongParam(request, "interactionId"), ServletUtils.getLongParam(request, "newMemberId"), newInteractionType, ServletUtils.getStrParam(request, "newUserEmail"), login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(prop)); } else if (action.equals("updateSubInteraction")) { long subInteractionId = ServletUtils.getLongParam(request, "subInteractionId"); Interaction.updateSubInteraction(client, ServletUtils.getLongParam(request, "interactionId"), subInteractionId, ServletUtils.getStrParam(request, "content"), login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS) .message("Sub interaction [" + subInteractionId + "] updated")); } else if (action.equals("query")) { String strInteractionType = ServletUtils.getStrParam(request, "interactionType"); InteractionType interactionType = (strInteractionType != null) ? InteractionType.valueOf(strInteractionType) : null; String strDateRange = ServletUtils.getStrParam(request, "dateRange"); DateRange dateRange = (strDateRange != null) ? DateRange.valueOf(strDateRange) : null; InteractionQueryCondition qc = new InteractionQueryCondition(); Long memberId = ServletUtils.getLongParam(request, "memberId"); if (memberId != null) { qc.memberIds.add(memberId); } Long userId = ServletUtils.getLongParam(request, "userId"); if (userId != null) { qc.userIds.add(userId); } if (interactionType != null) { qc.interactionTypes.add(interactionType.toString()); } qc.end = new Date(); if (dateRange != null) { qc.start = new Date(qc.end.getTime() - DateUtils.getMilliSecondsFromDateRange(dateRange)); } qc.startIndex = ServletUtils.getIntParam(request, "startIndex"); qc.numResults = ServletUtils.getIntParam(request, "numResults"); InteractionQueryResult result = Interaction.query(client, qc, login); ServletUtils.setJson(response, new APIResponse().status(Status.SUCCESS).object(result)); } else { ServletUtils.setJson(response, new APIResponse().status(Status.ERROR_RESOURCE_INCORRECT)); } } catch (Exception ex) { ServletUtils.setJson(response, APIUtils.toAPIResponse(ex, true, new RequestInfo().client(client).req(request).login(login))); } } } }