package com.casic.dcms.mvp.model;

import com.casic.dcms.bean.ActionResultBean;
import com.casic.dcms.utils.retrofit.RetrofitServiceManager;

import rx.Observable;
import rx.Observer;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * @Author: Pengxh
 * @Time: 2021/4/12 14:13
 * @Email: 290677893@qq.com
 **/
public class CaseSubmitModelImpl implements ICaseSubmitModel {

    private OnSubmitListener listener;

    public CaseSubmitModelImpl(OnSubmitListener submitListener) {
        this.listener = submitListener;
    }

    /**
     * 数据回调接口
     */
    public interface OnSubmitListener {
        void onSuccess(ActionResultBean resultBean);

        void onFailure(Throwable throwable);
    }

    @Override
    public Subscription sendRetrofitRequest(String isNeedVerify, String isNeedRevisit, String longitude,
                                            String latitude, String source, String caseLevel, String eorc,
                                            String casetypeCode, String casetypeDetailCode, String areaCode,
                                            String streetCode, String communityCode, String gridId,
                                            String description, String fieldintro, String fileIdVerify,
                                            String audioIdVerify, String videoIdVerify, int bzhours, int bzminis) {
        Observable<ActionResultBean> observable = RetrofitServiceManager.getSubmitCaseResult(isNeedVerify, isNeedRevisit, longitude, latitude,
                source, caseLevel, eorc, casetypeCode, casetypeDetailCode, areaCode, streetCode, communityCode,
                gridId, description, fieldintro, fileIdVerify, audioIdVerify, videoIdVerify, bzhours, bzminis);
        return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<ActionResultBean>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {
                if (e.getCause() != null) {
                    listener.onFailure(e);
                }
            }

            @Override
            public void onNext(ActionResultBean resultBean) {
                if (resultBean != null) {
                    listener.onSuccess(resultBean);
                }
            }
        });
    }
}
