import {Box, TextField, FormControlLabel, Checkbox, Typography} from '@mui/material'
import {Create} from '@refinedev/mui'
import {useForm} from '@refinedev/react-hook-form'
import {Controller} from 'react-hook-form'

export const RouteCreate = () => {
  const {
    saveButtonProps,
    refineCore: {formLoading},
    register,
    control,
    formState: {errors},
  } = useForm({
    refineCoreProps: {
      resource: 'route/',
    },
  })

  return (
    <Create isLoading={formLoading} saveButtonProps={saveButtonProps}>
      <Box component="form" sx={{display: 'flex', flexDirection: 'column'}} autoComplete="off">
        <TextField
          {...register('carrier_id', {
            required: 'Это поле является обязательным',
            valueAsNumber: true,
          })}
          error={!!(errors as any)?.carrier_id}
          helperText={(errors as any)?.carrier_id?.message}
          margin="normal"
          fullWidth
          InputLabelProps={{shrink: true}}
          type="number"
          label={'ID перевозчика'}
          name="carrier_id"
        />
        <TextField
          {...register('route_number', {
            required: 'Это поле является обязательным',
            setValueAs: (value) => String(value),
          })}
          error={!!(errors as any)?.route_number}
          helperText={(errors as any)?.route_number?.message}
          margin="normal"
          fullWidth
          InputLabelProps={{shrink: true}}
          type="text"
          label={'Номер маршрута'}
          name="route_number"
        />
        <Controller
          name="route_direction" // boolean
          control={control}
          defaultValue={false}
          render={({field}: {field: any}) => <FormControlLabel label="Прямой маршрут?" control={<Checkbox {...field} checked={field.value} onChange={(e) => field.onChange(e.target.checked)} />} />}
        />

        <Typography variant="caption" color="textSecondary" sx={{mt: 0, mb: 1}}>
          (Прямой / Обратный)
        </Typography>

        <TextField
          {...register('path', {
            required: 'Это поле является обязательным',
            setValueAs: (value) => String(value),
          })}
          error={!!(errors as any)?.path}
          helperText={(errors as any)?.path?.message}
          margin="normal"
          fullWidth
          InputLabelProps={{shrink: true}}
          type="text"
          label={'Путь'}
          name="path"
        />
      </Box>
    </Create>
  )
}