diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/custom_views/CoreMalariaFloatingMenu.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/custom_views/CoreMalariaFloatingMenu.java
new file mode 100644
index 0000000000..f7d6e9c9ba
--- /dev/null
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/custom_views/CoreMalariaFloatingMenu.java
@@ -0,0 +1,121 @@
+package org.smartregister.chw.core.custom_views;
+
+import android.app.Activity;
+import android.content.Context;
+import android.support.design.widget.FloatingActionButton;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import org.smartregister.chw.core.R;
+import org.smartregister.chw.core.listener.OnClickFloatingMenu;
+import org.smartregister.chw.malaria.custom_views.BaseMalariaFloatingMenu;
+import org.smartregister.chw.malaria.fragment.BaseMalariaCallDialogFragment;
+
+import static org.smartregister.chw.core.utils.Utils.redrawWithOption;
+
+public abstract class CoreMalariaFloatingMenu extends BaseMalariaFloatingMenu {
+ public FloatingActionButton fab;
+ private Animation fabOpen;
+ private Animation fabClose;
+ private Animation rotateForward;
+ private Animation rotateBack;
+ private View callLayout;
+ private View referLayout;
+ private RelativeLayout activityMain;
+ private boolean isFabMenuOpen = false;
+ private LinearLayout menuBar;
+ private OnClickFloatingMenu onClickFloatingMenu;
+
+ public CoreMalariaFloatingMenu(Context context, String clientName, String clientPhone,
+ String clientFamilyHeadName, String clientFamilyHeadPhone) {
+ super(context, clientName, clientPhone, clientFamilyHeadName, clientFamilyHeadPhone);
+ }
+
+ public CoreMalariaFloatingMenu(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public void setFloatMenuClickListener(OnClickFloatingMenu onClickFloatingMenu) {
+ this.onClickFloatingMenu = onClickFloatingMenu;
+ }
+
+ @Override
+ protected void initUi() {
+ inflate(getContext(), R.layout.view_malaria_floating_menu, this);
+
+ fabOpen = AnimationUtils.loadAnimation(getContext(), R.anim.fab_open);
+ fabClose = AnimationUtils.loadAnimation(getContext(), R.anim.fab_close);
+ rotateForward = AnimationUtils.loadAnimation(getContext(), R.anim.rotate_forward);
+ rotateBack = AnimationUtils.loadAnimation(getContext(), R.anim.rotate_back);
+
+ activityMain = findViewById(R.id.activity_main);
+ menuBar = findViewById(R.id.menu_bar);
+
+ fab = findViewById(R.id.malaria_fab);
+ fab.setOnClickListener(this);
+
+ callLayout = findViewById(R.id.call_layout);
+ callLayout.setOnClickListener(this);
+ callLayout.setClickable(false);
+
+ referLayout = findViewById(R.id.refer_to_facility_layout);
+ referLayout.setOnClickListener(this);
+ referLayout.setClickable(false);
+
+ menuBar.setVisibility(GONE);
+
+ }
+
+ @Override
+ public void onClick(View view) {
+ onClickFloatingMenu.onClickMenu(view.getId());
+ }
+
+ public void animateFAB() {
+ if (menuBar.getVisibility() == GONE) {
+ menuBar.setVisibility(VISIBLE);
+ }
+
+ if (isFabMenuOpen) {
+ activityMain.setBackgroundResource(R.color.transparent);
+ fab.startAnimation(rotateBack);
+ fab.setImageResource(R.drawable.ic_edit_white);
+
+ callLayout.startAnimation(fabClose);
+ callLayout.setClickable(false);
+
+ referLayout.startAnimation(fabClose);
+ referLayout.setClickable(false);
+ isFabMenuOpen = false;
+ } else {
+ activityMain.setBackgroundResource(R.color.grey_tranparent_50);
+ fab.startAnimation(rotateForward);
+ fab.setImageResource(R.drawable.ic_input_add);
+
+ callLayout.startAnimation(fabOpen);
+ callLayout.setClickable(true);
+
+ referLayout.startAnimation(fabOpen);
+ referLayout.setClickable(true);
+ isFabMenuOpen = true;
+ }
+ }
+
+
+ public void launchCallWidget() {
+ BaseMalariaCallDialogFragment.launchDialog((Activity) this.getContext(), getClientName(),
+ getPhoneNumber(), getFamilyHeadName(), getFamilyHeadPhone());
+ }
+
+ public void redraw(boolean hasPhoneNumber) {
+ redrawWithOption(this, hasPhoneNumber);
+ }
+
+ public View getCallLayout() {
+ return callLayout;
+ }
+}
diff --git a/opensrp-chw-core/src/main/res/layout/view_malaria_floating_menu.xml b/opensrp-chw-core/src/main/res/layout/view_malaria_floating_menu.xml
new file mode 100644
index 0000000000..a0e36b8df0
--- /dev/null
+++ b/opensrp-chw-core/src/main/res/layout/view_malaria_floating_menu.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/opensrp-chw/src/main/java/org/smartregister/chw/activity/AncMemberProfileActivity.java b/opensrp-chw/src/main/java/org/smartregister/chw/activity/AncMemberProfileActivity.java
index 437eed5827..2b6a393bce 100644
--- a/opensrp-chw/src/main/java/org/smartregister/chw/activity/AncMemberProfileActivity.java
+++ b/opensrp-chw/src/main/java/org/smartregister/chw/activity/AncMemberProfileActivity.java
@@ -294,6 +294,7 @@ public void startFormActivity(JSONObject formJson) {
JsonFormUtils.REQUEST_CODE_GET_JSON);
}
+
@Override
public List getReferralTypeModels() {
return referralTypeModels;
diff --git a/opensrp-chw/src/main/java/org/smartregister/chw/activity/MalariaProfileActivity.java b/opensrp-chw/src/main/java/org/smartregister/chw/activity/MalariaProfileActivity.java
index 6772defb6a..343dfbc23f 100644
--- a/opensrp-chw/src/main/java/org/smartregister/chw/activity/MalariaProfileActivity.java
+++ b/opensrp-chw/src/main/java/org/smartregister/chw/activity/MalariaProfileActivity.java
@@ -4,25 +4,35 @@
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
+import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.widget.TextView;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+import com.google.gson.Gson;
+
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONException;
import org.json.JSONObject;
import org.smartregister.chw.R;
+import org.smartregister.chw.anc.domain.Visit;
+import org.smartregister.chw.anc.util.NCUtils;
import org.smartregister.chw.core.contract.FamilyOtherMemberProfileExtendedContract;
import org.smartregister.chw.core.contract.FamilyProfileExtendedContract;
import org.smartregister.chw.core.dao.AncDao;
-import org.smartregister.chw.core.dao.ChildDao;
import org.smartregister.chw.core.dao.PNCDao;
import org.smartregister.chw.core.interactor.CoreMalariaProfileInteractor;
+import org.smartregister.chw.core.listener.OnClickFloatingMenu;
import org.smartregister.chw.core.utils.CoreConstants;
+import org.smartregister.chw.custom_view.MalariaFloatingMenu;
import org.smartregister.chw.malaria.activity.BaseMalariaProfileActivity;
import org.smartregister.chw.malaria.domain.MemberObject;
import org.smartregister.chw.malaria.presenter.BaseMalariaProfilePresenter;
import org.smartregister.chw.malaria.util.Constants;
import org.smartregister.chw.presenter.FamilyOtherMemberActivityPresenter;
+import org.smartregister.clientandeventmodel.Event;
import org.smartregister.commonregistry.CommonPersonObject;
import org.smartregister.commonregistry.CommonPersonObjectClient;
import org.smartregister.commonregistry.CommonRepository;
@@ -37,8 +47,10 @@
import io.reactivex.schedulers.Schedulers;
import timber.log.Timber;
+import static org.smartregister.chw.anc.AncLibrary.getInstance;
+
public class MalariaProfileActivity extends BaseMalariaProfileActivity implements FamilyOtherMemberProfileExtendedContract.View, FamilyProfileExtendedContract.PresenterCallBack {
- private static final String CLIENT = "client";
+ private static final String CLIENT = "CLIENT";
public static void startMalariaActivity(Activity activity, MemberObject memberObject, CommonPersonObjectClient client) {
Intent intent = new Intent(activity, MalariaProfileActivity.class);
@@ -47,6 +59,7 @@ public static void startMalariaActivity(Activity activity, MemberObject memberOb
activity.startActivity(intent);
}
+
@Override
protected void initializePresenter() {
showProgressBar(true);
@@ -56,8 +69,14 @@ protected void initializePresenter() {
}
@Override
- protected void onCreation() {
- super.onCreation();
+ protected void setupViews() {
+ super.setupViews();
+ setProfileImage(MEMBER_OBJECT.getBaseEntityId(), null);
+ if (isAnc(MEMBER_OBJECT)) {
+ textViewRecordAnc.setVisibility(View.VISIBLE);
+ visitStatus.setVisibility(View.VISIBLE);
+ }
+
}
@Override
@@ -116,6 +135,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
+
@NonNull
@Override
public FamilyOtherMemberActivityPresenter presenter() {
@@ -124,26 +144,23 @@ public FamilyOtherMemberActivityPresenter presenter() {
}
@Override
- public void setProfileImage(String s, String s1) {
- //implement
+ public void setProfileImage(String baseEntityId, String s1) {
+ imageRenderHelper.refreshProfileImage(baseEntityId, imageView, R.mipmap.ic_member);
}
@Override
public void setProfileName(@NonNull String s) {
- TextView textView = findViewById(org.smartregister.malaria.R.id.textview_name);
- textView.setText(s);
+ textViewName.setText(s);
}
@Override
public void setProfileDetailOne(@NonNull String s) {
- TextView textView = findViewById(org.smartregister.malaria.R.id.textview_gender);
- textView.setText(s);
+ textViewGender.setText(s);
}
@Override
public void setProfileDetailTwo(@NonNull String s) {
- TextView textView = findViewById(org.smartregister.malaria.R.id.textview_address);
- textView.setText(s);
+ textViewLocation.setText(s);
}
@Override
@@ -152,6 +169,37 @@ public void onClick(View view) {
int id = view.getId();
if (id == R.id.textview_record_malaria) {
MalariaFollowUpVisitActivity.startMalariaRegistrationActivity(this, MEMBER_OBJECT.getBaseEntityId());
+ } else if (id == R.id.textview_record_anc) {
+ AncHomeVisitActivity.startMe(this, MEMBER_OBJECT.getBaseEntityId(), false);
+ } else if (id == R.id.textview_record_anc_not_done) {
+ setAncVisitNotDoneView(true);
+ saveVisit(org.smartregister.chw.anc.util.Constants.EVENT_TYPE.ANC_HOME_VISIT_NOT_DONE);
+ } else if (id == R.id.textview_undo) {
+ setAncVisitNotDoneView(false);
+ }
+ }
+
+ private void saveVisit(String eventType) {
+ try {
+ Event event = org.smartregister.chw.anc.util.JsonFormUtils.createUntaggedEvent(MEMBER_OBJECT.getBaseEntityId(), eventType, org.smartregister.chw.anc.util.Constants.TABLES.ANC_MEMBERS);
+ Visit visit = NCUtils.eventToVisit(event, org.smartregister.chw.anc.util.JsonFormUtils.generateRandomUUIDString());
+ visit.setPreProcessedJson(new Gson().toJson(event));
+ getInstance().visitRepository().addVisit(visit);
+ } catch (JSONException e) {
+ Timber.e(e);
+ }
+ }
+
+ private void setAncVisitNotDoneView(Boolean bool) {
+ if (bool) {
+ visitStatus.setVisibility(View.VISIBLE);
+ textViewRecordAnc.setVisibility(View.GONE);
+ visitStatus.setVisibility(View.GONE);
+ } else {
+ visitStatus.setVisibility(View.GONE);
+ textViewRecordAnc.setVisibility(View.VISIBLE);
+ visitStatus.setVisibility(View.VISIBLE);
+
}
}
@@ -262,9 +310,9 @@ public MemberType(org.smartregister.chw.anc.domain.MemberObject memberObject, St
type = CoreConstants.TABLE_NAME.ANC_MEMBER;
} else if (PNCDao.isPNCMember(memberObject.getBaseEntityId())) {
type = CoreConstants.TABLE_NAME.PNC_MEMBER;
- } else if (ChildDao.isChild(memberObject.getBaseEntityId())) {
- type = CoreConstants.TABLE_NAME.CHILD;
- }
+ }// else if (ChildDao.isChild(memberObject.getBaseEntityId())) {
+ // type = CoreConstants.TABLE_NAME.CHILD;
+ //}
MemberType memberType = new MemberType(memberObject, type);
e.onNext(memberType);
@@ -328,4 +376,46 @@ public void openFamilyDueServices() {
intent.putExtra(CoreConstants.INTENT_KEY.SERVICE_DUE, true);
startActivity(intent);
}
+
+ private void checkPhoneNumberProvided() {
+ ((MalariaFloatingMenu) baseMalariaFloatingMenu).redraw(!StringUtils.isBlank(MEMBER_OBJECT.getPhoneNumber())
+ || !StringUtils.isBlank(MEMBER_OBJECT.getPhoneNumber()));
+ }
+
+
+ @Override
+ public void initializeFloatingMenu() {
+ baseMalariaFloatingMenu = new MalariaFloatingMenu(this, MEMBER_OBJECT);
+
+ OnClickFloatingMenu onClickFloatingMenu = viewId -> {
+ switch (viewId) {
+ case R.id.malaria_fab:
+ checkPhoneNumberProvided();
+ ((MalariaFloatingMenu) baseMalariaFloatingMenu).animateFAB();
+ break;
+ case R.id.call_layout:
+ ((MalariaFloatingMenu) baseMalariaFloatingMenu).launchCallWidget();
+ ((MalariaFloatingMenu) baseMalariaFloatingMenu).animateFAB();
+ break;
+ case R.id.refer_to_facility_layout:
+ Toast.makeText(this, "Refer", Toast.LENGTH_SHORT).show();
+ break;
+ default:
+ Timber.d("Unknown fab action");
+ break;
+ }
+
+ };
+
+ ((MalariaFloatingMenu) baseMalariaFloatingMenu).setFloatMenuClickListener(onClickFloatingMenu);
+ baseMalariaFloatingMenu.setGravity(Gravity.BOTTOM | Gravity.END);
+ LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
+ LinearLayout.LayoutParams.MATCH_PARENT);
+ addContentView(baseMalariaFloatingMenu, linearLayoutParams);
+ }
+
+
+ protected boolean isAnc(MemberObject memberObject) {
+ return !memberObject.getAncIsClosed() && memberObject.getGestAge() != null && !memberObject.getGestAge().trim().equals("");
+ }
}
diff --git a/opensrp-chw/src/main/java/org/smartregister/chw/custom_view/MalariaFloatingMenu.java b/opensrp-chw/src/main/java/org/smartregister/chw/custom_view/MalariaFloatingMenu.java
new file mode 100644
index 0000000000..7858c2dfb3
--- /dev/null
+++ b/opensrp-chw/src/main/java/org/smartregister/chw/custom_view/MalariaFloatingMenu.java
@@ -0,0 +1,12 @@
+package org.smartregister.chw.custom_view;
+
+import android.content.Context;
+
+import org.smartregister.chw.core.custom_views.CoreMalariaFloatingMenu;
+import org.smartregister.chw.malaria.domain.MemberObject;
+
+public class MalariaFloatingMenu extends CoreMalariaFloatingMenu {
+ public MalariaFloatingMenu(Context context, MemberObject MEMBER_OBJECT) {
+ super(context, MEMBER_OBJECT);
+ }
+}
diff --git a/opensrp-chw/src/main/java/org/smartregister/chw/model/MalariaRegisterFragmentModel.java b/opensrp-chw/src/main/java/org/smartregister/chw/model/MalariaRegisterFragmentModel.java
index 684ee6337e..a0f11d4e91 100644
--- a/opensrp-chw/src/main/java/org/smartregister/chw/model/MalariaRegisterFragmentModel.java
+++ b/opensrp-chw/src/main/java/org/smartregister/chw/model/MalariaRegisterFragmentModel.java
@@ -3,6 +3,7 @@
import android.support.annotation.NonNull;
import org.smartregister.chw.core.utils.ChildDBConstants;
+import org.smartregister.chw.core.utils.CoreConstants;
import org.smartregister.chw.malaria.model.BaseMalariaRegisterFragmentModel;
import org.smartregister.chw.util.ChwDBConstants;
import org.smartregister.chw.util.Constants;
@@ -21,6 +22,7 @@ public String mainSelect(@NonNull String tableName, @NonNull String mainConditio
queryBuilder.SelectInitiateMainTable(tableName, mainColumns(tableName));
queryBuilder.customJoin("INNER JOIN " + Constants.TABLE_NAME.FAMILY_MEMBER + " ON " + tableName + "." + DBConstants.KEY.BASE_ENTITY_ID + " = " + Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.BASE_ENTITY_ID + " COLLATE NOCASE ");
queryBuilder.customJoin("INNER JOIN " + Constants.TABLE_NAME.FAMILY + " ON " + Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.RELATIONAL_ID + " = " + Constants.TABLE_NAME.FAMILY + "." + DBConstants.KEY.BASE_ENTITY_ID);
+ queryBuilder.customJoin("LEFT JOIN " + CoreConstants.TABLE_NAME.ANC_MEMBER_LOG + " ON " + tableName + "." + DBConstants.KEY.BASE_ENTITY_ID + " = " + CoreConstants.TABLE_NAME.ANC_MEMBER_LOG + "." + DBConstants.KEY.BASE_ENTITY_ID + " COLLATE NOCASE ");
queryBuilder.customJoin("LEFT JOIN " + Constants.TABLE_NAME.ANC_MEMBER + " ON " + tableName + "." + DBConstants.KEY.BASE_ENTITY_ID + " = " + Constants.TABLE_NAME.ANC_MEMBER + "." + DBConstants.KEY.BASE_ENTITY_ID + " COLLATE NOCASE ");
queryBuilder.customJoin("LEFT JOIN " + Constants.TABLE_NAME.PNC_MEMBER + " ON " + tableName + "." + DBConstants.KEY.BASE_ENTITY_ID + " = " + Constants.TABLE_NAME.PNC_MEMBER + "." + DBConstants.KEY.BASE_ENTITY_ID + " COLLATE NOCASE ");
return queryBuilder.mainCondition(mainCondition);
@@ -41,11 +43,19 @@ protected String[] mainColumns(String tableName) {
columnList.add(Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.GENDER);
columnList.add(Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.UNIQUE_ID);
columnList.add(Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.RELATIONAL_ID);
+ columnList.add(Constants.TABLE_NAME.FAMILY_MEMBER + "." + DBConstants.KEY.PHONE_NUMBER + " as " + org.smartregister.chw.malaria.util.DBConstants.KEY.PHONE_NUMBER_MALARIA);
columnList.add(Constants.TABLE_NAME.FAMILY + "." + DBConstants.KEY.VILLAGE_TOWN);
columnList.add(Constants.TABLE_NAME.FAMILY + "." + DBConstants.KEY.FAMILY_HEAD);
columnList.add(Constants.TABLE_NAME.FAMILY + "." + DBConstants.KEY.PRIMARY_CAREGIVER);
columnList.add(Constants.TABLE_NAME.PNC_MEMBER + "." + ChwDBConstants.DELIVERY_DATE);
columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + org.smartregister.chw.anc.util.DBConstants.KEY.PHONE_NUMBER);
+ columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + ChwDBConstants.IS_CLOSED + " as " + org.smartregister.chw.malaria.util.DBConstants.KEY.ANC_IS_CLOSED);
+ columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + org.smartregister.chw.malaria.util.DBConstants.KEY.GEST_AGE);
+ columnList.add(Constants.TABLE_NAME.PNC_MEMBER + "." + ChwDBConstants.IS_CLOSED + " as " + org.smartregister.chw.malaria.util.DBConstants.KEY.PNC_IS_CLOSED);
+ columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + org.smartregister.chw.core.utils.ChwDBConstants.LMP);
+ columnList.add(CoreConstants.TABLE_NAME.ANC_MEMBER_LOG + "." + org.smartregister.chw.anc.util.DBConstants.KEY.DATE_CREATED);
+ columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + org.smartregister.chw.anc.util.DBConstants.KEY.CONFIRMED_VISITS);
+ columnList.add(Constants.TABLE_NAME.ANC_MEMBER + "." + org.smartregister.chw.anc.util.DBConstants.KEY.LAST_HOME_VISIT);
columnList.add(Constants.TABLE_NAME.FAMILY + "." + DBConstants.KEY.FIRST_NAME + " as " + org.smartregister.chw.anc.util.DBConstants.KEY.FAMILY_NAME);
return columnList.toArray(new String[columnList.size()]);
}
diff --git a/opensrp-chw/src/main/java/org/smartregister/chw/provider/ChwRegisterProvider.java b/opensrp-chw/src/main/java/org/smartregister/chw/provider/ChwRegisterProvider.java
index 5a93a580d8..3bab49993c 100644
--- a/opensrp-chw/src/main/java/org/smartregister/chw/provider/ChwRegisterProvider.java
+++ b/opensrp-chw/src/main/java/org/smartregister/chw/provider/ChwRegisterProvider.java
@@ -180,4 +180,4 @@ protected void onPostExecute(Void param) {
updateDueColumn(context, viewHolder, childVisit);
}
}
-}
+}
\ No newline at end of file