marketing_center_provider.dart 12.8 KB
import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/recharge_list_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';

import '../constant/constant.dart';
import '../constant/error.dart';
import '../models/GetDzSellerConfModel.dart';
import '../models/mark_data_model.dart';
import '../models/recharge_notice_model.dart';
import '../models/seller_template_color_list_model.dart';
import '../models/tableOuter.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';
import 'choose_table_model.dart';

class MarketingCenterProvider extends ChangeNotifier {
  List<TableOuter> tableOuterList = []; //区域-桌位列表
  MarkDataModel markDataModel;

  PageState pageState = PageState.Loading;
  PageState pageStateRechargeHome = PageState.Loading;
  PageState pageStateBookInfo = PageState.Loading;
  PageState pageStateThemeHome = PageState.Loading;
  PageState pageStateSetting = PageState.Loading;

  List<RechargeListSunModel> rechargeList = [];

  List<RechargeListSunModel> rechargeListHistory = [];

  RechargeListSunModel rechargeDetail; //充值优惠详情
  PageState pageStateDetail = PageState.Loading;

  PageState pageStateHistory = PageState.Loading;

  PageState pageStateMessageDetail = PageState.Loading;

  RechargeNoticeSunModel rechargeNoticeSunModel;
  GetDzSellerConfSunModel dzSellerConfModel;
  List<SellerTemplateColorListSunModel> templeteDatas = []; //后台配置的模版数据

  //获取桌位列表
  getTableList(context, {needLoading = true}) async {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {"sellerid": userModel.user.sellerid};
    ChooseTableModel _chooseTableModel = ChooseTableModel();
    tableOuterList = await _chooseTableModel.getTableList(context, params,
        needLoading: needLoading);
    notifyListeners();
  }

