From 2f57cfe200bb2ff778087906105b6bfa5b8e82b0 Mon Sep 17 00:00:00 2001 From: Qazi Abubakar Date: Wed, 10 Mar 2021 21:26:09 +0500 Subject: [PATCH] Fixed tasks disappearing from home visits when syncing immediately --- gradle.properties | 2 +- .../smartregister/chw/core/dao/VisitDao.java | 27 +++++++++++++++++++ .../chw/core/utils/RecurringServiceUtil.java | 2 +- .../chw/core/utils/VaccineScheduleUtil.java | 4 +-- .../chw/core/utils/VisitVaccineUtil.java | 4 +-- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0303fc9bc4..f7cee4dcec 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.0.18-SNAPSHOT +VERSION_NAME=2.0.25-SNAPSHOT VERSION_CODE=1 GROUP=org.smartregister POM_SETTING_DESCRIPTION=OpenSRP Client Chw Core Library diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/dao/VisitDao.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/dao/VisitDao.java index 747ece95e5..6ab09e62b2 100644 --- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/dao/VisitDao.java +++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/dao/VisitDao.java @@ -89,6 +89,33 @@ public static boolean memberHasBirthCert(String baseEntityID) { return Integer.valueOf(values.get(0)) > 0; } + public static String getBirthCertificateDate(String baseEntityID) { + String sql = "select d.updated_at from visit_details d " + + "inner join visits v on v.visit_id = d.visit_id COLLATE NOCASE " + + "where base_entity_id = '" + baseEntityID + "' COLLATE NOCASE and v.processed = 1 " + + "and (visit_key in ('birth_certificate','birth_cert') and (details = 'GIVEN' or human_readable_details = 'Yes'))"; + + DataMap dataMap = c -> getCursorValue(c, "updated_at"); + List values = AbstractDao.readData(sql, dataMap); + if (values == null || values.size() == 0) + return ""; + + return values.get(0); + } + + public static String getVaccineCardDate(String baseEntityID) { + String sql = "select d.updated_at from visit_details d inner join visits v on v.visit_id = d.visit_id " + + "COLLATE NOCASE where base_entity_id = '" + baseEntityID + "' " + + "COLLATE NOCASE and v.processed = 1 and (visit_key in ('vaccine_card', 'child_vaccine_card') and human_readable_details = 'Yes')"; + + DataMap dataMap = c -> getCursorValue(c, "updated_at"); + List values = AbstractDao.readData(sql, dataMap); + if (values == null || values.size() == 0) + return ""; + + return values.get(0); + } + public static boolean memberHasVaccineCard(String baseEntityID) { String sql = "select count(*) certificates " + "from visit_details d " + diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/RecurringServiceUtil.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/RecurringServiceUtil.java index 02957e52a3..f1749c5983 100644 --- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/RecurringServiceUtil.java +++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/RecurringServiceUtil.java @@ -182,7 +182,7 @@ public static Map> getServiceGroup(RecurringServiceMod } for (ServiceRecord serviceRecord : model.getServiceRecords()) { - if (serviceRecord.getSyncStatus().equals(RecurringServiceTypeRepository.TYPE_Unsynced) && serviceRecord.getType().equals(type)) { + if (serviceRecord.getType().equals(type)) { foundServiceTypeMap.put(type, model.getServiceTypes().get(type)); break; } diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VaccineScheduleUtil.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VaccineScheduleUtil.java index 17fb2f3c3c..661593cc4d 100644 --- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VaccineScheduleUtil.java +++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VaccineScheduleUtil.java @@ -189,8 +189,8 @@ public static List getVaccineGroups(Context context, String vaccin * @param group * @return */ - public static List getChildDueVaccines(String baseEntityID, Date dob, int group) { - List alerts = VisitVaccineUtil.getNextVaccines(baseEntityID, new DateTime(dob), CoreConstants.SERVICE_GROUPS.CHILD, false); + public static List getChildDueVaccines(String baseEntityID, Date dob, int group, boolean isEditMode) { + List alerts = VisitVaccineUtil.getNextVaccines(baseEntityID, new DateTime(dob), CoreConstants.SERVICE_GROUPS.CHILD, false, isEditMode); List wrappers = new ArrayList<>(); List vaccineGroups = VaccineScheduleUtil.getVaccineGroups(CoreChwApplication.getInstance().getApplicationContext(), CoreConstants.SERVICE_GROUPS.CHILD); VaccineGroup vaccineGroup = vaccineGroups.get(group); diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VisitVaccineUtil.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VisitVaccineUtil.java index bcbe1bb825..9db26ed380 100644 --- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VisitVaccineUtil.java +++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/VisitVaccineUtil.java @@ -69,7 +69,7 @@ public static Map getAllVaccines() { return vaccineMap; } - public static List getNextVaccines(String baseEntityID, DateTime anchorDate, String category, boolean includePending) { + public static List getNextVaccines(String baseEntityID, DateTime anchorDate, String category, boolean includePending, boolean isEditMode) { /// compute the alerts HashMap> vaccineSchedules = getVaccineSchedules(category); @@ -87,7 +87,7 @@ public static List getNextVaccines(String baseEntityID, DateTime anchorDa String code = alert.scheduleName().toLowerCase().replace(" ", ""); Date dateIssued = issuedVaccines.get(code); - if (dateIssued == null) { + if (isEditMode || dateIssued == null) { pending.add(alert); } }