diff --git a/iTrust/WebRoot/auth/hcp/menu.jsp b/iTrust/WebRoot/auth/hcp/menu.jsp index c1212e9691732fb072d4fa64d2cb04344e734f27..ae1e0cc95f4072425cdfe32c4414306e363a020c 100644 --- a/iTrust/WebRoot/auth/hcp/menu.jsp +++ b/iTrust/WebRoot/auth/hcp/menu.jsp @@ -66,10 +66,11 @@ <ul class="nav nav-sidebar"> <li><a href="/iTrust/auth/hcp/sendMessage.jsp">Compose a Message</a> <li><a href="/iTrust/auth/hcp/messageInbox.jsp">Message Inbox</a> - <li><a href="/iTrust/auth/hcp-patient/messageOutbox.jsp">Message Outbox</a> + <li><a href="/iTrust/auth/hcp/messageOutbox.jsp">Message Outbox</a> <li><a href="/iTrust/auth/hcp-uap/showEmailHistory.jsp">Email History</a> </ul> </div> + </div> <div class="panel panel-default"> diff --git a/iTrust/WebRoot/auth/hcp/messageInbox.jsp b/iTrust/WebRoot/auth/hcp/messageInbox.jsp index acd87d74bbce0788cd7336a80bf3bdf059a4d116..408048ddd7fd847de0f2f9fd5e5b8674a4d142fd 100644 --- a/iTrust/WebRoot/auth/hcp/messageInbox.jsp +++ b/iTrust/WebRoot/auth/hcp/messageInbox.jsp @@ -35,6 +35,8 @@ pageTitle = "iTrust - View My Message "; //Edit Filter backend boolean editing = false; String headerMessage = ""; + String filterMessage = ""; + String[] fields = new String[6]; if(request.getParameter("edit") != null && request.getParameter("edit").equals("true")) { editing = true; @@ -57,7 +59,8 @@ pageTitle = "iTrust - View My Message "; nf += request.getParameter("endDate"); //Validate Filter - + + filterMessage = nf; if(nf.startsWith("Error")) { error = true; headerMessage = nf; @@ -65,16 +68,24 @@ pageTitle = "iTrust - View My Message "; if(!error) { if(request.getParameter("test") != null) { + filterMessage = nf; response.sendRedirect("messageInbox.jsp?edit=true&testFilter="+nf); - } else if(request.getParameter("save") != null) { - f_action.editMessageFilter(nf); - response.sendRedirect("messageInbox.jsp?filter=true"); + } + + if(request.getParameter("save") != null) { + filterMessage = nf; + + f_action.editMessageFilter(nf); + response.sendRedirect("messageInbox.jsp?filter=true&testFilter="+nf); } } } if(request.getParameter("testFilter") != null) { String filter = request.getParameter("testFilter"); + + filterMessage = filter; + String[] f = filter.split(",", -1); for(i=0; i<6; i++) { try { @@ -85,6 +96,9 @@ pageTitle = "iTrust - View My Message "; } } else { String filter = dao.getPersonnel(loggedInMID.longValue()).getMessageFilter(); + + filterMessage = filter; + if(!filter.equals("")) { String[] f = filter.split(",", -1); for(i=0; i<6; i++) { @@ -124,9 +138,14 @@ pageTitle = "iTrust - View My Message "; String filter = ""; if(request.getParameter("testFilter") != null) { filter = request.getParameter("testFilter"); + + filterMessage = filter; } else { filter = dao.getPersonnel(loggedInMID.longValue()).getMessageFilter(); + + filterMessage = filter; } + if(!filter.equals("") && !filter.equals(",,,,,")) { List<MessageBean> filtered = action.filterMessages(messages, filter); messages = filtered; @@ -217,7 +236,7 @@ pageTitle = "iTrust - View My Message "; </tr> <tr> <td><a href="messageInbox.jsp?edit=true" >Edit Filter</a></td> - <td><a href="messageInbox.jsp?filter=true" >Apply Filter</a></td> + <td><a href="messageInbox.jsp?filter=true&testFilter=<%=filterMessage%>" >Apply Filter</a></td> </tr> </table> </form> diff --git a/iTrust/WebRoot/auth/hcp/messageOutbox.jsp b/iTrust/WebRoot/auth/hcp/messageOutbox.jsp index 5ed4b2df06362044971c415a3a484bb01f5f017e..52ef995f712bb03e7a40e5ed95fbe19766f8f686 100644 --- a/iTrust/WebRoot/auth/hcp/messageOutbox.jsp +++ b/iTrust/WebRoot/auth/hcp/messageOutbox.jsp @@ -3,8 +3,15 @@ <%@page import="java.util.List"%> <%@page import="edu.ncsu.csc.itrust.action.ViewMyMessagesAction"%> +<%@page import="edu.ncsu.csc.itrust.action.EditPersonnelAction"%> <%@page import="edu.ncsu.csc.itrust.beans.MessageBean"%> <%@page import="edu.ncsu.csc.itrust.dao.DAOFactory"%> +<%@page import="edu.ncsu.csc.itrust.dao.mysql.PersonnelDAO"%> +<%@page import="java.util.ArrayList"%> +<%@page import="java.text.DateFormat"%> +<%@page import="java.text.SimpleDateFormat"%> +<%@page import="java.util.Date"%> +<%@page import="java.util.Calendar"%> <%@include file="/global.jsp" %> @@ -17,12 +24,90 @@ pageTitle = "iTrust - View My Sent Messages"; <div align=center> <h2>My Sent Messages</h2> <a href="/iTrust/auth/hcp/sendMessage.jsp">Compose a Message</a><br /><br /> + <% - loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), 0, ""); - + loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), 0, ""); + ViewMyMessagesAction action = new ViewMyMessagesAction(prodDAO, loggedInMID.longValue()); + EditPersonnelAction f_action = new EditPersonnelAction(prodDAO, loggedInMID.longValue(), loggedInMID.toString()); + PersonnelDAO dao = new PersonnelDAO(prodDAO); List<MessageBean> messages = null; - if(request.getParameter("sortby") != null) { + + //Edit Filter backend + boolean editing = false; + String headerMessage = ""; + String filterMessage = ""; + String[] fields = new String[6]; + if(request.getParameter("edit") != null && request.getParameter("edit").equals("true")) { + editing = true; + + int i; + for(i=0; i<6; i++) { + fields[i] = ""; + } + + if(request.getParameter("cancel") != null) + response.sendRedirect("messageOutbox.jsp"); + else if(request.getParameter("test") != null || request.getParameter("save") != null) { + boolean error = false; + String nf = ""; + nf += request.getParameter("receiver").replace(",","")+","; + nf += request.getParameter("subject").replace(",","")+","; + nf += request.getParameter("hasWords").replace(",","")+","; + nf += request.getParameter("notWords").replace(",","")+","; + nf += request.getParameter("startDate").replace(",","")+","; + nf += request.getParameter("endDate"); + + //Validate Filter + + if(nf.startsWith("Error")) { + error = true; + headerMessage = nf; + } + + if(!error) { + if(request.getParameter("test") != null) { + filterMessage = nf; + response.sendRedirect("messageOutbox.jsp?edit=true&testFilter="+nf); + } else if(request.getParameter("save") != null) { + + filterMessage = nf; + + f_action.editMessageFilter(nf); + response.sendRedirect("messageOutbox.jsp?filter=true&testFilter="+nf); + } + } + } + + if(request.getParameter("testFilter") != null) { + String filter = request.getParameter("testFilter"); + filterMessage = filter; + String[] f = filter.split(",", -1); + for(i=0; i<6; i++) { + try { + fields[i] = f[i]; + } catch(ArrayIndexOutOfBoundsException e) { + //do nothing + } + } + } else { + String filter = dao.getPersonnel(loggedInMID.longValue()).getMessageFilter(); + filterMessage = filter; + if(!filter.equals("")) { + String[] f = filter.split(",", -1); + for(i=0; i<6; i++) { + try { + fields[i] = f[i]; + } catch(ArrayIndexOutOfBoundsException e) { + //do nothing + } + } + } + } + } + + //Sorts messages + if(request.getParameter("sort") != null) { if(request.getParameter("sortby").equals("name")) { if(request.getParameter("sorthow").equals("asce")) { messages = action.getAllMySentMessagesNameAscending(); @@ -40,9 +125,87 @@ pageTitle = "iTrust - View My Sent Messages"; else { messages = action.getAllMySentMessages(); } + + //Filters Messages + boolean is_filtered = false; + if((request.getParameter("filter") != null && request.getParameter("filter").equals("true")) || request.getParameter("testFilter") != null) { + String filter = ""; + if(request.getParameter("testFilter") != null) { + filter = request.getParameter("testFilter"); + + filterMessage = filter; + } else { + filter = dao.getPersonnel(loggedInMID.longValue()).getMessageFilter(); + filterMessage = filter; + } + if(!filter.equals("") && !filter.equals(",,,,,")) { + List<MessageBean> filtered = action.filterSentMessages(messages, filter); + messages = filtered; + is_filtered = true; + } + } + session.setAttribute("messages", messages); - if (messages.size() > 0) { %> - <form method="post" action="messageOutbox.jsp"> + %> + + <% + + if(editing) { + %> + <div class="filterEdit"> + <div align="center"> + <span style="font-size: 13pt; font-weight: bold;">Edit Message Filter</span> + <%= headerMessage.equals("") ? "" : "<br /><span class=\"iTrustMessage\">"+headerMessage+"</span><br /><br />" %> + <form method="post" action="messageOutbox.jsp?edit=true"> + <table> + <tr style="text-align: right;"> + <td> + <label for="receiver">Receiver: </label> + <input type="text" name="receiver" id="receiver" value="<%= StringEscapeUtils.escapeHtml("" + (fields[0] )) %>" /> + </td> + <td style="padding-left: 10px; padding-right: 10px;"> + <label for="hasWords">Has the words: </label> + <input type="text" name="hasWords" id="hasWords" value="<%= StringEscapeUtils.escapeHtml("" + (fields[2] )) %>" /> + </td> + <td> + <label for="startDate">Start Date: </label> + <input type="text" name="startDate" id="startDate" value="<%= StringEscapeUtils.escapeHtml("" + (fields[4] )) %>" /> + <input type="button" value="Select Date" onclick="displayDatePicker('startDate');" /> + </td> + </tr> + <tr style="text-align: right;"> + <td> + <label for="subject">Subject: </label> + <input type="text" name="subject" id="subject" value="<%= StringEscapeUtils.escapeHtml("" + (fields[1] )) %>" /> + </td> + <td style="padding-left: 10px; padding-right: 10px;"> + <label for="notWords">Does not have the words: </label> + <input type="text" name="notWords" id="notWords" value="<%= StringEscapeUtils.escapeHtml("" + (fields[3] )) %>" /> + </td> + <td> + <label for="endDate">End Date: </label> + <input type="text" name="endDate" id="endDate" value="<%= StringEscapeUtils.escapeHtml("" + (fields[5] )) %>" /> + <input type="button" value="Select Date" onclick="displayDatePicker('endDate');" /> + </td> + </tr> + <tr style="text-align: center;"> + <td colspan="3"> + <input type="submit" name="test" value="Test Filter" /> + <input type="submit" name="save" value="Save" /> + <input type="submit" name="cancel" value="Cancel" /> + </td> + </tr> + </table> + </form> + </div> + </div> + <br /> + <% + } + + %> + + <form method="post" action="messageOutbox.jsp<%= StringEscapeUtils.escapeHtml("" + (is_filtered?"?filter=true":"" )) %>"> <table> <tr> <td> @@ -60,27 +223,32 @@ pageTitle = "iTrust - View My Sent Messages"; </select> </td> <td> - <input type="submit" value="Sort" /> + <input type="submit" name="sort" value="Sort" /> </td> </tr> + <tr> + <td><a href="messageOutbox.jsp?edit=true" >Edit Filter</a></td> + <td><a href="messageOutbox.jsp?filter=true&testFilter=<%=filterMessage%>" >Apply Filter</a></td> + </tr> </table> </form> <br /> + <%if(messages.size() > 0) { %> <table class="fancyTable"> <tr> <th>To</th> <th>Subject</th> - <th>Sent</th> + <th>Received</th> <th></th> </tr> -<% int index = 0; %> -<% for(MessageBean message : messages) { %> +<% int index = 0; + for(MessageBean message : messages) { %> <tr <%=(index%2 == 1)?"class=\"alt\"":"" %>> - <td><%= StringEscapeUtils.escapeHtml("" + ( action.getName(message.getTo()) )) %></td> - <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSubject() )) %></td> - <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSentDate() )) %></td> - <td><a href="viewMessageOutbox.jsp?msg=<%= StringEscapeUtils.escapeHtml("" + ( index )) %>">Read</a></td> - </tr> + <td><%= StringEscapeUtils.escapeHtml("" + ( action.getName(message.getTo()) )) %></td> + <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSubject() )) %></td> + <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSentDate() )) %></td> + <td><a href="viewMessageOutbox.jsp?msg=<%= StringEscapeUtils.escapeHtml("" + ( index )) %>">Read</a></td> + </tr> <% index ++; %> <% } %> </table> diff --git a/iTrust/WebRoot/auth/patient/menu.jsp b/iTrust/WebRoot/auth/patient/menu.jsp index 27cd4df3571efdda470d8e6955f0536a85bdfd1d..e31d0313772566e1e85c1f60919994a5e3947257 100644 --- a/iTrust/WebRoot/auth/patient/menu.jsp +++ b/iTrust/WebRoot/auth/patient/menu.jsp @@ -79,7 +79,7 @@ <ul class="nav nav-sidebar"> <li><a href="/iTrust/auth/patient/sendMessage.jsp">Compose a Message</a> <li><a href="/iTrust/auth/patient/messageInbox.jsp">Message Inbox</a> - <li><a href="/iTrust/auth/hcp-patient/messageOutbox.jsp">Message Outbox</a> + <li><a href="/iTrust/auth/patient/messageOutbox.jsp">Message Outbox</a> </ul> </div> </div> diff --git a/iTrust/WebRoot/auth/patient/messageInbox.jsp b/iTrust/WebRoot/auth/patient/messageInbox.jsp index 3dab22f8e9fd2fe439a6e9bb33d46e2483d2f6c9..241d029cbb711eae25a3ddaee066295a5a9b7bc0 100644 --- a/iTrust/WebRoot/auth/patient/messageInbox.jsp +++ b/iTrust/WebRoot/auth/patient/messageInbox.jsp @@ -34,6 +34,7 @@ pageTitle = "iTrust - View My Message "; //Edit Filter backend boolean editing = false; String headerMessage = ""; + String filterMessage = ""; String[] fields = new String[6]; if(request.getParameter("edit") != null && request.getParameter("edit").equals("true")) { editing = true; @@ -55,6 +56,8 @@ pageTitle = "iTrust - View My Message "; nf += request.getParameter("startDate").replace(",","")+","; nf += request.getParameter("endDate"); + filterMessage = nf; + //Validate Filter if(nf.startsWith("Error")) { error = true; @@ -63,16 +66,19 @@ pageTitle = "iTrust - View My Message "; if(!error) { if(request.getParameter("test") != null) { + filterMessage = nf; response.sendRedirect("messageInbox.jsp?edit=true&testFilter="+nf); } else if(request.getParameter("save") != null) { + filterMessage = nf; f_action.editMessageFilter(nf); - response.sendRedirect("messageInbox.jsp?filter=true"); + response.sendRedirect("messageInbox.jsp?filter=true&testFilter="+nf); } } } if(request.getParameter("testFilter") != null) { String filter = request.getParameter("testFilter"); + filterMessage = filter; String[] f = filter.split(",", -1); for(i=0; i<6; i++) { try { @@ -83,6 +89,7 @@ pageTitle = "iTrust - View My Message "; } } else { String filter = dao.getPatient(loggedInMID.longValue()).getMessageFilter(); + filterMessage = filter; if(!filter.equals("")) { String[] f = filter.split(",", -1); for(i=0; i<6; i++) { @@ -126,8 +133,10 @@ pageTitle = "iTrust - View My Message "; String filter = ""; if(request.getParameter("testFilter") != null) { filter = request.getParameter("testFilter"); + filterMessage = filter; } else { filter = dao.getPatient(loggedInMID.longValue()).getMessageFilter(); + filterMessage = filter; } if(!filter.equals("") && !filter.equals(",,,,,")) { List<MessageBean> filtered = action.filterMessages(messages, filter); @@ -219,7 +228,7 @@ pageTitle = "iTrust - View My Message "; </tr> <tr> <td><a href="messageInbox.jsp?edit=true" >Edit Filter</a></td> - <td><a href="messageInbox.jsp?filter=true" >Apply Filter</a></td> + <td><a href="messageInbox.jsp?filter=true&testFilter=<%=filterMessage%>" >Apply Filter</a></td> </tr> </table> </form> @@ -260,4 +269,4 @@ pageTitle = "iTrust - View My Message "; <br /> </div> -<%@include file="/footer.jsp" %> \ No newline at end of file +<%@include file="/footer.jsp" %> diff --git a/iTrust/WebRoot/auth/patient/messageOutbox.jsp b/iTrust/WebRoot/auth/patient/messageOutbox.jsp index 190b1515f12d01f102018a15f0f6f9b8d8bb2b4e..035ee28b7fc796673a89e7496e7a254f8bd655f9 100644 --- a/iTrust/WebRoot/auth/patient/messageOutbox.jsp +++ b/iTrust/WebRoot/auth/patient/messageOutbox.jsp @@ -3,15 +3,21 @@ <%@page import="java.util.List"%> <%@page import="edu.ncsu.csc.itrust.action.ViewMyMessagesAction"%> +<%@page import="edu.ncsu.csc.itrust.action.EditPatientAction"%> <%@page import="edu.ncsu.csc.itrust.beans.MessageBean"%> +<%@page import="edu.ncsu.csc.itrust.beans.PatientBean"%> <%@page import="edu.ncsu.csc.itrust.dao.DAOFactory"%> +<%@page import="edu.ncsu.csc.itrust.dao.mysql.PatientDAO"%> +<%@page import="java.util.ArrayList"%> +<%@page import="java.text.DateFormat"%> +<%@page import="java.text.SimpleDateFormat"%> +<%@page import="java.util.Date"%> +<%@page import="java.util.Calendar"%> <%@include file="/global.jsp" %> <% pageTitle = "iTrust - View My Sent Messages"; - - %> <%@include file="/header.jsp" %> @@ -19,11 +25,98 @@ pageTitle = "iTrust - View My Sent Messages"; <div align=center> <h2>My Sent Messages</h2> <a href="/iTrust/auth/patient/sendMessage.jsp">Compose a Message</a><br /><br /> + + <% -loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), loggedInMID.longValue(), ""); ViewMyMessagesAction action = new ViewMyMessagesAction(prodDAO, loggedInMID.longValue()); + EditPatientAction f_action = new EditPatientAction(prodDAO, loggedInMID.longValue(), loggedInMID.toString()); + PatientDAO dao = new PatientDAO(prodDAO); List<MessageBean> messages = null; - if(request.getParameter("sortby") != null) { + + String filterMessage = ""; + + + //Edit Filter backend + boolean editing = false; + String headerMessage = ""; + String[] fields = new String[6]; + if(request.getParameter("edit") != null && request.getParameter("edit").equals("true")) { + editing = true; + + int i; + for(i=0; i<6; i++) { + fields[i] = ""; + } + + if(request.getParameter("cancel") != null) + response.sendRedirect("messageOutbox.jsp"); + else if(request.getParameter("test") != null || request.getParameter("save") != null) { + boolean error = false; + String nf = ""; + nf += request.getParameter("receiver").replace(",","")+","; + nf += request.getParameter("subject").replace(",","")+","; + nf += request.getParameter("hasWords").replace(",","")+","; + nf += request.getParameter("notWords").replace(",","")+","; + nf += request.getParameter("startDate").replace(",","")+","; + nf += request.getParameter("endDate"); + + //Validate Filter + if(nf.startsWith("Error")) { + error = true; + headerMessage = nf; + } + + if(!error) { + if(request.getParameter("test") != null) { + + filterMessage = nf; + + response.sendRedirect("messageOutbox.jsp?edit=true&testFilter="+nf); + + + } else if(request.getParameter("save") != null) { + + filterMessage = nf; + + f_action.editMessageFilter(nf); + response.sendRedirect("messageOutbox.jsp?filter=true&testFilter="+nf); + } + } + } + + if(request.getParameter("testFilter") != null) { + String filter = request.getParameter("testFilter"); + +filterMessage = filter; + + String[] f = filter.split(",", -1); + for(i=0; i<6; i++) { + try { + fields[i] = f[i]; + } catch(ArrayIndexOutOfBoundsException e) { + //do nothing + } + } + } else { + String filter = dao.getPatient(loggedInMID.longValue()).getMessageFilter(); + +filterMessage = filter; + + if(!filter.equals("")) { + String[] f = filter.split(",", -1); + for(i=0; i<6; i++) { + try { + fields[i] = f[i]; + } catch(ArrayIndexOutOfBoundsException e) { + //do nothing + } + } + } + } + } + + //Sorts messages + if(request.getParameter("sort") != null) { if(request.getParameter("sortby").equals("name")) { if(request.getParameter("sorthow").equals("asce")) { messages = action.getAllMySentMessagesNameAscending(); @@ -39,11 +132,99 @@ loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), log } } else { + if(request.getParameter("edit") == null && request.getParameter("filter") == null) { + //loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID, 0, ""); + loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), loggedInMID.longValue(), ""); + } + messages = action.getAllMySentMessages(); } - session.setAttribute("messages", messages); - if (messages.size() > 0) { %> - <form method="post" action="messageOutbox.jsp"> + + //Filters Messages + boolean is_filtered = false; + if((request.getParameter("filter") != null && request.getParameter("filter").equals("true")) || request.getParameter("testFilter") != null) { + String filter = ""; + if(request.getParameter("testFilter") != null) { + filter = request.getParameter("testFilter"); + +filterMessage = filter; + + } else { + filter = dao.getPatient(loggedInMID.longValue()).getMessageFilter(); + +filterMessage = filter; + } + if(!filter.equals("") && !filter.equals(",,,,,")) { + List<MessageBean> filtered = action.filterSentMessages(messages, filter); + messages = filtered; + is_filtered = true; + } + } + + session.setAttribute("messages", messages); + %> + + <% + + if(editing) { + %> + <div class="filterEdit"> + <div align="center"> + <span style="font-size: 13pt; font-weight: bold;">Edit Message Filter</span> + <%= headerMessage.equals("") ? "" : "<br /><span class=\"iTrustMessage\">"+headerMessage+"</span><br /><br />" %> + <form method="post" action="messageOutbox.jsp?edit=true"> + <table> + <tr style="text-align: right;"> + <td> + <label for="receiver">Receiver: </label> + <input type="text" name="receiver" id="receiver" value="<%= StringEscapeUtils.escapeHtml("" + (fields[0] )) %>" /> + </td> + <td style="padding-left: 10px; padding-right: 10px;"> + <label for="hasWords">Has the words: </label> + <input type="text" name="hasWords" id="hasWords" value="<%= StringEscapeUtils.escapeHtml("" + (fields[2] )) %>" /> + </td> + <td> + <label for="startDate">Start Date: </label> + <input type="text" name="startDate" id="startDate" value="<%= StringEscapeUtils.escapeHtml("" + (fields[4] )) %>" /> + <input type="button" value="Select Date" onclick="displayDatePicker('startDate');" /> + </td> + </tr> + <tr style="text-align: right;"> + <td> + <label for="subject">Subject: </label> + <input type="text" name="subject" id="subject" value="<%= StringEscapeUtils.escapeHtml("" + (fields[1] )) %>" /> + </td> + <td style="padding-left: 10px; padding-right: 10px;"> + <label for="notWords">Does not have the words: </label> + <input type="text" name="notWords" id="notWords" value="<%= StringEscapeUtils.escapeHtml("" + (fields[3] )) %>" /> + </td> + <td> + <label for="endDate">End Date: </label> + <input type="text" name="endDate" id="endDate" value="<%= StringEscapeUtils.escapeHtml("" + (fields[5] )) %>" /> + <input type="button" value="Select Date" onclick="displayDatePicker('endDate');" /> + </td> + </tr> + <tr style="text-align: center;"> + <td colspan="3"> + <input type="submit" name="test" value="Test Filter" /> + <input type="submit" name="save" value="Save" /> + <input type="submit" name="cancel" value="Cancel" /> + </td> + </tr> + </table> + </form> + </div> + </div> + <br /> + <% + } + + %> + + + + + <form method="post" action="messageOutbox.jsp<%= StringEscapeUtils.escapeHtml("" + (is_filtered?"?filter=true":"" )) %>"> <table> <tr> <td> @@ -61,27 +242,33 @@ loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), log </select> </td> <td> - <input type="submit" value="Sort" /> + <input type="submit" name="sort" value="Sort" /> </td> </tr> + <tr> + <td><a href="messageOutbox.jsp?edit=true" >Edit Filter</a></td> + <td><a href="messageOutbox.jsp?filter=true&testFilter=<%=filterMessage%>" >Apply Filter</a></td> + </tr> </table> </form> <br /> + + <%if(messages.size() > 0) { %> <table class="fancyTable"> <tr> <th>To</th> <th>Subject</th> <th>Received</th> - <th></th> + <th> </th> </tr> -<% int index = 0; %> -<% for(MessageBean message : messages) { %> +<% int index = 0; + for(MessageBean message : messages) { %> <tr <%=(index%2 == 1)?"class=\"alt\"":"" %>> - <td><%= StringEscapeUtils.escapeHtml("" + ( action.getName(message.getTo()) )) %></td> - <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSubject() )) %></td> - <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSentDate() )) %></td> - <td><a href="viewMessageOutbox.jsp?msg=<%= StringEscapeUtils.escapeHtml("" + ( index )) %>">Read</a></td> - </tr> + <td><%= StringEscapeUtils.escapeHtml("" + ( action.getName(message.getTo()) )) %></td> + <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSubject() )) %></td> + <td><%= StringEscapeUtils.escapeHtml("" + ( message.getSentDate() )) %></td> + <td><a href="viewMessageOutbox.jsp?msg=<%= StringEscapeUtils.escapeHtml("" + ( index )) %>">Read</a></td> + </tr> <% index ++; %> <% } %> </table> @@ -93,4 +280,4 @@ loggingAction.logEvent(TransactionType.OUTBOX_VIEW, loggedInMID.longValue(), log <br /> </div> -<%@include file="/footer.jsp" %> +<%@include file="/footer.jsp" %> \ No newline at end of file diff --git a/iTrust/src/edu/ncsu/csc/itrust/action/ViewMyMessagesAction.java b/iTrust/src/edu/ncsu/csc/itrust/action/ViewMyMessagesAction.java index 9d5305774af378140785b598d32631d3b0909ee1..57c5f9d0aef86503ac5cb732bc0550e0c360a469 100644 --- a/iTrust/src/edu/ncsu/csc/itrust/action/ViewMyMessagesAction.java +++ b/iTrust/src/edu/ncsu/csc/itrust/action/ViewMyMessagesAction.java @@ -135,7 +135,7 @@ public class ViewMyMessagesAction { /** - * Gets a list of messages for a user based on their filter criteria. + * Gets a list of received messages for a user based on their filter criteria. * * @param messages List of all of a user's MessageBeans * @param filter String containing a user's filter criteria. @@ -222,6 +222,94 @@ public class ViewMyMessagesAction { return filtered; } + /** + * Gets a list of Sent messages for a user based on their filter criteria. + * + * @param messages List of all of a user's MessageBeans + * @param filter String containing a user's filter criteria. + * @return a List of MessageBeans that meet the criteria of the filter. + * @throws ITrustException + * @throws ParseException + */ + public List<MessageBean> filterSentMessages(List<MessageBean> messages, String filter) throws ITrustException, ParseException { + List<MessageBean> filtered = new ArrayList<MessageBean>(); + String[] f = filter.split(",", -1); + for(MessageBean m : messages) { + /** + * Check the sender filter field. + * Exclude if this MessageBean does not match the + * requested sender, if one is specified. + */ + if(!f[0].equals("")) { + if(!this.getName(m.getTo()).equalsIgnoreCase(f[0])) + continue; + } + /** + * Check the subject filter field. + * Exclude if this MessageBean does not match the + * requested subject, if one is specified. + */ + if(!f[1].equals("")) { + if(!m.getSubject().equalsIgnoreCase(f[1])) + continue; + } + /** + * Check the body of the message for certain words. + * Exclude if this MessageBean if it does not contain + * those words in the message body. + */ + if(!f[2].equals("")) { + if(!m.getSubject().toLowerCase().contains(f[2].toLowerCase()) && !m.getBody().toLowerCase().contains(f[2].toLowerCase())) + continue; + } + /** + * Check the body of the message for certain words. + * Exclude if this MessageBean if it does contain + * those words in the message body. + */ + if(!f[3].equals("")) { + if(m.getSubject().toLowerCase().contains(f[3].toLowerCase()) || m.getBody().toLowerCase().contains(f[3].toLowerCase())) + continue; + } + /** + * Check the start date filter field. + * Exclude if this MessageBean was not sent after + * this date. + */ + if(!f[4].equals("")) { + DateFormat format = new SimpleDateFormat("MM/dd/yyyy"); + Date s = format.parse(f[4]); + if(s.after(m.getSentDate())) + continue; + + } + /** + * Check the end date filter field. + * Exclude if this MessageBean was not sent before + * this date. + */ + if(!f[5].equals("")) { + DateFormat format = new SimpleDateFormat("MM/dd/yyyy"); + Date s = format.parse(f[5]); + Calendar c = Calendar.getInstance(); + c.setTime(s); + c.add(Calendar.DAY_OF_MONTH, 1); + s = c.getTime(); + if(s.before(m.getSentDate())) + continue; + + } + /** + * If the message has not been eliminated by any + * of the filter fields, add it to the new list + * of messages. + */ + filtered.add(m); + } + + return filtered; + } + /** * Gets a patient's name from their MID *