notebook_detail_model.dart 5.66 KB
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/manager.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';

class NotebookDetailModel extends ChangeNotifier {
  PageState pageState = PageState.Loading;
  String selectNum;
  int selectIndex;
  TextEditingController numController = TextEditingController();
  String strTF;
  String prestrTF;

  ///获取已预订订单
  Future<NotebookDetail> getReserveDetail(
      BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    if (isShowLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(
            context, Method.get, HttpUrl.reserve_detail,
            data: params, showLoading: false)
        .catchError((error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageState = PageState.ConnectivityError;
            break;
          case 2:
            pageState = PageState.ConnectivityTimeOut;
            break;
          default:
            pageState = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data.isEmpty) {
        pageState = PageState.Empty;
      } else {
        pageState = PageState.Success;
      }
      notifyListeners();
      return NotebookDetail.fromJson(baseResp.data);
    } else {
      pageState = PageState.ConnectivityError;
      if (baseResp != null) {
        Utils.showToast(baseResp.msg ?? "");
      }
    }
  }

  ///获取商家信息
  Future<List<Manager>> getManagers(BuildContext context) async {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {
      "seller_id": userModel.user.sellerid,
      "seller_openid": userModel.user.openid
    };
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(context, Method.get, HttpUrl.sellerinfo,
            data: params, showLoading: false)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp?.code == Constant.status_success) {
      return (baseResp.data["manager"] as List)
          .map((value) => Manager.fromJson(value as Map<String, dynamic>))
          .toList();
    }
  }

  ///设置客户经理
  setReserveCusmnan(BuildContext context, Map<String, String> params) async {
    BaseResp<String> baseResp = await DioUtil()
        .request<String>(context, Method.get, HttpUrl.set_reserve_cusman,
            data: params)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp.code == Constant.status_success) {
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
  }

  //安排在线预订
  Future<bool> setReserveStatus(
      BuildContext context, Map<String, String> params,
      {ifPush = true, showLoading = false}) async {
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(
            context, Method.get, HttpUrl.set_reserve_status,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp == null) return false;
    if (baseResp.code == Constant.status_success && baseResp.data != null) {
      if (ifPush) {
        UserModel userModel = Provider.of<UserModel>(context, listen: false);
        NavigatorUtil.goNotebookDetailPage(
            context, params["rid"], userModel.user.openid,
            replace: true);
      }
      return true;
    } else {
      Utils.showToast("订单已被处理");
      return false;
    }
  }

  //设置消息状态
  setMessageStatus(BuildContext context, Map<String, String> params) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.set_message_status,
            data: params, showLoading: false)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp.code == Constant.status_success) {
    } else {
      Utils.showToast(baseResp.msg);
    }
  }

  // 编辑订单附加信息

  Future<bool> upReserveInfo(BuildContext context,
      {String rid, String actualPum, String conAmount}) async {
    Map<String, dynamic> params = {
      "rid": rid,
    };
    if (actualPum != null) {
      params['actual_pum'] = actualPum;
    }
    if (conAmount != null) {
      params['con_amount'] = conAmount;
    }
    bool sucess = await _upReserveInfo(context, params);
    if (sucess) {
      Utils.showToast("修改成功!");
    }
  }

  Future<bool> _upReserveInfo(BuildContext context, Map<String, dynamic> params,
      {ifPush = true, showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.up_reserve_info,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp == null) return false;
    if (baseResp.code == Constant.status_success && baseResp.data != null) {
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      return false;
    }
  }
}