order_food_provider.dart 3.82 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/created_order_model.dart';
import 'package:one_key/models/reserve_detail_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 OrderFoodProvider extends ChangeNotifier {
  PageState pageState = PageState.Loading;
  List<Map<String?, List<Cookbooklist>>> orderList = []; //已点菜单信息
  CreatedOrderSunModel? createdOrderSunModel;
  ReserveDetailSunModel? reserveDetailSunModel;
  String showTable = '';

  ///顾客扫桌码点餐-扫码创建订单
  getOrderFoodData(BuildContext context, Map<String, String?> params,
      {isShowLoading = true}) async {
    if (isShowLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    try {
      BaseResp<Map<String, dynamic>?> baseResp = await DioUtil()
          .request<Map<String, dynamic>>(
              context, Method.post, HttpUrl.get_order_food,
              data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data!.isEmpty) {
          pageState = PageState.Empty;
        } else {
          pageState = PageState.Success;
          createdOrderSunModel = CreatedOrderModel.fromJson(
                  baseResp.responseData as Map<String, dynamic>)
              .data;
          List<Cookbooklist>? cookbooklist = CreatedOrderModel.fromJson(
                  baseResp.responseData as Map<String, dynamic>)
              .data!
              .cookbooklist!
              .cast<Cookbooklist>();
          Set keysSet = Set();
          for (Cookbooklist item in cookbooklist) {
            keysSet.add(item.className);
          }
          List keysList = [];
          keysList.addAll(keysSet);

          for (int i = 0; i < keysList.length; i++) {
            Map<String?, List<Cookbooklist>> father = {};
            List<Cookbooklist> sun = [];
            for (int j = 0; j < cookbooklist.length; j++) {
              if (keysList[i] == cookbooklist[j].className) {
                sun.add(cookbooklist[j]);
              }
            }
            if (sun.length > 0) {
              father[keysList[i]] = sun;
              orderList.add(father);
            }
          }
        }
        notifyListeners();
      } else {
        pageState = PageState.ConnectivityError;
        notifyListeners();

        Utils.showToast(baseResp.msg ?? "");
      }
    } catch (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();
    }
  }

  ///订座详情页面
  getTableInfoData(BuildContext context, Map<String, String?> params,
      {isShowLoading = true}) async {
    try {
      BaseResp<Map<String, dynamic>?> baseResp = await DioUtil()
          .request<Map<String, dynamic>>(
              context, Method.post, HttpUrl.get_reserve_detail,
              data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data!.isEmpty) {
        } else {
          //解析解析
          reserveDetailSunModel = ReserveDetailModel.fromJson(
                  baseResp.responseData as Map<String, dynamic>)
              .data;
        }
        notifyListeners();
      } else {
        Utils.showToast(baseResp.msg ?? "");
      }
    } catch (error) {}
  }
}