package com.casic.dcms.mvp.model.impl;

import com.casic.dcms.bean.ActionResultBean;
import com.casic.dcms.listener.OnActionResultListener;
import com.casic.dcms.mvp.model.ICaseSubmitModel;
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;

public class CaseSubmitModelImpl implements ICaseSubmitModel {

    private final OnActionResultListener actionResultListener;

    public CaseSubmitModelImpl(OnActionResultListener listener) {
        this.actionResultListener = listener;
    }

    /**
     * {@link ICaseSubmitModel}
     */
    @Override
    public Subscription sendCaseSubmitRequest(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) {
                    actionResultListener.onFailure(e);
                }
            }

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