  // 获取商家订座配置
  Future<bool> getDzSellerConf(BuildContext context,
      {bool showLoading = true}) async {
    Map<String, String> params = {
      'sid': Provider.of<UserModel>(context, listen: false).user.sellerid
    };
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_dz_seller_conf,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      Utils.showToast('请求失败,请重试');

      return false;
    });
    if (baseResp.code == Constant.status_success) {
      dzSellerConfModel =
          GetDzSellerConfModel.fromJson(baseResp.responseData).data;
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? '请求失败,请重试');
    }
    return false;
  }

  // 模板/颜色配置信息

  Future<bool> getSellerTemplateColorList(BuildContext context,
      {bool showLoading = true}) async {
    Map<String, String> params = {
      'sid': Provider.of<UserModel>(context, listen: false).user.sellerid
    };
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.get_seller_template_color_list,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      Utils.showToast('请求失败,请重试');
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      templeteDatas =
          SellerTemplateColorListModel.fromJson(baseResp.responseData).data;
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? '请求失败,请重试');
    }
    return false;
  }

  // 商家设置预订安排模板页面
  Future<bool> setSellerTemplateConf(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.set_seller_template_conf,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      Utils.showToast('商家设置预订安排模板页面失败,请重试');
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data == 0 || baseResp.data == 1) {
        return true;
      } else {
        Utils.showToast('商家设置预订安排模板页面失败,请重试');
      }
    } else {
      Utils.showToast(baseResp.msg ?? '商家设置预订安排模板页面失败,请重试');
    }
    return false;
  }

  // 设置订座商家配置信息
  Future<bool> setConfing(BuildContext context, Map<String, String> params,
      {bool showLoading = true, bool needToast = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.set_confing,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      if (needToast) {
        Utils.showToast('设置失败,请重试');
      }

      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data == 0 || baseResp.data == 1) {
        if (needToast) {
          Utils.showToast('设置成功');
        }
        return true;
      } else {
        if (needToast) {
          Utils.showToast('设置失败,请重试');
        }
      }
    } else {
      if (needToast) {
        Utils.showToast(baseResp.msg ?? '设置失败,请重试');
      }
    }
    return false;
  }

  // 获取商家获取预订安排模板页面
  Future<bool> getSellerTemplateConf(BuildContext context,
      {bool showLoading = true}) async {
    UserModel userModel = Provider.of<UserModel>(context, listen: false);
    Map<String, String> params = {"sid": userModel.user.sellerid};
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_seller_template_conf,
            data: params,
            showLoading: pageState == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageState = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取商家设置预订安排模板页面失败,请重试');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data == false) {
        pageState = PageState.Empty;
      } else {
        markDataModel = MarkDataModel.fromJson(baseResp.data);
        pageState = PageState.Success;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageState = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  // 商家设置预订安排模板页面
  Future<bool> createNewRecharge(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.create_new_recharge,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      if (params['id'] == null) {
        Utils.showToast('创建新充值活动失败,请重试');
      } else {
        Utils.showToast('修改新充值活动失败,请重试');
      }

      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data is Map || baseResp.data == 1) {
        return true;
      } else {
        if (params['id'] == null) {
          Utils.showToast('创建新充值活动失败,请重试');
        } else {
          Utils.showToast('修改新充值活动失败,请重试');
        }
      }
    } else {
      if (params['id'] == null) {
        Utils.showToast(baseResp.msg ?? '创建新充值活动失败,请重试');
      } else {
        Utils.showToast(baseResp.msg ?? '修改新充值活动失败,请重试');
      }
    }
    return false;
  }

  ///客户经理获取所创建活动列表
  Future<bool> getNewRechargeListHistory(
      BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    if (isShowLoading) {
      pageStateHistory = PageState.Loading;
      notifyListeners();
    }

    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_new_recharge_list,
            data: params,
            showLoading:
                pageStateHistory == PageState.Loading ? false : isShowLoading)
        .catchError((error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageStateHistory = PageState.ConnectivityError;
            break;
          case 2:
            pageStateHistory = PageState.ConnectivityTimeOut;
            break;
          default:
            pageStateHistory = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      rechargeListHistory =
          RechargeListModel.fromJson(baseResp.responseData).data;
      if (rechargeListHistory.length == 0) {
        pageStateHistory = PageState.Empty;
      } else {
        pageStateHistory = PageState.Success;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageStateHistory = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  // 获取新充值活动列表
  Future<bool> getNewRechargeList(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_new_recharge_list,
            data: params,
            showLoading: pageStateRechargeHome == PageState.Loading
                ? false
                : showLoading)
        .catchError((error) {
      pageStateRechargeHome = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取新充值活动列表失败,请重试');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      rechargeList = RechargeListModel.fromJson(baseResp.responseData).data;
      if (rechargeList.length == 0) {
        pageStateRechargeHome = PageState.Empty;
      } else {
        pageStateRechargeHome = PageState.Success;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageStateRechargeHome = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  // 获取新充值活动详情
  Future<bool> getNewRechargeDetail(BuildContext context, String id,
      {bool showLoading = true}) async {
    Map<String, String> params = {
      "id": id,
    };
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_new_recharge_detail,
            data: params,
            showLoading:
                pageStateDetail == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageStateDetail = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取新充值活动详情失败,请重试');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      rechargeDetail = RechargeListSunModel.fromJson(baseResp.data);
      pageStateDetail = PageState.Success;
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageStateDetail = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

// 充值成功通知消息获取详情
  Future<bool> getPayMessageByID(BuildContext context, String id,
      {bool showLoading = true}) async {
    Map<String, String> params = {
      "id": id,
    };
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_pay_message_by_id,
            data: params,
            showLoading:
                pageStateDetail == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageStateMessageDetail = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取新充值活动详情失败,请重试');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      rechargeNoticeSunModel =
          RechargeNoticeModel.fromJson(baseResp.responseData).data;
      if (rechargeNoticeSunModel.recharge == null &&
          rechargeNoticeSunModel.guest == null) {
        pageStateMessageDetail = PageState.Empty;
      } else {
        pageStateMessageDetail = PageState.Success;
      }

      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageStateMessageDetail = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }
}