diff --git a/api/src/main/java/org/openmrs/module/muzimaconsultation/handler/ConsultationQueueDataHandler.java b/api/src/main/java/org/openmrs/module/muzimaconsultation/handler/ConsultationQueueDataHandler.java index c21ddb1..f4d0e55 100644 --- a/api/src/main/java/org/openmrs/module/muzimaconsultation/handler/ConsultationQueueDataHandler.java +++ b/api/src/main/java/org/openmrs/module/muzimaconsultation/handler/ConsultationQueueDataHandler.java @@ -23,6 +23,8 @@ import org.apache.commons.logging.LogFactory; import org.openmrs.Concept; import org.openmrs.Encounter; +import org.openmrs.EncounterProvider; +import org.openmrs.EncounterRole; import org.openmrs.EncounterType; import org.openmrs.Form; import org.openmrs.Location; @@ -32,15 +34,22 @@ import org.openmrs.PatientIdentifierType; import org.openmrs.Person; import org.openmrs.PersonName; +import org.openmrs.Provider; import org.openmrs.Role; import org.openmrs.User; +import org.openmrs.Visit; +import org.openmrs.VisitType; import org.openmrs.annotation.Handler; import org.openmrs.api.LocationService; import org.openmrs.api.PatientService; +import org.openmrs.api.VisitService; import org.openmrs.api.context.Context; import org.openmrs.module.muzima.api.service.DataService; +import org.openmrs.module.muzima.api.service.NotificationTokenService; import org.openmrs.module.muzima.exception.QueueProcessorException; +import org.openmrs.module.muzima.model.MuzimaSetting; import org.openmrs.module.muzima.model.NotificationData; +import org.openmrs.module.muzima.model.NotificationToken; import org.openmrs.module.muzima.model.QueueData; import org.openmrs.module.muzima.model.handler.QueueDataHandler; import org.openmrs.module.muzima.web.resource.utils.JsonUtils; @@ -49,21 +58,37 @@ import org.openmrs.module.muzima.api.service.RegistrationDataService; import org.openmrs.module.muzima.model.RegistrationData; import org.openmrs.obs.ComplexData; +import org.openmrs.util.OpenmrsUtil; import org.openmrs.web.WebConstants; import org.springframework.stereotype.Component; import javax.xml.bind.DatatypeConverter; import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.UUID; +import static org.openmrs.module.muzima.utils.Constants.MuzimaSettings.DEFAULT_MUZIMA_VISIT_TYPE_SETTING_PROPERTY; +import static org.openmrs.module.muzima.utils.Constants.MuzimaSettings.MUZIMA_VISIT_GENERATION_SETTING_PROPERTY; +import static org.openmrs.module.muzima.utils.Constants.MuzimaSettings.NOTIFICATION_FEATURE_STATUS_SETTING_PROPERTY; +import static org.openmrs.module.muzima.utils.MuzimaSettingUtils.getMuzimaSetting; + /** */ @Component @@ -74,40 +99,59 @@ public class ConsultationQueueDataHandler implements QueueDataHandler { private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + public final static String AUTH_KEY_FCM = "AAAAyR4Iero:APA91bFF5AB_mK-8xXVQQJXyT2pQRPhfkX99d7RAhbr0mLO9qbxNXEs8uOPHQ1r5zxUM4tzCGdEmzusBPYQchA4kJ_ewe-ZoGocHlTTDP4ylb7S7yk6l9ylcv3KYcAo0MKVZ91UNw_GSFTxwCTgR15PoffbDjgv7YA"; + + public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send"; + + private static final String DEFAULT_ENCOUNTER_ROLE = "a0b03050-c99b-11e0-9572-0800200c9a66"; + private final Log log = LogFactory.getLog(ConsultationQueueDataHandler.class); private QueueProcessorException queueProcessorException; private Encounter encounter; + private List obsToBeVoided; + @Override public void process(final QueueData queueData) throws QueueProcessorException { try { if (validate(queueData)) { Context.getEncounterService().saveEncounter(encounter); - - try { - Role role = null; - Person recipient = null; - Object consultationObject = JsonUtils.readAsObject(queueData.getPayload(), "$['consultation']"); - String recipientString = JsonUtils.readAsString(String.valueOf(consultationObject), "$['consultation.recipient']"); - String sourceUuid = JsonUtils.readAsString(String.valueOf(consultationObject), "$['consultation.sourceUuid']"); - String[] recipientParts = StringUtils.split(recipientString, ":"); - if (ArrayUtils.getLength(recipientParts) == 2) { - if (StringUtils.equalsIgnoreCase(recipientParts[1], "u")) { - User user = Context.getUserService().getUserByUsername(recipientParts[0]); + for(Obs obs : obsToBeVoided){ + Context.getObsService().voidObs(obs,"Obs Update"); + } + Object consultationObject = JsonUtils.readAsObject(queueData.getPayload(), "$['consultation']"); + String recipientString = JsonUtils.readAsString(String.valueOf(consultationObject), "$['consultation.recipient']"); + if(recipientString != null) { + try { + Role role = null; + Person recipient = null; + User user = null; + String sourceUuid = JsonUtils.readAsString(String.valueOf(consultationObject), "$['consultation.sourceUuid']"); + String[] recipientParts = StringUtils.split(recipientString, ":"); + if (ArrayUtils.getLength(recipientParts) == 2) { + if (StringUtils.equalsIgnoreCase(recipientParts[1], "u")) { + user = Context.getUserService().getUserByUsername(recipientParts[0]); + recipient = user.getPerson(); + } else if (StringUtils.equalsIgnoreCase(recipientParts[1], "g")) { + role = Context.getUserService().getRole(recipientParts[0]); + } + } else { + user = Context.getUserService().getUserByUsername(recipientString); recipient = user.getPerson(); - } else if (StringUtils.equalsIgnoreCase(recipientParts[1], "g")) { - role = Context.getUserService().getRole(recipientParts[0]); } - } - generateNotification(sourceUuid, encounter, recipient, role); - } catch (Exception e) { - if (!e.getClass().equals(QueueProcessorException.class)) { - String reason = "Unable to generate notification information. Rolling back encounter."; - queueProcessorException.addException(new Exception(reason, e)); - Context.getEncounterService().voidEncounter(encounter, reason); + String providerString = JsonUtils.readAsString(queueData.getPayload(), "$['encounter']['encounter.provider_id']"); + String activeSetupConfigUuid = JsonUtils.readAsString(queueData.getPayload(), "$['encounter']['encounter.setup_config_uuid']"); + Provider provider = Context.getProviderService().getProviderByIdentifier(providerString); + generateNotification(sourceUuid, encounter, recipient, role, user, provider.getPerson(), activeSetupConfigUuid); + } catch (Exception e) { + if (!e.getClass().equals(QueueProcessorException.class)) { + String reason = "Unable to generate notification information. Rolling back encounter."; + queueProcessorException.addException(new Exception(reason, e)); + Context.getEncounterService().voidEncounter(encounter, reason); + } } } } @@ -127,14 +171,15 @@ public boolean validate(final QueueData queueData) throws QueueProcessorExceptio queueProcessorException = new QueueProcessorException(); log.info("Processing encounter form data: " + queueData.getUuid()); encounter = new Encounter(); + obsToBeVoided = new ArrayList(); String payload = queueData.getPayload(); - //Object encounterObject = JsonUtils.readAsObject(queueData.getPayload(), "$['encounter']"); - processEncounter(encounter, payload); - //Object patientObject = JsonUtils.readAsObject(queueData.getPayload(), "$['patient']"); processPatient(encounter, payload); + //Object encounterObject = JsonUtils.readAsObject(queueData.getPayload(), "$['encounter']"); + processEncounter(encounter, payload); + Object obsObject = JsonUtils.readAsObject(queueData.getPayload(), "$['observation']"); processObs(encounter, null, obsObject); @@ -150,8 +195,7 @@ public boolean validate(final QueueData queueData) throws QueueProcessorExceptio } } - private void generateNotification(final String sourceUuid, final Encounter encounter, final Person recipient, final Role role) { - Person sender = encounter.getProvider(); + private void generateNotification(final String sourceUuid, final Encounter encounter, final Person recipient, final Role role, final User user, Person sender, String activeSetupConfigUuid) { NotificationData notificationData = new NotificationData(); notificationData.setRole(role); @@ -179,6 +223,50 @@ private void generateNotification(final String sourceUuid, final Encounter encou notificationData.setSender(sender); notificationData.setReceiver(recipient); Context.getService(DataService.class).saveNotificationData(notificationData); + MuzimaSetting muzimaVisitSetting = getMuzimaSetting(NOTIFICATION_FEATURE_STATUS_SETTING_PROPERTY,activeSetupConfigUuid); + boolean isNotificationStatusEnabled = false; + if(muzimaVisitSetting != null){ + isNotificationStatusEnabled = muzimaVisitSetting.getValueBoolean(); + } + if(isNotificationStatusEnabled) { + //Start of sending Notification + String authKey = AUTH_KEY_FCM; + String FMCurl = API_URL_FCM; + + URL url = null; + try { + url = new URL(FMCurl); + NotificationTokenService notificationTokenService = Context.getService(NotificationTokenService.class); + List notificationTokens = notificationTokenService.getNotificationByUserId(user); + for (NotificationToken notificationToken : notificationTokens) { + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setUseCaches(false); + conn.setDoInput(true); + conn.setDoOutput(true); + + conn.setRequestMethod("POST"); + conn.setRequestProperty("Authorization", "key=" + authKey); + conn.setRequestProperty("Content-Type", "application/json"); + + JSONObject json = new JSONObject(); + json.put("to", notificationToken.getToken()); + JSONObject info = new JSONObject(); + info.put("title", "mUzima Consultation"); + info.put("body", "Hello " + user.getSystemId() + " you have a consultation pending your review"); + json.put("notification", info); + + OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); + wr.write(json.toString()); + wr.flush(); + conn.getInputStream(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + //End of sending Notification + } } private void processPatient(final Encounter encounter, final Object patientObject) { @@ -325,11 +413,56 @@ private void processObs(final Encounter encounter, final Obs parentObs, final Ob private void createObs(final Encounter encounter, final Obs parentObs, final Concept concept, final Object o) { String value=null; Obs obs = new Obs(); + Obs obs1 = new Obs(); obs.setConcept(concept); + obs.setCreator(encounter.getCreator()); + boolean isObsUpdate = false; + String obsUuid = null; - //check and parse if obs_value / obs_datetime object + //check and parse if obs_value / obs_datetime / obs_valuetext/ obs_valuecoded object if(o instanceof LinkedHashMap){ LinkedHashMap obj = (LinkedHashMap)o; + if(obj.containsKey("obs_valueuuid")){ + isObsUpdate = true; + String valueUuid = (String)obj.get("obs_valueuuid"); + obsUuid = valueUuid; + obs1 = Context.getObsService().getObsByUuid(obsUuid); + obsToBeVoided.add(obs1); + obs.setPreviousVersion(obs1); + } + if(obj.containsKey("obs_value")){ + value = (String)obj.get("obs_value"); + } + if(obj.containsKey("obs_datetime")){ + String dateString = (String)obj.get("obs_datetime"); + Date obsDateTime = parseDate(dateString); + obs.setObsDatetime(obsDateTime); + } + if(obj.containsKey("obs_valuetext")){ + String valueText = (String)obj.get("obs_valuetext"); + obs.setValueText(valueText); + } + if(obj.containsKey("obs_valuecoded")){ + String valueCodedString = (String)obj.get("obs_valuecoded"); + String[] valueCodedElements = StringUtils.split(valueCodedString, "\\^"); + int valueCodedId = Integer.parseInt(valueCodedElements[0]); + Concept valueCoded = Context.getConceptService().getConcept(valueCodedId); + if (valueCoded == null) { + queueProcessorException.addException(new Exception("Unable to find concept for value coded with id: " + valueCodedId)); + } else { + obs.setValueCoded(valueCoded); + } + } + }else if(o instanceof JSONObject) { + JSONObject obj = (JSONObject)o; + if(obj.containsKey("obs_valueuuid")){ + isObsUpdate = true; + String valueUuid = (String)obj.get("obs_valueuuid"); + obsUuid = valueUuid; + obs1 = Context.getObsService().getObsByUuid(obsUuid); + obsToBeVoided.add(obs1); + obs.setPreviousVersion(obs1); + } if(obj.containsKey("obs_value")){ value = (String)obj.get("obs_value"); } @@ -338,6 +471,21 @@ private void createObs(final Encounter encounter, final Obs parentObs, final Con Date obsDateTime = parseDate(dateString); obs.setObsDatetime(obsDateTime); } + if(obj.containsKey("obs_valuetext")){ + String valueText = (String)obj.get("obs_valuetext"); + obs.setValueText(valueText); + } + if(obj.containsKey("obs_valuecoded")){ + String valueCodedString = (String)obj.get("obs_valuecoded"); + String[] valueCodedElements = StringUtils.split(valueCodedString, "\\^"); + int valueCodedId = Integer.parseInt(valueCodedElements[0]); + Concept valueCoded = Context.getConceptService().getConcept(valueCodedId); + if (valueCoded == null) { + queueProcessorException.addException(new Exception("Unable to find concept for value coded with id: " + valueCodedId)); + } else { + obs.setValueCoded(valueCoded); + } + } }else{ value = o.toString(); } @@ -360,14 +508,19 @@ private void createObs(final Encounter encounter, final Obs parentObs, final Con } else if (concept.getDatatype().isText()) { obs.setValueText(value); } else if (concept.getDatatype().isComplex()) { - String uniqueComplexName = UUID.randomUUID().toString(); - InputStream inputStream = new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(value)); - // TODO: this handler only assume jpg are coming for now. Need to add this extra information in the payload. - ComplexData complexData = new ComplexData(uniqueComplexName + ".jpg", inputStream); - obs.setComplexData(complexData); - // see https://tickets.openmrs.org/browse/TRUNK-2582 for the fix version - String handlerString = Context.getConceptService().getConceptComplex(obs.getConcept().getConceptId()).getHandler(); - Context.getObsService().getHandler(handlerString).saveObs(obs); + if(!isObsUpdate) { + String uniqueComplexName = UUID.randomUUID().toString(); + InputStream inputStream = new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(value)); + // TODO: this handler only assume jpg are coming for now. Need to add this extra information in the payload. + ComplexData complexData = new ComplexData(uniqueComplexName + ".jpg", inputStream); + obs.setComplexData(complexData); + // see https://tickets.openmrs.org/browse/TRUNK-2582 for the fix version + String handlerString = Context.getConceptService().getConceptComplex(obs.getConcept().getConceptId()).getHandler(); + Context.getObsService().getHandler(handlerString).saveObs(obs); + }else{ + Obs complexObs = Context.getObsService().getObsByUuid(obsUuid); + obs.setValueComplex(complexObs.getValueComplex()); + } } // only add if the value is not empty :) encounter.addObs(obs); @@ -429,8 +582,22 @@ private void processEncounter(final Encounter encounter, final Object encounterO if (user == null) { queueProcessorException.addException(new Exception("Unable to find user using the id: " + providerString)); } else { - encounter.setCreator(user); - encounter.setProvider(user); + encounter.setCreator(user); + Provider provider = Context.getProviderService().getProviderByIdentifier(providerString); + String encounterRoleString = org.openmrs.module.muzima.utils.JsonUtils.readAsString(encounterPayload, "$['encounter']['encounter.provider_role_uuid']"); + EncounterRole encounterRole = null; + + if(StringUtils.isBlank(encounterRoleString)){ + encounterRole = Context.getEncounterService().getEncounterRoleByUuid(DEFAULT_ENCOUNTER_ROLE); + } else { + encounterRole = Context.getEncounterService().getEncounterRoleByUuid(encounterRoleString); + } + + if(encounterRole == null){ + queueProcessorException.addException(new Exception("Unable to find encounter role using the uuid: [" + + encounterRoleString + "] or the default role [" + DEFAULT_ENCOUNTER_ROLE +"]")); + } + encounter.setProvider(encounterRole,provider); } String locationString = JsonUtils.readAsString(encounterPayload, "$['encounter']['encounter.location_id']"); @@ -444,6 +611,69 @@ private void processEncounter(final Encounter encounter, final Object encounterO Date encounterDatetime = JsonUtils.readAsDate(encounterPayload, "$['encounter']['encounter.encounter_datetime']"); encounter.setEncounterDatetime(encounterDatetime); + + String encounterId = JsonUtils.readAsString(encounterPayload, "$['encounter']['encounter.encounter_id']"); + String activeSetupConfigUuid = JsonUtils.readAsString(encounterPayload, "$['encounter']['encounter.setup_config_uuid']"); + + MuzimaSetting muzimaVisitSetting = getMuzimaSetting(MUZIMA_VISIT_GENERATION_SETTING_PROPERTY,activeSetupConfigUuid); + boolean isVisitGenerationEnabled = false; + if(muzimaVisitSetting != null){ + isVisitGenerationEnabled = muzimaVisitSetting.getValueBoolean(); + } + if(isVisitGenerationEnabled) { + if (encounterId == null) { + VisitService visitService = Context.getService(VisitService.class); + List patientVisit = visitService.getVisitsByPatient(encounter.getPatient(), true, false); + Visit encounterVisit = null; + Collections.sort(patientVisit, visitDateTimeComparator); + for (Visit visit : patientVisit) { + if (visit.getStopDatetime() == null) { + if (encounterDatetime.compareTo(visit.getStartDatetime()) >= 0) { + encounterVisit = visit; + break; + } + } else if (encounterDatetime.compareTo(visit.getStartDatetime()) >= 0 && (encounterDatetime.compareTo(visit.getStopDatetime()) <= 0)) { + encounterVisit = visit; + break; + } + } + + if (encounterVisit == null) { + MuzimaSetting defaultMuzimaVisitTypeSetting = getMuzimaSetting(DEFAULT_MUZIMA_VISIT_TYPE_SETTING_PROPERTY, activeSetupConfigUuid); + String defaultMuzimaVisitTypeUuid = ""; + if (defaultMuzimaVisitTypeSetting != null) { + defaultMuzimaVisitTypeUuid = defaultMuzimaVisitTypeSetting.getValueString(); + if (!defaultMuzimaVisitTypeUuid.isEmpty()) { + VisitType visitType = visitService.getVisitTypeByUuid(defaultMuzimaVisitTypeUuid); + if (visitType != null) { + String uuid = UUID.randomUUID().toString(); + Visit visit = new Visit(); + visit.setPatient(encounter.getPatient()); + visit.setVisitType(visitType); + visit.setStartDatetime(OpenmrsUtil.firstSecondOfDay(encounter.getEncounterDatetime())); + visit.setStopDatetime(OpenmrsUtil.getLastMomentOfDay(encounter.getEncounterDatetime())); + visit.setCreator(user); + visit.setDateCreated(new Date()); + visit.setUuid(uuid); + visitService.saveVisit(visit); + encounterVisit = visitService.getVisitByUuid(uuid); + } else { + queueProcessorException.addException(new Exception("Unable to find default visit type with uuid " + defaultMuzimaVisitTypeUuid)); + } + } else { + queueProcessorException.addException(new Exception("Unable to find default visit type. Default visit type setting not set. ")); + } + + } else { + queueProcessorException.addException(new Exception("Unable to find default visit type. Default visit type setting not set. ")); + } + } + encounter.setVisit(encounterVisit); + } else { + Encounter encounter1 = Context.getEncounterService().getEncounter(Integer.valueOf(encounterId)); + encounter.setVisit(encounter1.getVisit()); + } + } } private Date parseDate(final String dateValue) { @@ -465,4 +695,11 @@ public boolean accept(final QueueData queueData) { public String getDiscriminator() { return DISCRIMINATOR_VALUE; } + + private final Comparator visitDateTimeComparator = new Comparator() { + @Override + public int compare(Visit lhs, Visit rhs) { + return -lhs.getStartDatetime().compareTo(rhs.getStartDatetime()); + } + }; } diff --git a/api/src/main/java/org/openmrs/module/muzimaconsultation/utils/JsonUtils.java b/api/src/main/java/org/openmrs/module/muzimaconsultation/utils/JsonUtils.java index a7376bc..ea3a7fc 100644 --- a/api/src/main/java/org/openmrs/module/muzimaconsultation/utils/JsonUtils.java +++ b/api/src/main/java/org/openmrs/module/muzimaconsultation/utils/JsonUtils.java @@ -61,7 +61,7 @@ public static boolean readAsBoolean(final String jsonObject, final String path) try { returnedBoolean = (Boolean)JsonPath.read(jsonObject, path); } catch (Exception e) { - logger.error("Unable to read boolean value with path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to read boolean value with path: " + path); } return returnedBoolean; } @@ -93,7 +93,7 @@ public static double readAsNumeric(final String jsonObject, final String path) { try { returnedString = (Double)JsonPath.read(jsonObject, path); } catch (Exception e) { - logger.error("Unable to read string value with path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to read string value with path: " + path); } return returnedString; } @@ -125,7 +125,7 @@ public static String readAsString(final String jsonObject, final String path) { try { returnedString = JsonPath.read(jsonObject, path); } catch (Exception e) { - logger.error("Unable to read string value with path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to read string value with path: " + path); } return returnedString; } @@ -169,9 +169,9 @@ public static Date readAsDateTime(final String jsonObject, final String path) { Calendar calendar = ISO8601Util.toCalendar(dateAsString); returnedDate = calendar.getTime(); } catch (ParseException e) { - logger.error("Unable to convert string value from path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to convert string value from path: " + path); } catch (Exception e) { - logger.error("Unable to create date value from path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to create date value from path: " + path); } return returnedDate; } @@ -188,7 +188,7 @@ public static Object readAsObject(final String jsonObject, final String path) { try { object = JsonPath.read(jsonObject, path); } catch (Exception e) { - logger.error("Unable to read object value with path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to read object value with path: " + path); } return object; } @@ -205,7 +205,7 @@ public static List readAsObjectList(final String jsonObject, final Strin try { objects = JsonPath.read(jsonObject, path); } catch (Exception e) { - logger.error("Unable to read object value with path: " + path + " from: " + String.valueOf(jsonObject)); + logger.error("Unable to read object value with path: " + path); } return objects; } @@ -243,7 +243,7 @@ public static Date readAsDate(String serialized, String path) { try { return new SimpleDateFormat(DATE_PATTERN).parse(dateAsString); } catch (ParseException e) { - logger.error("Unable to convert string value from path: " + path + " from: " + String.valueOf(serialized)); + logger.error("Unable to convert string value from path: " + path); } return null; } diff --git a/omod/src/main/java/org/openmrs/module/muzimaconsultation/web/controller/NotificationsController.java b/omod/src/main/java/org/openmrs/module/muzimaconsultation/web/controller/NotificationsController.java index 3dc2dfe..137eadc 100644 --- a/omod/src/main/java/org/openmrs/module/muzimaconsultation/web/controller/NotificationsController.java +++ b/omod/src/main/java/org/openmrs/module/muzimaconsultation/web/controller/NotificationsController.java @@ -57,13 +57,13 @@ public Map getNotificationsFor(final @RequestParam(value = "uuid Person person = Context.getPersonService().getPersonByUuid(uuid); if (outgoing) { pages = (service.countNotificationDataBySender(person, search, "unread").intValue() + pageSize - 1) / pageSize; - notificationDataList = service.getNotificationDataBySender(person, search, pageNumber, pageSize, "unread"); + notificationDataList = service.getNotificationDataBySender(person, search, pageNumber, pageSize, "unread", null); } else { pages = (service.countNotificationDataByReceiver(person, search, "unread").intValue() + pageSize - 1) / pageSize; - notificationDataList = service.getNotificationDataByReceiver(person, search, pageNumber, pageSize, "unread"); + notificationDataList = service.getNotificationDataByReceiver(person, search, pageNumber, pageSize, "unread", null); if (showRead) { pages = (service.countNotificationDataByReceiver(person, search, "read").intValue() + pageSize - 1) / pageSize; - readNotificationDataList = service.getNotificationDataByReceiver(person, search, pageNumber, pageSize, "read"); + readNotificationDataList = service.getNotificationDataByReceiver(person, search, pageNumber, pageSize, "read", null); for (NotificationData notificationData : readNotificationDataList) { notificationDataList.add(notificationData); } diff --git a/pom.xml b/pom.xml index b3ac3d6..e7c9e39 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 1.9.9 - 1.1.0 + 1.8.1-SNAPSHOT 1.1.1 UTF-8