import dayjs from "dayjs";
import { getStatus, getCallToBookStatus } from "./components/CalendarDate/state";

/**
 * @title: 格式化日期
 * @description: 
 * @param {string} date
 * @param {string} format
 * @return {*}
 * @Author: WangHan
 * @Date: 2025-01-14 15:19
 */
export var formatDate = function formatDate(date, format) {
  return dayjs(date).format(format || "YYYY-MM-DD");
};

/**
 * @title: 获取列表中包含了几个月
 * @description: 
 * @param {Dayjs} date
 * @return {*}
 * @Author: WangHan
 * @Date: 2025-01-14 15:25
 */
export var getMonthIndex = function getMonthIndex(lists) {
  if (!lists.length) return [];
  var arr = [0];

  // 获取第一个日期的月份
  var firstMonth = formatDate(lists[0], 'YYYY-MM');

  // 遍历列表，获取每个月份，如果和第一个月份不一样，则添加到数组中
  var index = lists.findIndex(function (item) {
    return formatDate(item, 'YYYY-MM') !== firstMonth;
  });

  // 如果找到了，则添加到数组中
  if (index !== -1) {
    arr.push(index);
  }
  return arr;
};

/**
 * @title: 获取当前状态
 * @description: 
 * @param {any} dateLimitData
 * @param {any} item
 * @param {any} cutTime
 * @return {*}
 * @Author: WangHan
 * @Date: 2025-01-14 15:33
 */
export var getCurrentStatus = function getCurrentStatus(dateLimitData, item, cutTime) {
  var _getStatus = getStatus(dateLimitData, item, cutTime),
    status = _getStatus.status,
    disabled = _getStatus.disabled;
  var isShowCallToBook = getCallToBookStatus(item, dateLimitData, cutTime);

  // 在当天和cut-off time的日期之前这段日期，如果某天还存在可预约的商品，才显示Call to book。
  var statusTypes = ['lots_of_space', 'filling_up_fast'];

  // 如果显示Call to book，则状态为call_to_book，否则为status
  var _isShowCallToBook = isShowCallToBook && statusTypes.includes(status);
  var currentStatus = _isShowCallToBook ? 'call_to_book' : status;
  return {
    currentStatus: currentStatus,
    disabled: disabled
  };
};