erp-platform/ui/src/utils/hooks/useClassroomLogic.ts

55 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-08-26 08:59:57 +00:00
import { ClassroomDto, Role, RoleState } from '@/proxy/classroom/models'
2025-08-26 08:39:09 +00:00
import { useStoreActions, useStoreState } from '@/store/store'
import { useState } from 'react'
export function useClassroomLogic() {
const { user } = useStoreState((state) => state.auth)
const { setUser } = useStoreActions((actions) => actions.auth.user)
const [roleState, setRoleState] = useState<RoleState>('role-selection')
const [currentClass, setCurrentClass] = useState<ClassroomDto | null>(null)
const [allClasses, setAllClasses] = useState<ClassroomDto[]>([])
2025-08-26 08:59:57 +00:00
const handleRoleSelect = (role: Role) => {
2025-08-26 08:39:09 +00:00
setUser({
...user,
role,
})
setRoleState('dashboard')
}
const handleCreateClass = (classData: Partial<ClassroomDto>) => {
const newClass = {
...classData,
id: `class-${Date.now()}`,
teacherId: '',
teacherName: '',
isActive: false,
isScheduled: true,
participantCount: 0,
} as ClassroomDto
setAllClasses((prev) => [...prev, newClass])
}
const handleEditClass = (classId: string, classData: Partial<ClassroomDto>) => {
setAllClasses((prev) => prev.map((c) => (c.id === classId ? { ...c, ...classData } : c)))
}
const handleDeleteClass = (classId: string) => {
setAllClasses((prev) => prev.filter((c) => c.id !== classId))
}
return {
2025-08-26 08:59:57 +00:00
roleState,
setRoleState,
2025-08-26 08:39:09 +00:00
currentClass,
setCurrentClass,
allClasses,
setAllClasses,
handleRoleSelect,
handleCreateClass,
handleEditClass,
handleDeleteClass,
}
}