'customer.login', 'name' => 'ورود کاربر'], ['key' => 'order.buy_success', 'name' => 'خرید موفق'], ['key' => 'order.sell_success', 'name' => 'فروش موفق'], ['key' => 'wallet.rial_charge', 'name' => 'شارژ ریالی کیف'], ['key' => 'withdraw.request', 'name' => 'درخواست برداشت ریالی'], ]; /** @return array */ public function toArray(): array { return [ 'triggers' => [ ['key' => self::TRIGGER_SCHEDULE, 'name' => 'زمان‌دار (هر N روز)'], ['key' => self::TRIGGER_EVENT, 'name' => 'رویداد (سر ضرب / تأخیر)'], ['key' => self::TRIGGER_PRICE, 'name' => 'حرکت قیمت'], ], 'price_windows' => [ ['key' => 'calendar_day', 'name' => 'در یک روز (از شروع امروز)'], ['key' => 'from_last', 'name' => 'از آخرین ارسال (پله‌ای)'], ], 'audience_modes' => [ ['key' => 'all', 'name' => 'همه کاربران خانگی'], ['key' => 'filter', 'name' => 'با فیلتر شرط'], ], 'events' => self::EVENTS, 'channels' => [ ['key' => self::CHANNEL_SMS, 'name' => 'پیامک'], ['key' => self::CHANNEL_IN_APP, 'name' => 'اعلان داخل اپ'], ], 'operators' => [ ['key' => 'eq', 'name' => 'مساوی'], ['key' => 'gt', 'name' => 'بزرگ‌تر'], ['key' => 'gte', 'name' => 'بزرگ‌تر یا مساوی'], ['key' => 'lt', 'name' => 'کوچک‌تر'], ['key' => 'lte', 'name' => 'کوچک‌تر یا مساوی'], ['key' => 'not', 'name' => 'نامساوی'], ], 'fields' => $this->fields(), 'products' => Product::query() ->orderBy('id') ->get(['id', 'title']) ->map(fn ($p) => ['id' => (int) $p->id, 'name' => (string) ($p->title ?: ('#'.$p->id))]) ->values() ->all(), 'hours' => collect(range(0, 23))->map(fn ($h) => [ 'key' => $h, 'name' => str_pad((string) $h, 2, '0', STR_PAD_LEFT).':00', ])->all(), ]; } /** @return list> */ public function fields(): array { return [ [ 'key' => 'never_login', 'group' => 'ورود و بازدید', 'name' => 'هرگز وارد اپ نشده', 'inputs' => [], ], [ 'key' => 'last_seen_older_days', 'group' => 'ورود و بازدید', 'name' => 'آخرین بازدید قدیمی‌تر از N روز', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'last_seen_within_days', 'group' => 'ورود و بازدید', 'name' => 'آخرین بازدید در N روز اخیر', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'is_legal', 'group' => 'حساب کاربر', 'name' => 'وضعیت احراز هویت', 'inputs' => [ ['key' => 'value', 'type' => 'select', 'label' => 'وضعیت احراز', 'options' => [ ['key' => 0, 'name' => 'احراز نشده'], ['key' => 1, 'name' => 'احراز خودکار'], ['key' => 2, 'name' => 'تأیید ادمین'], ]], ], ], [ 'key' => 'active', 'group' => 'حساب کاربر', 'name' => 'حساب فعال / غیرفعال', 'inputs' => [ ['key' => 'value', 'type' => 'select', 'label' => 'وضعیت حساب', 'options' => [ ['key' => 1, 'name' => 'فعال'], ['key' => 0, 'name' => 'غیرفعال'], ]], ], ], [ 'key' => 'registered_older_days', 'group' => 'حساب کاربر', 'name' => 'ثبت‌نام قدیمی‌تر از N روز', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'registered_within_days', 'group' => 'حساب کاربر', 'name' => 'ثبت‌نام در N روز اخیر', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'orders_count', 'group' => 'حساب کاربر', 'name' => 'تعداد سفارش', 'inputs' => [ ['key' => 'op', 'type' => 'operator', 'label' => 'مقایسه'], ['key' => 'value', 'type' => 'number', 'label' => 'تعداد'], ], ], [ 'key' => 'wallet_cash', 'group' => 'کیف پول', 'name' => 'موجودی ریال کیف اصلی', 'inputs' => [ ['key' => 'op', 'type' => 'operator', 'label' => 'مقایسه'], ['key' => 'value', 'type' => 'number', 'label' => 'مبلغ (ریال)'], ], ], [ 'key' => 'wallet_gold', 'group' => 'کیف پول', 'name' => 'موجودی طلا کیف اصلی', 'inputs' => [ ['key' => 'op', 'type' => 'operator', 'label' => 'مقایسه'], ['key' => 'value', 'type' => 'number', 'label' => 'مقدار (گرم)'], ], ], [ 'key' => 'never_ordered', 'group' => 'خرید و فروش', 'name' => 'هرگز معامله موفق نداشته', 'inputs' => [], ], [ 'key' => 'has_buy_within_days', 'group' => 'خرید و فروش', 'name' => 'خرید موفق در N روز اخیر', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'has_sell_within_days', 'group' => 'خرید و فروش', 'name' => 'فروش موفق در N روز اخیر', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'last_order_older_days', 'group' => 'خرید و فروش', 'name' => 'آخرین معامله موفق قدیمی‌تر از N روز', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'has_deposit_within_days', 'group' => 'شارژ کیف', 'name' => 'شارژ ریالی در N روز اخیر', 'inputs' => [ ['key' => 'value', 'type' => 'number', 'label' => 'تعداد روز'], ], ], [ 'key' => 'has_withdraw_pending', 'group' => 'برداشت', 'name' => 'برداشت در انتظار دارد', 'inputs' => [], ], ]; } public function fieldKeys(): array { return array_column($this->fields(), 'key'); } }