import { ProgramDataProps } from '@/pages/dashboard/create-program'; import { difficultyRating } from '@/utils/data/exercise-categories'; import { Checkbox, FormControlLabel } from '@mui/material'; import { useState } from 'react'; type DifficultyCheckboxProps = { setProgramData: React.Dispatch<React.SetStateAction<ProgramDataProps>>; selectedLevels: ProgramDataProps["difficulty"]; } const DifficultyCheckbox = ({ setProgramData, selectedLevels }: DifficultyCheckboxProps) => { const handleLevelChange = (event: React.ChangeEvent<HTMLInputElement>) => { const level = parseInt(event.target.value) if (level === 0) { if (selectedLevels.includes(0)) { setProgramData(prevState => ({ ...prevState, difficulty: [] })); } else { setProgramData(prevState => ({ ...prevState, difficulty: [1, 2, 3, 4, 0] })); } } else if (selectedLevels.length === 0) { setProgramData(prevState => ({ ...prevState, difficulty: [level] })); } else if (selectedLevels.length === 1) { const currentLevel = selectedLevels[0] if (Math.abs(currentLevel - level) === 1) { setProgramData(prevState => ({ ...prevState, difficulty: [...prevState.difficulty, level] })); } else { setProgramData(prevState => ({ ...prevState, difficulty: [level] })); } } else if (selectedLevels.length === 2) { const currentLevel1 = selectedLevels[0] const currentLevel2 = selectedLevels[1] if (Math.abs(currentLevel1 - level) === 1 && Math.abs(currentLevel2 - level) === 1) { setProgramData(prevState => ({ ...prevState, difficulty: [...prevState.difficulty, level] })); } else { const adjacentLevel = Math.abs(currentLevel1 - level) === 1 ? currentLevel1 : currentLevel2 setProgramData(prevState => ({ ...prevState, difficulty: [adjacentLevel, level] })); } } else { setProgramData(prevState => ({ ...prevState, difficulty: [level] })); } } return ( <> {difficultyRating.map((level, index) => ( <FormControlLabel key={index} value={level} control={ <Checkbox checked={selectedLevels.includes(level)} onChange={handleLevelChange} /> } label={level} /> ))} </> ) } export default DifficultyCheckbox