import type { Product } from '@/models/products' import { isOutsideProductActivationWindow } from '@/utils/storeHours' type TradeOpenProduct = Pick | null | undefined function asBool(value: boolean | number | null | undefined) { return value === true || Number(value) === 1 } export function isProductBuyOpen(product: TradeOpenProduct) { if (!product) return true return asBool(product?.open_buy) } export function isProductSellOpen(product: TradeOpenProduct) { if (!product) return true return asBool(product?.open_sell) } export function isAnyProductTradeOpen(product: TradeOpenProduct) { return isProductBuyOpen(product) || isProductSellOpen(product) } export function isProductTradeOpen(product: TradeOpenProduct, isBuy: boolean) { return isBuy ? isProductBuyOpen(product) : isProductSellOpen(product) } /** ساعت فعال‌سازی محصول: بازهٔ auto_open/auto_close، بعد فلگ استریم */ export function isProductTradingHoursOpen( product?: { show?: boolean trade_open?: boolean auto_open_at?: string | null auto_close_at?: string | null } | null, ) { if (!product) return false if (isOutsideProductActivationWindow(product)) return false if (typeof product.trade_open === 'boolean') return product.trade_open return product.show === true } export function productHoursClosedMessage() { return 'این محصول در حال حاضر خارج از ساعت کاری است.' } /** تب اولیه با توجه به query و وضعیت باز/بسته خرید و فروش */ export function resolveProductTradeIsBuy(product: TradeOpenProduct, routeState?: string | null) { const wantSell = routeState === 'sell' const wantBuy = routeState === 'buy' const buyOpen = isProductBuyOpen(product) const sellOpen = isProductSellOpen(product) if (wantSell && sellOpen) return false if (wantBuy && buyOpen) return true if (buyOpen) return true if (sellOpen) return false return true } export function productTradeClosedMessage(isBuy: boolean) { return isBuy ? 'خرید این محصول در این لحظه مقدور نمی‌باشد' : 'فروش این محصول در این لحظه مقدور نمی‌باشد' }