store_detail_model.dart 4.56 KB
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/seller_table_class_entity.dart';
import 'package:one_key/models/table_class_model.dart';
import 'package:one_key/models/table_fill_up_date_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 StoreDetailModel with ChangeNotifier {
  List<SellerTableClassEntity> tables = []; //商家包间类型
  TableClassSunModel? tableClassSunModel;

  PageState pageState = PageState.Loading;

  ///添加/修改包间分类
  Future<bool> setTableClass(
      BuildContext context, Map<String, String?> params,
      {bool showLoading = false}) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.set_table_class,
          data: params, showLoading: showLoading);
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data != null) {
          return true;
        }
      } else {
        Utils.showToast(baseResp.msg ?? "");
      }
    } catch (error) {
      print(error.toString());
    }

    return false;
  }

  //获取包间分类
  Future<TableClassSunModel?> getTableClassById(
      BuildContext context, Map<String, String?> params) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.get_table_class_by_id,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        tableClassSunModel = TableClassModel.fromJson(
                baseResp.responseData as Map<String, dynamic>)
            .data;
      } else {
        Utils.showToast(baseResp.msg ?? "");
      }
      notifyListeners();
      return tableClassSunModel;
    } catch (error) {
      print(error.toString());
    }
    return null;
  }

  //获取商家包间类型
  Future<List<SellerTableClassEntity>> getSellerTableClass(
      BuildContext context, Map<String, String?> params) async {
    try {
      BaseResp<List?> baseResp = await DioUtil().request<List>(
          context, Method.post, HttpUrl.get_seller_tableclass,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        tables.clear();
        tables.addAll(baseResp.data!.map<SellerTableClassEntity>((value) {
          return SellerTableClassEntity.fromJson(value);
        }).toList());
      } else {
        tables.clear();
        Utils.showToast(baseResp.msg ?? "");
      }
      notifyListeners();
      return tables;
    } catch (error) {
      print(error.toString());
    }
    return [];
  }

  //在线预订配置-置满包间分类
  Future<bool> setTableClassFull(
      BuildContext context, Map<String, String?> params, int index) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.set_table_class_full,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {
        if (params.containsKey('id')) {
          if (baseResp.data == true) {
            tables[index].isFull = null;
            tables[index].fid = null;
            return true;
          }
        } else {
          if (baseResp.data != null) {
            tables[index].isFull = 1;
            tables[index].fid = baseResp.data;
            return true;
          }
        }
        notifyListeners();
      } else {
        Utils.showToast(baseResp.msg ?? "");
      }
    } catch (error) {
      print(error.toString());
    }

    return false;
  }

// 根据指定日期,返回当前商家包间类型置满情况的日期
  Future<List<String>?> getTableFillUpDate(
      BuildContext context, Map<String, String?> params) async {
    try {
      BaseResp<List?> baseResp = await DioUtil().request<List>(
          context, Method.post, HttpUrl.get_table_fill_update,
          data: params, showLoading: false);
      List<String>? fillTimes = []; //置满的时间  2020-11-01
      if (baseResp.code == Constant.status_success) {
        if (baseResp.data!.length > 0) {
          fillTimes = TableFillUpDateModel.fromJson(
                  baseResp.responseData as Map<String, dynamic>)
              .data;
        }
      } else {
        Utils.showToast(baseResp.msg ?? "");
      }

      return fillTimes;
    } catch (error) {
      print(error.toString());
    }
    return null;
  }
}