diff --git a/src/locales/en.json b/src/locales/en.json index 6fe3c86..f3b2684 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1318,6 +1318,11 @@ "dailyDeductionDesc": "Charged daily from user's balance", "dailyPriceRequired": "Enter a price per day greater than 0", "cannotSave": "Cannot save tariff:", + "statusTitle": "Tariff Status", + "isActiveLabel": "Active", + "isActiveHint": "Inactive tariffs are not shown to users", + "isTrialLabel": "Trial tariff", + "isTrialHint": "Available for free trial period", "validation": { "nameRequired": "Enter tariff name", "nameLength": "Name must be 2 to 50 characters", diff --git a/src/locales/fa.json b/src/locales/fa.json index 2467a55..420f42e 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1088,6 +1088,11 @@ "dailyDeductionDesc": "هر روز از موجودی کاربر کسر می‌شود", "dailyPriceRequired": "قیمت روزانه بزرگتر از 0 را وارد کنید", "cannotSave": "امکان ذخیره تعرفه وجود ندارد:", + "statusTitle": "وضعیت تعرفه", + "isActiveLabel": "فعال", + "isActiveHint": "تعرفه‌های غیرفعال به کاربران نمایش داده نمی‌شوند", + "isTrialLabel": "تعرفه آزمایشی", + "isTrialHint": "برای دوره آزمایشی رایگان در دسترس است", "validation": { "nameRequired": "نام تعرفه را وارد کنید", "nameLength": "نام باید ۲ تا ۵۰ کاراکتر باشد", diff --git a/src/locales/ru.json b/src/locales/ru.json index 884ba1d..0e2a33b 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1829,6 +1829,11 @@ "dailyDeductionDesc": "Списывается ежедневно с баланса пользователя", "dailyPriceRequired": "Укажите цену за день больше 0", "cannotSave": "Невозможно сохранить тариф:", + "statusTitle": "Статус тарифа", + "isActiveLabel": "Активен", + "isActiveHint": "Неактивные тарифы не отображаются пользователям", + "isTrialLabel": "Триальный тариф", + "isTrialHint": "Доступен для бесплатного пробного периода", "validation": { "nameRequired": "Введите название тарифа", "nameLength": "Название должно быть от 2 до 50 символов", diff --git a/src/locales/zh.json b/src/locales/zh.json index 345b1c0..1a86823 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1125,6 +1125,11 @@ "dailyDeductionDesc": "每天从用户余额中扣除", "dailyPriceRequired": "请输入大于0的每日价格", "cannotSave": "无法保存套餐:", + "statusTitle": "套餐状态", + "isActiveLabel": "已激活", + "isActiveHint": "未激活的套餐不会显示给用户", + "isTrialLabel": "试用套餐", + "isTrialHint": "可用于免费试用期", "validation": { "nameRequired": "请输入套餐名称", "nameLength": "名称必须为2到50个字符", diff --git a/src/pages/AdminTariffCreate.tsx b/src/pages/AdminTariffCreate.tsx index 156d302..f026374 100644 --- a/src/pages/AdminTariffCreate.tsx +++ b/src/pages/AdminTariffCreate.tsx @@ -97,6 +97,7 @@ export default function AdminTariffCreate() { // Form state - matches bot fields const [name, setName] = useState(''); const [description, setDescription] = useState(''); + const [isActive, setIsActive] = useState(true); const [trafficLimitGb, setTrafficLimitGb] = useState(100); const [deviceLimit, setDeviceLimit] = useState(1); const [devicePriceKopeks, setDevicePriceKopeks] = useState(0); @@ -156,6 +157,7 @@ export default function AdminTariffCreate() { setTariffType(data.is_daily ? 'daily' : 'period'); setName(data.name); setDescription(data.description || ''); + setIsActive(data.is_active ?? true); setTrafficLimitGb(data.traffic_limit_gb ?? 100); setDeviceLimit(data.device_limit || 1); setDevicePriceKopeks(data.device_price_kopeks || 0); @@ -200,6 +202,7 @@ export default function AdminTariffCreate() { const data: TariffCreateRequest | TariffUpdateRequest = { name, description: description || undefined, + is_active: isActive, traffic_limit_gb: toNumber(trafficLimitGb, 100), device_limit: toNumber(deviceLimit, 1), device_price_kopeks: @@ -703,50 +706,6 @@ export default function AdminTariffCreate() { )} - - {/* Promo Groups */} -
-

- {t('admin.tariffs.promoGroupsTitle')} -

-

{t('admin.tariffs.promoGroupsHint')}

- {promoGroups.length === 0 ? ( -

{t('admin.tariffs.noPromoGroups')}

- ) : ( -
- {promoGroups.map((group) => { - const isSelected = selectedPromoGroups.includes(group.id); - return ( - - ); - })} -
- )} -
)} @@ -1003,6 +962,77 @@ export default function AdminTariffCreate() { ))} + + {/* Promo Groups */} +
+

+ {t('admin.tariffs.promoGroupsTitle')} +

+

{t('admin.tariffs.promoGroupsHint')}

+ {promoGroups.length === 0 ? ( +

{t('admin.tariffs.noPromoGroups')}

+ ) : ( +
+ {promoGroups.map((group) => { + const isSelected = selectedPromoGroups.includes(group.id); + return ( + + ); + })} +
+ )} +
+ + {/* Tariff status */} +
+

{t('admin.tariffs.statusTitle')}

+ {/* Active toggle */} +
+
+ + {t('admin.tariffs.isActiveLabel')} + +

{t('admin.tariffs.isActiveHint')}

+
+ +
+
)} diff --git a/src/pages/AdminTariffs.tsx b/src/pages/AdminTariffs.tsx index b05d426..0d27f3b 100644 --- a/src/pages/AdminTariffs.tsx +++ b/src/pages/AdminTariffs.tsx @@ -44,6 +44,16 @@ const XIcon = () => ( ); +const GiftIcon = () => ( + + + +); + export default function AdminTariffs() { const { t } = useTranslation(); const navigate = useNavigate(); @@ -210,7 +220,7 @@ export default function AdminTariffs() { }`} title={t('admin.tariffs.toggleTrial')} > - T + {/* Edit */}