diff --git a/src/pages/AdminPromoOfferTemplateEdit.tsx b/src/pages/AdminPromoOfferTemplateEdit.tsx index 21c7c0b..a3a4851 100644 --- a/src/pages/AdminPromoOfferTemplateEdit.tsx +++ b/src/pages/AdminPromoOfferTemplateEdit.tsx @@ -8,6 +8,7 @@ import { OFFER_TYPE_CONFIG, OfferType, } from '../api/promoOffers'; +import { serversApi } from '../api/servers'; import { AdminBackButton } from '../components/admin'; import { createNumberInputHandler, toNumber } from '../utils/inputHelpers'; @@ -31,6 +32,14 @@ export default function AdminPromoOfferTemplateEdit() { const [testDurationHours, setTestDurationHours] = useState(0); const [isActive, setIsActive] = useState(true); const [isTestAccess, setIsTestAccess] = useState(false); + const [selectedSquadUuids, setSelectedSquadUuids] = useState([]); + + // Fetch available servers for test_access squad selection + const { data: serversData } = useQuery({ + queryKey: ['admin-servers-for-promo'], + queryFn: () => serversApi.getServers(true), + enabled: isTestAccess, + }); // Query template const { data: templatesData, isLoading } = useQuery({ @@ -52,6 +61,7 @@ export default function AdminPromoOfferTemplateEdit() { setTestDurationHours(template.test_duration_hours || 0); setIsActive(template.is_active); setIsTestAccess(template.offer_type === 'test_access'); + setSelectedSquadUuids(template.test_squad_uuids || []); } }, [template]); @@ -78,6 +88,7 @@ export default function AdminPromoOfferTemplateEdit() { const discountHours = toNumber(activeDiscountHours); if (isTestAccess) { data.test_duration_hours = testHours > 0 ? testHours : undefined; + data.test_squad_uuids = selectedSquadUuids; } else { data.active_discount_hours = discountHours > 0 ? discountHours : undefined; } @@ -201,22 +212,70 @@ export default function AdminPromoOfferTemplateEdit() { {isTestAccess ? ( -
- - -

- {t('admin.promoOffers.form.defaultZero')} -

-
+ <> +
+ + +

+ {t('admin.promoOffers.form.defaultZero')} +

+
+
+ + {serversData?.servers && serversData.servers.length > 0 ? ( +
+ {serversData.servers.map((server) => ( + + ))} +
+ ) : ( +

+ {t('admin.promoOffers.form.noServers', 'Нет доступных серверов')} +

+ )} + {selectedSquadUuids.length === 0 && ( +

+ {t( + 'admin.promoOffers.form.selectSquadHint', + 'Выберите хотя бы один сервер для тестового доступа', + )} +

+ )} +
+ ) : (