1414
1515package org .openmrs .mobile .activities .matchingpatients ;
1616
17- import androidx .annotation .NonNull ;
18-
1917import org .openmrs .mobile .R ;
2018import org .openmrs .mobile .activities .BasePresenter ;
2119import org .openmrs .mobile .api .RestApi ;
2220import org .openmrs .mobile .api .RestServiceBuilder ;
21+ import org .openmrs .mobile .api .promise .SimpleDeferredObject ;
2322import org .openmrs .mobile .api .repository .PatientRepository ;
2423import org .openmrs .mobile .dao .PatientDAO ;
24+ import org .openmrs .mobile .listeners .retrofit .DefaultResponseCallback ;
25+ import org .openmrs .mobile .listeners .retrofit .PatientDeferredResponseCallback ;
2526import org .openmrs .mobile .models .Patient ;
26- import org .openmrs .mobile .models .PatientDto ;
27- import org .openmrs .mobile .models .PatientDtoUpdate ;
28- import org .openmrs .mobile .utilities .ApplicationConstants ;
2927import org .openmrs .mobile .utilities .PatientAndMatchingPatients ;
3028import org .openmrs .mobile .utilities .PatientMerger ;
29+ import org .openmrs .mobile .utilities .ToastUtil ;
3130
3231import java .util .Queue ;
3332
34- import retrofit2 .Call ;
35- import retrofit2 .Callback ;
36- import retrofit2 .Response ;
37-
3833import static com .google .common .collect .ComparisonChain .start ;
3934
4035public class MatchingPatientsPresenter extends BasePresenter implements MatchingPatientsContract .Presenter {
@@ -85,7 +80,7 @@ public void mergePatients() {
8580 if (selectedPatient != null ) {
8681 Patient patientToMerge = matchingPatientsList .poll ().getPatient ();
8782 Patient mergedPatient = new PatientMerger ().mergePatient (selectedPatient , patientToMerge );
88- updatePatient (mergedPatient );
83+ updateMatchingPatient (mergedPatient );
8984 removeSelectedPatient ();
9085 if (matchingPatientsList .peek () != null ) {
9186 start ();
@@ -97,37 +92,83 @@ public void mergePatients() {
9792 }
9893 }
9994
100- private void updatePatient (final Patient patient ) {
101- PatientDtoUpdate patientDto = patient .getUpdatedPatientDto ();
102- patient .setUuid (null );
103- Call <PatientDto > call = restApi .updatePatient (patientDto , patient .getUuid (), ApplicationConstants .API .FULL );
104- call .enqueue (new Callback <PatientDto >() {
95+ public void updateMatchingPatient (final Patient patient ) {
96+ patientRepository .updateMatchingPatient (patient , new DefaultResponseCallback () {
10597 @ Override
106- public void onResponse (@ NonNull Call <PatientDto > call , @ NonNull Response <PatientDto > response ) {
107- if (response .isSuccessful ()) {
108- if (patientDAO .isUserAlreadySaved (patient .getUuid ())) {
109- Long id = patientDAO .findPatientByUUID (patient .getUuid ()).getId ();
110- patientDAO .updatePatient (id , patient );
111- patientDAO .deletePatient (patient .getId ());
112- } else {
113- patientDAO .updatePatient (patient .getId (), patient );
114- }
98+ public void onResponse () {
99+ if (patientDAO .isUserAlreadySaved (patient .getUuid ())) {
100+ Long id = patientDAO .findPatientByUUID (patient .getUuid ()).getId ();
101+ patientDAO .updatePatient (id , patient );
102+ patientDAO .deletePatient (patient .getId ());
115103 } else {
116- view . showErrorToast ( response . message () );
104+ patientDAO . updatePatient ( patient . getId (), patient );
117105 }
118106 }
119107
120108 @ Override
121- public void onFailure ( @ NonNull Call < PatientDto > call , @ NonNull Throwable t ) {
122- view .showErrorToast (t . getMessage () );
109+ public void onErrorResponse ( String errorMessage ) {
110+ view .showErrorToast (errorMessage );
123111 }
124112 });
125113 }
126114
115+
116+
117+ // public void updateMatchingPatient(final Patient patient) {
118+ // PatientDtoUpdate patientDto = patient.getUpdatedPatientDto();
119+ // patient.setUuid(null);
120+ // Call<PatientDto> call = restApi.updatePatient(patientDto, patient.getUuid(), ApplicationConstants.API.FULL);
121+ // call.enqueue(new Callback<PatientDto>() {
122+ // @Override
123+ // public void onResponse(@NonNull Call<PatientDto> call, @NonNull Response<PatientDto> response) {
124+ // if (response.isSuccessful()) {
125+ // if (patientDAO.isUserAlreadySaved(patient.getUuid())) {
126+ // Long id = patientDAO.findPatientByUUID(patient.getUuid()).getId();
127+ // patientDAO.updatePatient(id, patient);
128+ // patientDAO.deletePatient(patient.getId());
129+ // } else {
130+ // patientDAO.updatePatient(patient.getId(), patient);
131+ // }
132+ // } else {
133+ // view.showErrorToast(response.message());
134+ // }
135+ // }
136+ //
137+ // @Override
138+ // public void onFailure(@NonNull Call<PatientDto> call, @NonNull Throwable t) {
139+ // view.showErrorToast(t.getMessage());
140+ // }
141+ // });
142+ // }
143+
144+
145+
127146 @ Override
128147 public void registerNewPatient () {
129148 final Patient patient = matchingPatientsList .poll ().getPatient ();
130- patientRepository .syncPatient (patient );
149+ patientRepository .syncPatient (patient , new PatientDeferredResponseCallback () {
150+ @ Override
151+ public void onErrorResponse (String errorMessage ) {
152+
153+ }
154+
155+ @ Override
156+ public void onResponse (SimpleDeferredObject <Patient > response ) {
157+ response .resolve (patient );
158+ }
159+
160+ @ Override
161+ public void onErrorResponse (String errorMessage , SimpleDeferredObject <Patient > errorResponse ) {
162+ errorResponse .reject (new RuntimeException (errorMessage ));
163+ ToastUtil .error (errorMessage );
164+ }
165+
166+ @ Override
167+ public void onNotifyResponse (String notifyMessage ) {
168+ ToastUtil .notify (notifyMessage );
169+ }
170+ });
171+
131172 removeSelectedPatient ();
132173 if (matchingPatientsList .peek () != null ) {
133174 subscribe ();
@@ -136,6 +177,7 @@ public void registerNewPatient() {
136177 }
137178 }
138179
180+
139181 private void setSelectedIfOnlyOneMatching () {
140182 if (matchingPatientsList .peek ().getMatchingPatientList ().size () == 1 ) {
141183 selectedPatient = matchingPatientsList .peek ().getMatchingPatientList ().get (0 );
0 commit comments