store_wine_provider.dart 9.58 KB
import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';

import '../constant/constant.dart';
import '../models/out_wine_record_model.dart';
import '../models/phone_code_model.dart';
import '../models/wine_manage_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';

/**
 * 餐厅详情
 */
class StoreWineProvider with ChangeNotifier {
  PageState pageStateAll = PageState.Loading; //全部在店
  PageState pageStateRecord = PageState.Loading; //取酒记录单个存酒
  PageState pageStateDetail = PageState.Loading; //存酒详情
  PageState pageStateDetailRecord = PageState.Success; //出库记录列表详情
  PageState pageStateRecordHome = PageState.Loading; //取酒记录首页
  List<WineManageModel> wineManageList; //存酒列表数据

  WineManageModel wineManageDetail; //存酒详情数据

  List<OutWineRecordSunModel> outWineRecordData; //某个存酒详情的出库记录
  List<OutWineRecordSunModel> outWineRecordHomeData; //存酒详情的出库记录
  String code; //验证码
  PhoneCodeSunModel phoneCodeSunModel;

  /// 给手机发送短信验证码
  Future<bool> getPhoneCode(BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    BaseResp<Map<String, dynamic>> baseResp = await DioUtil()
        .request<Map<String, dynamic>>(
            context, Method.get, HttpUrl.send_vc_code,
            data: params, showLoading: false)
        .catchError((error) {});
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data.isEmpty) {
        return false;
      } else {
        //解析解析
        phoneCodeSunModel = PhoneCodeModel.fromJson(baseResp.responseData).data;
        return true;
      }
    } else {
      if (baseResp != null) {
        Utils.showToast(baseResp.msg ?? "");
      }
      return false;
    }
  }

  //  设置商家存酒管理员
  Future<bool> setStoreWineBySellerUser(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.set_store_wine_by_seller_user,
            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> setStoreWineBySeller(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.set_store_wine_by_seller,
            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 (params['id'] != null) {
        //修改存酒信息
        if (baseResp.data == 1 || baseResp.data == 0) {
          return true;
        } else {
          Utils.showToast('修改存酒失败,请重试');
        }
      } else {
        if (baseResp.data is Map && baseResp.data['id'] is String) {
          return true;
        } else {
          Utils.showToast('新建存酒失败,请重试');
        }
      }
    } else {
      if (params['id'] != null) {
        Utils.showToast(baseResp.msg ?? '修改存酒失败,请重试');
      } else {
        Utils.showToast(baseResp.msg ?? '新建存酒失败,请重试');
      }
    }
    return false;
  }

  // 获取存酒列表
  Future<bool> getStoreWineBySeller(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_store_wine_by_seller,
            data: params,
            showLoading:
                pageStateAll == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageStateAll = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取存酒列表失败,请重试');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data == false) {
        pageStateAll = PageState.Empty;
      } else {
        wineManageList = WineManageFaModel.fromJson(baseResp.responseData).data;
        if (wineManageList.length == 0) {
          pageStateAll = PageState.Empty;
        } else {
          pageStateAll = PageState.Success;
        }
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg);
      pageStateAll = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  //  取酒出库提交
  Future<bool> setStoreWineBySellerCheck(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.set_store_wine_by_seller_check,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      Utils.showToast('存酒出库失败,请重试');
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      if (baseResp.data is Map && baseResp.data['id'] is String) {
        return true;
      } else {
        Utils.showToast('存酒出库失败,请重试');
      }
    } else {
      Utils.showToast(baseResp.msg ?? '存酒出库失败,请重试');
    }
    return false;
  }

  // 获取存酒详情
  Future<bool> getStoreWineById(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_store_wine_by_id,
            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) {
      if (baseResp.data is Map) {
        wineManageDetail = WineManageModel.fromJson(baseResp.data);
        pageStateDetail = PageState.Success;
      } else {
        pageStateDetail = PageState.Empty;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? '获取存酒详情失败');
      pageStateDetail = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  //  根据存酒ID获取取酒记录
  Future<bool> getStoreWineCheckByWid(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.get_store_wine_check_by_wid,
            data: params,
            showLoading:
                pageStateRecord == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageStateRecord = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取取酒记录失败');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      outWineRecordData =
          OutWineRecordModel.fromJson(baseResp.responseData).data;
      if (outWineRecordData.length == 0) {
        pageStateRecord = PageState.Empty;
      } else {
        pageStateRecord = PageState.Success;
      }

      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? '获取取酒记录失败');
      pageStateRecord = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }

  // 获取取酒记录
  Future<bool> getStoreWineCheckList(
      BuildContext context, Map<String, String> params,
      {bool showLoading = true}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.get_store_wine_check_list,
            data: params,
            showLoading:
                pageStateRecordHome == PageState.Loading ? false : showLoading)
        .catchError((error) {
      pageStateRecordHome = PageState.ConnectivityError;
      print(error.toString());
      Utils.showToast('获取取酒记录失败');
      notifyListeners();
      return false;
    });
    if (baseResp.code == Constant.status_success) {
      outWineRecordHomeData =
          OutWineRecordModel.fromJson(baseResp.responseData).data;
      if (outWineRecordHomeData.length == 0) {
        pageStateRecordHome = PageState.Empty;
      } else {
        pageStateRecordHome = PageState.Success;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? '获取取酒记录失败');
      pageStateRecordHome = PageState.ConnectivityError;
    }
    notifyListeners();
    return false;
  }
}