Browse Source

notice list data Changes

new_design
Santosh Bhandary 4 years ago
parent
commit
2c558a38d2
  1. 116
      app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java
  2. 346
      app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java

116
app/src/main/java/com/swifttech/remit/android/features/notice/model/NoticeDTO.java

@ -1,52 +1,64 @@
package com.swifttech.remit.android.features.notice.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class NoticeDTO {
@SerializedName("rowId")
@Expose
private String rowId;
@SerializedName("title")
@Expose
private String title;
@SerializedName("createDate")
@Expose
private String createDate;
@SerializedName("isRead")
@Expose
private String isRead;
public String getRowId() {
return rowId;
}
public void setRowId(String rowId) {
this.rowId = rowId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public String getIsRead() {
return isRead;
}
public void setIsRead(String isRead) {
this.isRead = isRead;
}
}
package com.swifttech.remit.android.features.notice.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class NoticeDTO {
@SerializedName("rowId")
@Expose
private String rowId;
@SerializedName("title")
@Expose
private String title;
@SerializedName("createDate")
@Expose
private String createDate;
@SerializedName("isRead")// 0 => Not Read, 1=> Read,
@Expose
private String isRead;
@SerializedName("type")//0 => General Notice, 1=> Txn Notice
@Expose
private String type;
@SerializedName("extra")//If type==1, then extra will have Txn id
@Expose
private String extra;
public String getRowId() {
return rowId;
}
public void setRowId(String rowId) {
this.rowId = rowId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
public String getIsRead() {
return isRead;
}
public void setIsRead(String isRead) {
this.isRead = isRead;
}
}

346
app/src/main/java/com/swifttech/remit/android/features/notice/presenter/NoticeViewModel.java

@ -1,173 +1,173 @@
package com.swifttech.remit.android.features.notice.presenter;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.google.gson.reflect.TypeToken;
import com.swifttech.remit.android.base.BaseViewModel;
import com.swifttech.remit.android.common.customwidgets.CustomAlertDialog;
import com.swifttech.remit.android.features.notice.model.NoticeDTO;
import com.swifttech.remit.android.features.notice.model.NoticeDetailDTO;
import com.swifttech.remit.android.utils.Constants;
import com.swifttech.remit.android.utils.https.GenericApiObserverResponseV2;
import com.swifttech.remit.android.utils.https.GenericResponseDataModel;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
public class NoticeViewModel extends BaseViewModel implements NoticePresenterInterface {
private final NoticeViewContractInterface view;
private final NoticeGatewayInterface gateway;
private final CompositeDisposable compositeDisposable;
MutableLiveData<List<NoticeDTO>> noticeListLiveData;
MutableLiveData<NoticeDetailDTO> noticeDetailLiveData;
public NoticeViewModel(NoticePresenterInterface.NoticeViewContractInterface view, NoticeGatewayInterface gatewayInterface) {
this.view = view;
this.gateway = gatewayInterface;
noticeListLiveData = new MutableLiveData<>();
noticeDetailLiveData = new MutableLiveData<>();
this.compositeDisposable = new CompositeDisposable();
}
@Override
public void onViewReady() {
}
@Override
public void onViewNotReady() {
}
@Override
public void fetchNoticeListLiveData() {
this.compositeDisposable.add(
this.gateway.getNoticeList(gateway.getAuth(), gateway.getUserIDNumber())
.doOnSubscribe(subs -> view.showProgressBar(true, ""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new NoticeListObserver())
);
}
@Override
public void fetchNoticeDetail(NoticeDTO selectedNotice) {
this.compositeDisposable.add(
this.gateway.getNoticeDetail(gateway.getAuth(), selectedNotice.getRowId())
.doOnSubscribe(subs -> view.showProgressBar(true, ""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new NoticeDetailObserver())
);
}
@Override
public LiveData<List<NoticeDTO>> getNoticeListLiveData() {
return noticeListLiveData;
}
@Override
public LiveData<NoticeDetailDTO> getNoticeDetailLiveData() {
return noticeDetailLiveData;
}
public class NoticeListObserver extends GenericApiObserverResponseV2<List<NoticeDTO>> {
@Override
protected Type getDataType() {
return TypeToken.getParameterized(List.class, NoticeDTO.class).getType();
}
@Override
protected void onSuccess(GenericResponseDataModel<List<NoticeDTO>> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
if (t.getData() != null && t.getData().size() > 0) {
view.lazyInitViews();
sortNoticeList(t.getData());
} else
view.showPopUpMessage("You don't have any notification at the moment.", CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
@Override
protected void unauthorizedAccess(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.logout());
}
}
private void sortNoticeList(List<NoticeDTO> data) {
// DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
// Collections.sort(data, (o1, o2) -> {
// try {
// return df.parse(o1.getCreateDate()).compareTo(df.parse(o2.getCreateDate()));
// } catch (Exception pe) {
// Collections.reverse(data);
// }
// return 0;
// });
if (data != null)
Collections.reverse(data);
noticeListLiveData.setValue(data);
}
public class NoticeDetailObserver extends GenericApiObserverResponseV2<NoticeDetailDTO> {
@Override
protected Type getDataType() {
return TypeToken.getParameterized(NoticeDetailDTO.class).getType();
}
@Override
protected void onSuccess(GenericResponseDataModel<NoticeDetailDTO> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
noticeDetailLiveData.setValue(t.getData());
view.showDetailScreen();
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, null);
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void unauthorizedAccess(String message) {
gateway.clearAllUserData();
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.logout());
}
}
}
package com.swifttech.remit.android.features.notice.presenter;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import com.google.gson.reflect.TypeToken;
import com.swifttech.remit.android.base.BaseViewModel;
import com.swifttech.remit.android.common.customwidgets.CustomAlertDialog;
import com.swifttech.remit.android.features.notice.model.NoticeDTO;
import com.swifttech.remit.android.features.notice.model.NoticeDetailDTO;
import com.swifttech.remit.android.utils.Constants;
import com.swifttech.remit.android.utils.https.GenericApiObserverResponseV2;
import com.swifttech.remit.android.utils.https.GenericResponseDataModel;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
public class NoticeViewModel extends BaseViewModel implements NoticePresenterInterface {
private final NoticeViewContractInterface view;
private final NoticeGatewayInterface gateway;
private final CompositeDisposable compositeDisposable;
MutableLiveData<List<NoticeDTO>> noticeListLiveData;
MutableLiveData<NoticeDetailDTO> noticeDetailLiveData;
public NoticeViewModel(NoticePresenterInterface.NoticeViewContractInterface view, NoticeGatewayInterface gatewayInterface) {
this.view = view;
this.gateway = gatewayInterface;
noticeListLiveData = new MutableLiveData<>();
noticeDetailLiveData = new MutableLiveData<>();
this.compositeDisposable = new CompositeDisposable();
}
@Override
public void onViewReady() {
}
@Override
public void onViewNotReady() {
}
@Override
public void fetchNoticeListLiveData() {
this.compositeDisposable.add(
this.gateway.getNoticeList(gateway.getAuth(), gateway.getUserIDNumber())
.doOnSubscribe(subs -> view.showProgressBar(true, ""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new NoticeListObserver())
);
}
@Override
public void fetchNoticeDetail(NoticeDTO selectedNotice) {
this.compositeDisposable.add(
this.gateway.getNoticeDetail(gateway.getAuth(), selectedNotice.getRowId())
.doOnSubscribe(subs -> view.showProgressBar(true, ""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new NoticeDetailObserver())
);
}
@Override
public LiveData<List<NoticeDTO>> getNoticeListLiveData() {
return noticeListLiveData;
}
@Override
public LiveData<NoticeDetailDTO> getNoticeDetailLiveData() {
return noticeDetailLiveData;
}
public class NoticeListObserver extends GenericApiObserverResponseV2<List<NoticeDTO>> {
@Override
protected Type getDataType() {
return TypeToken.getParameterized(List.class, NoticeDTO.class).getType();
}
@Override
protected void onSuccess(GenericResponseDataModel<List<NoticeDTO>> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
if (t.getData() != null && t.getData().size() > 0) {
view.lazyInitViews();
sortNoticeList(t.getData());
} else
view.showPopUpMessage("You don't have any notification at the moment.", CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
}
@Override
protected void unauthorizedAccess(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.logout());
}
}
private void sortNoticeList(List<NoticeDTO> data) {
// DateFormat df = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
// Collections.sort(data, (o1, o2) -> {
// try {
// return df.parse(o1.getCreateDate()).compareTo(df.parse(o2.getCreateDate()));
// } catch (Exception pe) {
// Collections.reverse(data);
// }
// return 0;
// });
if (data != null)
Collections.reverse(data);
noticeListLiveData.setValue(data);
}
public class NoticeDetailObserver extends GenericApiObserverResponseV2<NoticeDetailDTO> {
@Override
protected Type getDataType() {
return TypeToken.getParameterized(NoticeDetailDTO.class).getType();
}
@Override
protected void onSuccess(GenericResponseDataModel<NoticeDetailDTO> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
noticeDetailLiveData.setValue(t.getData());
view.showDetailScreen();
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, null);
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void unauthorizedAccess(String message) {
gateway.clearAllUserData();
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.logout());
}
}
}
Loading…
Cancel
Save