menu_provider.dart 6.83 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/cookbook_category_model.dart';
import 'package:one_key/models/cookbook_model.dart';
import 'package:one_key/models/cookbook_one_model.dart';
import 'package:one_key/models/cookbook_spec_model.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/utils/utils.dart';

class MenuManageProvider extends ChangeNotifier {
  PageState pageState = PageState.Loading;
  PageState pageStateCategory = PageState.Loading;
  List<MenuModel> menuModel; //菜品数据
  List<CookbookCategorySunModel> categorySunModel; //菜品分类数据
  List<CookbookSpecSunModel> specSunModel; //计价单位

  CookbookOneSunModel cookbookOneSunModel;

  /// 获取单个菜品信息
  getCookbookById(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_cookbook_by_id,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });
    if (baseResp != null && baseResp.code == Constant.status_success) {
      cookbookOneSunModel =
          CookbookOneModel.fromJson(baseResp.responseData).data.data;
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
  }

  /// 获取商家计价单位
  getSpecBySellerid(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_spec_by_sellerid,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });
    specSunModel = [];
    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data is List) {
        if (baseResp.data.length > 0) {
          specSunModel = CookbookSpecModel.fromJson(baseResp.responseData).data;
        }
      } else {}
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
    notifyListeners();
  }

  ///分类下所有菜品列表(1.传orderid顾客端获取带订单信息的 否则不传

  getCookbookByClass(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_cookbook_by_class,
            data: params, showLoading: showLoading)
        .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();
    });
    menuModel = [];

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data[0]['list'] == '') {
        pageState = PageState.Empty;
      } else {
        List menu = baseResp.data[0]['list'];
        for (int i = 0; i < menu.length; i++) {
          menuModel.add(MenuModel.fromJson(menu[i]));
        }
        print(menuModel);
        pageState = PageState.Success;
      }
    } else {
      Utils.showToast(baseResp.msg ?? "");
      pageState = PageState.ConnectivityError;
    }
    notifyListeners();
  }

  ///获取商家所有菜品分类
  getCookbookClassBySellerId(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(
            context, Method.get, HttpUrl.get_cookbook_by_seller_id,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageStateCategory = PageState.ConnectivityError;
            break;
          case 2:
            pageStateCategory = PageState.ConnectivityTimeOut;
            break;
          default:
            pageStateCategory = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
    });
    categorySunModel = [];
    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data is List) {
        if (baseResp.data.length == 0) {
          pageStateCategory = PageState.Empty;
        } else {
          categorySunModel =
              CookbookCategoryModel.fromJson(baseResp.responseData).data;
          pageStateCategory = PageState.Success;
        }
      } else {
        pageStateCategory = PageState.Empty;
      }
    } else {
      Utils.showToast(baseResp.msg ?? "");
      pageStateCategory = PageState.ConnectivityError;
    }
    notifyListeners();
  }

  ///删除菜品分类

  Future<bool> delCookbookClassById(
      BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.del_cookbook_by_id,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data['succ'] == 1) {
        return true;
      }
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
    return false;
  }

  ///添加菜品

  Future<bool> addCookbook(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.add_cookbook,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data['data'] != '') {
        return true;
      }
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
    return false;
  }

  ///添加菜品分类信息

  Future<bool> addCookbookClass(
      BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.add_cookbook_class,
            data: params, showLoading: showLoading)
        .catchError((error) {
      print(error.toString());
    });

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data['data'] != '') {
        return true;
      }
    } else {
      Utils.showToast(baseResp.msg ?? "");
    }
    return false;
  }
}