|
| 1 | +import { useRouter } from "next/router"; |
| 2 | +import React from "react"; |
| 3 | +import { |
| 4 | + Button, |
| 5 | + Table, |
| 6 | + TableBody, |
| 7 | + TableCaption, |
| 8 | + TableCell, |
| 9 | + TableHead, |
| 10 | + TableHeader, |
| 11 | + TableRow, |
| 12 | +} from "ui"; |
| 13 | + |
| 14 | +import { api } from "@/utils/api"; |
| 15 | + |
| 16 | +function AdminLessonsPage() { |
| 17 | + const { data: lessons } = api.lessons.getAll.useQuery(); |
| 18 | + |
| 19 | + const router = useRouter(); |
| 20 | + |
| 21 | + const handleEditLessonBtnClick = async (lessonId: string) => { |
| 22 | + await router.push(`/lessons/${lessonId}/edit`); |
| 23 | + }; |
| 24 | + |
| 25 | + const handleCreateNewBtnClick = async () => { |
| 26 | + await router.push("lessons/create"); |
| 27 | + }; |
| 28 | + |
| 29 | + return ( |
| 30 | + <main className="container mx-auto py-16"> |
| 31 | + <Button onClick={handleCreateNewBtnClick}>Create New Lesson</Button> |
| 32 | + <Table className="text-white"> |
| 33 | + <TableCaption>Full list of availables lessons.</TableCaption> |
| 34 | + <TableHeader> |
| 35 | + <TableRow> |
| 36 | + <TableHead className="w-[100px]">Id</TableHead> |
| 37 | + <TableHead>Lesson Title</TableHead> |
| 38 | + <TableHead>Description</TableHead> |
| 39 | + <TableHead>Lesson Path</TableHead> |
| 40 | + <TableHead>Quiz filename</TableHead> |
| 41 | + <TableHead>Order N°</TableHead> |
| 42 | + <TableHead className="text-right">Actions</TableHead> |
| 43 | + </TableRow> |
| 44 | + </TableHeader> |
| 45 | + <TableBody> |
| 46 | + {lessons?.map((lesson) => ( |
| 47 | + <TableRow key={lesson.id}> |
| 48 | + <TableCell className="font-medium">{lesson.id}</TableCell> |
| 49 | + <TableCell>{lesson.lessonTitle}</TableCell> |
| 50 | + <TableCell>{lesson.lessonDescription}</TableCell> |
| 51 | + <TableCell>{lesson.lessonPath}</TableCell> |
| 52 | + <TableCell>{lesson.quizFileName}</TableCell> |
| 53 | + <TableCell>{lesson.order}</TableCell> |
| 54 | + <TableCell className="text-right"> |
| 55 | + <Button variant="default" onClick={async () => handleEditLessonBtnClick(lesson.id)}> |
| 56 | + Edit |
| 57 | + </Button> |
| 58 | + </TableCell> |
| 59 | + </TableRow> |
| 60 | + ))} |
| 61 | + </TableBody> |
| 62 | + </Table> |
| 63 | + </main> |
| 64 | + ); |
| 65 | +} |
| 66 | + |
| 67 | +export default AdminLessonsPage; |
0 commit comments