plan_dish_provider.dart 9.36 KB
import 'dart:ffi';

import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/plan_cook_by_rid_model.dart';
import 'package:one_key/models/plan_cook_list_model.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/utils/utils.dart';

import '../constant/constant.dart';
import '../constant/error.dart';
import '../models/cookbook_model.dart';
import '../net/http_url.dart';

/**
 * 预排菜
 */
class PlanDishProvider extends ChangeNotifier {
  PageState pageStateHome = PageState.Loading;
  PageState pageState = PageState.Loading;
  PageState pageStateStore = PageState.Success;
  PageState pageStateMine = PageState.Success;
  PageState pageStateMy = PageState.Loading;

  PageState pageStateMenu = PageState.Loading;

  List<MenuModel> menuModel; //菜品数据
  List<MenuModel> menuModelForManager = []; //经理点菜菜品数据

  List<SunListPlan> allList = []; //排菜套餐列表--全部
  List<SunListPlan> storeList = []; //排菜套餐列表--店铺
  List<SunListPlan> mineList = []; //排菜套餐列表--我的

  List<SunListPlan> storeListTemp = []; //排菜套餐列表--店铺
  List<SunListPlan> mineListTemp = []; //排菜套餐列表--我的
  String planId;
  PlanCookByRidSunModel planCookByRidSunModel; //订单排菜的数据
  // List<CookbookCategorySunModel> categorySunModel; //菜品分类数据
  // List<CookbookSpecSunModel> specSunModel; //计价单位

  // CookbookOneSunModel cookbookOneSunModel;

  ///分类下所有菜品列表(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();
      return false;
    });
    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;
      }
      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? "");
      pageState = PageState.ConnectivityError;
      notifyListeners();
      return false;
    }
  }

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

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data is Map) {
        return baseResp.data['id'];
      }
      // notifyListeners();

    } else {
      Utils.showToast(baseResp.msg ?? "");
      // pageState = PageState.ConnectivityError;
      // notifyListeners();

    }
    return null;
  }

  /// 根据预定ID获取排菜
  getPlanCookByRid(BuildContext context, Map<String, String> params,
      {showLoading = false}) async {
    BaseResp<dynamic> baseResp = await DioUtil()
        .request<dynamic>(context, Method.get, HttpUrl.get_plan_cook_by_rid,
            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();
      return false;
    });
    // menuModel = [];

    if (baseResp != null && baseResp.code == Constant.status_success) {
      if (baseResp.data is Bool) {
        // planCookByRidSunModel = PlanCookByRidSunModel();

      } else {
        planCookByRidSunModel =
            PlanCookByRidModel.fromJson(baseResp.responseData).data;
        if (planCookByRidSunModel != null) {
          planId = baseResp.data['id'];
        }
      }

      //   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;
      // }
      // notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? "");
      // pageState = PageState.ConnectivityError;
      // notifyListeners();
      return false;
    }
  }

  ///添加排菜/套餐

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

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

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

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

  ///删除排菜/套餐列表

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

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

  ///排菜/套餐列表

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

    if (baseResp != null && baseResp.code == Constant.status_success) {
      PlanCookListSunModel planCookListSunModel =
          PlanCookListModel.fromJson(baseResp.responseData).data;
      PlanCookListSunModel planCookListSunModel1 =
          PlanCookListModel.fromJson(baseResp.responseData).data;

      allList = [];

      storeList = List.from(planCookListSunModel.packageList);
      mineList = List.from(planCookListSunModel.plancookList);
      allList.addAll(storeList);
      allList.addAll(mineList);
      storeListTemp = planCookListSunModel1.packageList;
      mineListTemp = planCookListSunModel1.plancookList;
      if (storeList.length == 0) {
        pageStateStore = PageState.Empty;
      } else {
        pageStateStore = PageState.Success;
      }
      if (mineList.length == 0) {
        pageStateMine = PageState.Empty;
      } else {
        pageStateMine = PageState.Success;
      }
      if (allList.length == 0) {
        pageStateHome = PageState.Empty;
      } else {
        pageStateHome = PageState.Success;
      }

      notifyListeners();
      return true;
    } else {
      Utils.showToast(baseResp.msg ?? "");
      return false;
    }
  }
}