diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/adapter/RecipientListingRvAdapter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/adapter/RecipientListingRvAdapter.java index 2f6d385c..c37ecd01 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/adapter/RecipientListingRvAdapter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/adapter/RecipientListingRvAdapter.java @@ -14,6 +14,7 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.view.RecipientListRV import com.gmeremit.online.gmeremittance_native.utils.Utils; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; public class RecipientListingRvAdapter extends RecyclerView.Adapter { @@ -41,6 +42,13 @@ public class RecipientListingRvAdapter extends RecyclerView.Adapter0) + { + Iterator iterator=data.iterator(); + int count=0; + while(iterator.hasNext()) + { + RecipientInfoModel item=iterator.next(); + if(item.getRecipientId().equalsIgnoreCase(recipientToBeDeleted)) { + iterator.remove(); + notifyItemRemoved(count); + } + count++; + } + } + } + public interface RecipientSelectionListener { void onRecipientSelected(RecipientInfoModel recipientInfoModel); + void onRecipientLongPressed(RecipientInfoModel recipientInfoModel); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/gateway/RecipientListingV2Gateway.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/gateway/RecipientListingV2Gateway.java index 606d0a40..b3c168cc 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/gateway/RecipientListingV2Gateway.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/gateway/RecipientListingV2Gateway.java @@ -10,6 +10,7 @@ import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; import com.google.gson.JsonObject; import io.reactivex.Observable; +import okhttp3.ResponseBody; public class RecipientListingV2Gateway extends PrivilegedGateway implements RecipientListingV2InteractorInterface.RecipientListingV2GatewayInterface { @@ -28,4 +29,9 @@ public class RecipientListingV2Gateway extends PrivilegedGateway implements Reci return HttpClientV2.getInstance().getAllRecipientV2(auth,Uid); } + + @Override + public Observable deleteRecipientFromNetwork(String auth, String Uid, String recipientID) { + return HttpClientV2.getInstance().deleteRecipientV2(auth,Uid,recipientID); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientlisting/RecipientInfoModel.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientlisting/RecipientInfoModel.java index 123fd63c..e2331b88 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientlisting/RecipientInfoModel.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/model/recipientlisting/RecipientInfoModel.java @@ -1,9 +1,12 @@ package com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting; +import android.os.Parcel; +import android.os.Parcelable; + import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; -public class RecipientInfoModel { +public class RecipientInfoModel implements Parcelable { @SerializedName("mobileNumber") @Expose private String mobileNumber; @@ -227,5 +230,70 @@ public class RecipientInfoModel { } - + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.mobileNumber); + dest.writeString(this.district); + dest.writeString(this.reasonId); + dest.writeString(this.relation); + dest.writeString(this.country); + dest.writeString(this.dpUrl); + dest.writeString(this.city); + dest.writeString(this.relationId); + dest.writeString(this.countryId); + dest.writeString(this.state); + dest.writeString(this.email); + dest.writeString(this.middleName); + dest.writeString(this.firstName); + dest.writeString(this.recipientId); + dest.writeString(this.reason); + dest.writeString(this.districtId); + dest.writeString(this.stateId); + dest.writeString(this.lastName); + dest.writeString(this.address); + dest.writeString(this.userId); + } + + public RecipientInfoModel() { + } + + protected RecipientInfoModel(Parcel in) { + this.mobileNumber = in.readString(); + this.district = in.readString(); + this.reasonId = in.readString(); + this.relation = in.readString(); + this.country = in.readString(); + this.dpUrl = in.readString(); + this.city = in.readString(); + this.relationId = in.readString(); + this.countryId = in.readString(); + this.state = in.readString(); + this.email = in.readString(); + this.middleName = in.readString(); + this.firstName = in.readString(); + this.recipientId = in.readString(); + this.reason = in.readString(); + this.districtId = in.readString(); + this.stateId = in.readString(); + this.lastName = in.readString(); + this.address = in.readString(); + this.userId = in.readString(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public RecipientInfoModel createFromParcel(Parcel source) { + return new RecipientInfoModel(source); + } + + @Override + public RecipientInfoModel[] newArray(int size) { + return new RecipientInfoModel[size]; + } + }; } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2InteractorInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2InteractorInterface.java index b5ca581e..cbabd986 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2InteractorInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2InteractorInterface.java @@ -7,6 +7,7 @@ import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.R import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.GetAllRecipientApiResponse; import io.reactivex.Observable; +import okhttp3.ResponseBody; public interface RecipientListingV2InteractorInterface extends BaseInteractorInterface { @@ -14,5 +15,6 @@ public interface RecipientListingV2InteractorInterface extends BaseInteractorInt interface RecipientListingV2GatewayInterface extends PrivilegedGatewayInterface { Observable getAllRecipientFromNetwork(String auth,String Uid); + Observable deleteRecipientFromNetwork(String auth, String Uid,String recipientID); } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2Presenter.java index 0052eea8..caa5ad88 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2Presenter.java @@ -18,6 +18,7 @@ import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverRe import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; +import okhttp3.ResponseBody; public class RecipientListingV2Presenter extends BasePresenter implements RecipientListingV2PresenterInterface, RecipientListingV2InteractorInterface { @@ -54,6 +55,18 @@ public class RecipientListingV2Presenter extends BasePresenter implements Recipi ); } + @Override + public void deleteRecipient(String recipientId) { + compositeDisposable.add( + this.gateway.deleteRecipientFromNetwork(gateway.getAuth(),gateway.getUserID(),recipientId) + .doOnSubscribe(disposable -> view.showProgressBar(true, "Deleting recipient...")) + .doFinally(() -> view.showProgressBar(false, "")) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new RecipientDeleteObserver(recipientId)) + ); + } + public class RecipinetListObserver extends GenericApiObserverResponse { @@ -76,4 +89,32 @@ public class RecipientListingV2Presenter extends BasePresenter implements Recipi view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null); } } + + public class RecipientDeleteObserver extends GenericApiObserverResponse + { + + private final String recipientToBeDeleted; + + RecipientDeleteObserver(String recipientToBeDeleted) { + this.recipientToBeDeleted=recipientToBeDeleted; + } + + @Override + protected void onSuccess(AddRecipientApiResponse responseBody) { + if(responseBody.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) + view.onRecipientDeletedSuccessfully(this.recipientToBeDeleted); + view.showToastMessage(responseBody.getMsg()); + + } + + @Override + public void onFailed(String message) { + view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null); + } + + @Override + protected void onConnectionNotEstablished(String message) { + view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET,null); + } + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2PresenterInterface.java index a167e7a3..258aa3cb 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/presenter/recipientlisting/RecipientListingV2PresenterInterface.java @@ -15,8 +15,13 @@ import java.util.List; public interface RecipientListingV2PresenterInterface extends BasePresenterInterface { void getAllRecipientList(); + + void deleteRecipient(String recipientId); + interface RecipientListingV2ContractInterface extends BaseContractInterface { void showAllRecipientToUser(List recipientInfoModelList); + + void onRecipientDeletedSuccessfully(String recipientToBeDeleted); } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java index 2c61fc74..5d4af0db 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientadd/RecipientAddV2Activity.java @@ -79,6 +79,10 @@ public class RecipientAddV2Activity extends BaseActivity implements View.OnClick Button submitButton; + public static String RECIPIENT_INFO_BUNDLE_KEY="recipientInfoKey"; + + + private RecipientAddV2PresenterInterface presenterInterface; private RecipientCountryListingDialog recipientCountryListingDialog; diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientlisting/RecipientListingV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientlisting/RecipientListingV2Activity.java index 24fe2b12..c28b74ff 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientlisting/RecipientListingV2Activity.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/recipientV2/view/recipientlisting/RecipientListingV2Activity.java @@ -1,5 +1,7 @@ package com.gmeremit.online.gmeremittance_native.recipientV2.view.recipientlisting; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; @@ -10,11 +12,14 @@ import android.view.ViewGroup; import com.gmeremit.online.gmeremittance_native.R; import com.gmeremit.online.gmeremittance_native.base.BaseActivity; +import com.gmeremit.online.gmeremittance_native.recipient.view.RecipientsListActivity; +import com.gmeremit.online.gmeremittance_native.recipient.view.UpdateRecipientActivity; import com.gmeremit.online.gmeremittance_native.recipientV2.adapter.RecipientListingRvAdapter; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.RecipientInfoModel; import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientlisting.RecipientListingV2Presenter; import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientlisting.RecipientListingV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.recipientV2.view.recipientadd.RecipientAddV2Activity; +import com.gmeremit.online.gmeremittance_native.utils.Constants; import java.util.List; @@ -32,6 +37,8 @@ public class RecipientListingV2Activity extends BaseActivity implements Recipien private RecipientListingV2PresenterInterface recipientListingV2PresenterInterface; + public static int RECIPIENT_INFO_ACTION_EDIT=2999; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -87,8 +94,41 @@ public class RecipientListingV2Activity extends BaseActivity implements Recipien recipientListingRvAdapter.setData(recipientInfoModelList); } + @Override + public void onRecipientDeletedSuccessfully(String recipientToBeDeleted) { + recipientListingRvAdapter.removeRecipientFromList(recipientToBeDeleted); + } + @Override public void onRecipientSelected(RecipientInfoModel recipientInfoModel) { + //Proceed to send money + } + @Override + public void onRecipientLongPressed(RecipientInfoModel recipientInfoModel) { + CharSequence[] charSequences = new CharSequence[]{"Delete", "Edit"}; + AlertDialog.Builder alert = new AlertDialog.Builder(RecipientListingV2Activity.this); + alert.setItems(charSequences, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (i == 0) { + recipientListingV2PresenterInterface.deleteRecipient(recipientInfoModel.getRecipientId()); + } else { + Intent intent = new Intent(getApplicationContext(), RecipientAddV2Activity.class); + intent.putExtra(RecipientAddV2Activity.RECIPIENT_INFO_BUNDLE_KEY,recipientInfoModel); + startActivityForResult(intent,RecipientListingV2Activity.RECIPIENT_INFO_ACTION_EDIT); + } + } + }); + alert.create(); + alert.show(); } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == RecipientListingV2Activity.RECIPIENT_INFO_ACTION_EDIT && resultCode == RESULT_OK) { + //fetchDataOnce + } + } + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java index d32d6e5d..2aacc8eb 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java @@ -124,5 +124,6 @@ public class API_URL { public static final String GET_ALL_RECIPIENT_INFO = "mobile/loadform/receiver"; public static final String ADD_RECIPIENT_V2 = "mobile/receiver/save/"; public static final String GET_ALL_RECIPIENT_V2 = "mobile/{uId}/receivers?search="; + public static final String DELETE_RECIPIENT_V2 = "mobile/receiver/remove/{uId}/"; } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java index ee503a76..cdbb8039 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java @@ -544,4 +544,8 @@ public interface ApiEndpoints { @Headers("Content-Type: application/json") Observable getAllRecipientV2(@Header("Authorization") String token, @Path("uId") String userName); + @POST(API_URL.DELETE_RECIPIENT_V2) + @Headers("Content-Type: application/json") + Observable deleteRecipientV2(@Header("Authorization") String token, @Path("uId") String userName,@Query("receiverId") String recieverId); + } diff --git a/app/src/main/res/layout/recipient_list_item.xml b/app/src/main/res/layout/recipient_list_item.xml index 98184397..fad42735 100644 --- a/app/src/main/res/layout/recipient_list_item.xml +++ b/app/src/main/res/layout/recipient_list_item.xml @@ -2,14 +2,15 @@ @@ -17,9 +18,10 @@ android:id="@+id/letterInitialTxtView" android:layout_gravity="center" android:gravity="center" + android:textSize="18sp" android:background="@drawable/circular_red_bg" - android:layout_width="43dp" - android:layout_height="43dp" /> + android:layout_width="50dp" + android:layout_height="50dp" />