/**
 * Created by zhouhuan on 2017/10/30.
 */
import { Toast } from 'antd-mobile';
import { NavigationActions } from 'react-navigation';
import { getData } from '../../utils/DataTemplate';
import { datasourceApi } from '../../services/datasource';

export default {
  namespace: 'obligeeInfo',
  state: {
    sourceData: {},
    detailData: {},
    metas: [],
    isDetail: false,
    editable: false,
    disabled: true,
  },
  effects: {
    *getObligeeInfo({ payload }, { put, call, select }) {
      if (payload.type === 'clear') {
        yield put({ type: 'clearList', payload: {} });
      }
      const { sourceData } = yield select(state => state.obligeeInfo);
      const size = sourceData.length;
      const coordinate = {
        containerType: 'module',
        containerName: 'query-DSRInfo',
        datasourceName: 'QueryDSRInfoTable',
      };
      const result = yield call(getData, coordinate, { pst: size, psz: 10, params: { pID: payload.id } });
      const singularData = result[0];
      yield put({ type: 'setDSRList', payload: { ...singularData } });
    },
    *getObligeeDetail({ payload }, { put, call }) {
      const coordinate = {
        containerType: 'module',
        containerName: 'query-DSRInfo',
        datasourceName: 'QueryDSRInfoDetails',
      };
      const result = yield call(getData, coordinate, { params: { pID: payload } });
      yield put({ type: 'getDSRDetail', payload: { ...result[0] } });
      yield put({ type: 'setDetail', payload: true });
      yield put({ type: 'setEdit', payload: false });
    },
    *updateDSRDetail({ payload }, { call, put }) {
      const coordinate = {
        containerType: 'module',
        containerName: 'query-DSRInfo',
        datasourceName: 'QueryDSRInfoDetails',
      };
      const api = datasourceApi(coordinate);
      yield call(api.update, payload.id, payload.singularData);
      Toast.success('修改成功!', 1);
      yield put(NavigationActions.navigate({
        routeName: 'ObligeeInfo',
      }));
      yield put({ type: 'setDisabled', payload: true });
      yield put({ type: 'setDetail', payload: false });
    },
    *onEBack({ payload }, { put, call }) {
      const coordinate = {
        containerType: 'module',
        containerName: 'query-DSRInfo',
        datasourceName: 'QueryDSRInfoTable',
      };
      const result = yield call(getData, coordinate, { params: { pID: payload } });
      const singularData = result[0];
      yield put({ type: 'setDSRList', payload: { ...singularData } });
      yield put(NavigationActions.navigate({
        routeName: 'ObligeeInfo',
      }));
      yield put({ type: 'setDisabled', payload: true });
      yield put({ type: 'setDetail', payload: false });
    },
    *setStatus({ payload }, { put }) {
      yield put({ type: 'setDisabled', payload: false });
      yield put({ type: 'setEdit', payload });
    },
  },
  reducers: {
    // 下拉刷新用到的,清空列表的数据
    clearList(state) {
      return { ...state, sourceData: {} };
    },
    getDSRDetail(state, { payload }) {
      return {
        ...state,
        detailData: payload,
      };
    },
    setDSRList(state, { payload }) {
      return {
        ...state,
        sourceData: payload,
      };
    },
    setMetas(state, { payload }) {
      return { ...state, metas: payload };
    },
    setDetail(state, { payload }) {
      return {
        ...state,
        isDetail: payload,
      };
    },
    setEdit(state, { payload }) {
      return {
        ...state,
        editable: payload,
      };
    },
    setDisabled(state, { payload }) {
      return {
        ...state,
        disabled: payload,
      };
    },
  },
};