diff --git a/src/api/tariffs.ts b/src/api/tariffs.ts index e50ddbb..00a6255 100644 --- a/src/api/tariffs.ts +++ b/src/api/tariffs.ts @@ -83,6 +83,8 @@ export interface TariffDetail { // Дневной тариф is_daily: boolean daily_price_kopeks: number + // Режим сброса трафика + traffic_reset_mode: string | null // 'DAY', 'WEEK', 'MONTH', 'NO_RESET', null = глобальная настройка created_at: string updated_at: string | null } @@ -117,6 +119,8 @@ export interface TariffCreateRequest { // Дневной тариф is_daily?: boolean daily_price_kopeks?: number + // Режим сброса трафика + traffic_reset_mode?: string | null } export interface TariffUpdateRequest { @@ -150,6 +154,8 @@ export interface TariffUpdateRequest { // Дневной тариф is_daily?: boolean daily_price_kopeks?: number + // Режим сброса трафика + traffic_reset_mode?: string | null } export interface TariffToggleResponse { diff --git a/src/pages/AdminTariffs.tsx b/src/pages/AdminTariffs.tsx index a83383b..8994e94 100644 --- a/src/pages/AdminTariffs.tsx +++ b/src/pages/AdminTariffs.tsx @@ -155,6 +155,9 @@ function PeriodTariffModal({ tariff, servers, onSave, onClose, isLoading }: Peri tariff?.traffic_topup_packages || {} ) + // Режим сброса трафика + const [trafficResetMode, setTrafficResetMode] = useState(tariff?.traffic_reset_mode || null) + // Новый период для добавления const [newPeriodDays, setNewPeriodDays] = useState(30) const [newPeriodPrice, setNewPeriodPrice] = useState(300) @@ -185,6 +188,7 @@ function PeriodTariffModal({ tariff, servers, onSave, onClose, isLoading }: Peri max_topup_traffic_gb: maxTopupTrafficGb, is_daily: false, daily_price_kopeks: 0, + traffic_reset_mode: trafficResetMode, } onSave(data) } @@ -579,6 +583,44 @@ function PeriodTariffModal({ tariff, servers, onSave, onClose, isLoading }: Peri )} + + {/* Режим сброса трафика */} +
+

Режим сброса трафика

+

+ Определяет, когда сбрасывается использованный трафик у подписчиков этого тарифа +

+
+ {[ + { value: null, label: '🌐 Глобальная настройка', desc: 'Использовать значение из конфига бота' }, + { value: 'DAY', label: '📅 Ежедневно', desc: 'Сброс каждый день' }, + { value: 'WEEK', label: '📆 Еженедельно', desc: 'Сброс каждую неделю' }, + { value: 'MONTH', label: '🗓️ Ежемесячно', desc: 'Сброс каждый месяц' }, + { value: 'NO_RESET', label: '🚫 Никогда', desc: 'Трафик не сбрасывается' }, + ].map(option => ( + + ))} +
+
)} @@ -635,6 +677,9 @@ function DailyTariffModal({ tariff, servers, onSave, onClose, isLoading }: Daily tariff?.traffic_topup_packages || {} ) + // Режим сброса трафика + const [trafficResetMode, setTrafficResetMode] = useState(tariff?.traffic_reset_mode || null) + const [activeTab, setActiveTab] = useState<'basic' | 'servers' | 'extra'>('basic') const handleSubmit = () => { @@ -661,6 +706,7 @@ function DailyTariffModal({ tariff, servers, onSave, onClose, isLoading }: Daily max_topup_traffic_gb: maxTopupTrafficGb, is_daily: true, daily_price_kopeks: dailyPriceKopeks, + traffic_reset_mode: trafficResetMode, } onSave(data) } @@ -969,6 +1015,44 @@ function DailyTariffModal({ tariff, servers, onSave, onClose, isLoading }: Daily )} + + {/* Режим сброса трафика */} +
+

Режим сброса трафика

+

+ Определяет, когда сбрасывается использованный трафик у подписчиков этого тарифа +

+
+ {[ + { value: null, label: '🌐 Глобальная настройка', desc: 'Использовать значение из конфига бота' }, + { value: 'DAY', label: '📅 Ежедневно', desc: 'Сброс каждый день' }, + { value: 'WEEK', label: '📆 Еженедельно', desc: 'Сброс каждую неделю' }, + { value: 'MONTH', label: '🗓️ Ежемесячно', desc: 'Сброс каждый месяц' }, + { value: 'NO_RESET', label: '🚫 Никогда', desc: 'Трафик не сбрасывается' }, + ].map(option => ( + + ))} +
+
)}