notebook_detail_model.dart 4.36 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;

  ///获取已预订订单
  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) {
        NavigatorUtil.goNotebookDetailPage(context, params["rid"],
            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);
    }
  }
}