import { useMutation } from '@tanstack/react-query' import { useState } from 'react' import { useTranslation } from 'react-i18next' import type { OverrideMode, OverrideRecurrence } from '@/shared/api/types' import { Button } from '@/shared/ui/button' import { Input } from '@/shared/ui/input' import { Label } from '@/shared/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/shared/ui/select' import { createOverride } from '../api' import { NumberField } from './fields' export function OverrideForm({ channelId, options, onCreated, onError, }: { channelId: string options: { id: string; name: string }[] onCreated: () => void onError: (e: unknown) => void }) { const { t } = useTranslation() const [mode, setMode] = useState('Exclusive') const [recurrence, setRecurrence] = useState('OneTime') const [showId, setShowId] = useState('') const [weight, setWeight] = useState(1) const [start, setStart] = useState('') const [end, setEnd] = useState('') // Weekly: день недели (0=Вс..6=Сб) + окна времени суток «HH:MM». const [dayOfWeek, setDayOfWeek] = useState(6) const [startTime, setStartTime] = useState('') const [endTime, setEndTime] = useState('') const toMinutes = (hhmm: string) => { const [h, m] = hhmm.split(':').map(Number) return h * 60 + m } const weekly = recurrence === 'Weekly' const create = useMutation({ mutationFn: () => createOverride( channelId, weekly ? { mode, recurrence, dayOfWeek, startMinute: toMinutes(startTime), endMinute: toMinutes(endTime), shows: [{ showId, weight }], } : { mode, recurrence, startsAtUtc: new Date(start).toISOString(), endsAtUtc: new Date(end).toISOString(), shows: [{ showId, weight }], }, ), onSuccess: () => { setShowId('') setStart('') setEnd('') setStartTime('') setEndTime('') onCreated() }, onError, }) const valid = weekly ? showId && startTime && endTime && toMinutes(endTime) > toMinutes(startTime) : showId && start && end && new Date(end) > new Date(start) return (
{mode === 'Boost' && ( )} {weekly ? ( <>
setStartTime(e.target.value)} className="w-32" />
setEndTime(e.target.value)} className="w-32" />
) : ( <>
setStart(e.target.value)} className="w-60" />
setEnd(e.target.value)} className="w-60" />
)}
) }