From e1f1ee5ea2acfab4179df3070d9c87c48b089e22 Mon Sep 17 00:00:00 2001 From: priyanshuvish Date: Tue, 14 Apr 2026 13:56:14 +0530 Subject: [PATCH] replaces course and programme api for learner --- src/pages/Learners/LearnersPage.tsx | 72 ++++++++++++++++++++++------- src/redux/services/learnersApi.ts | 11 ++--- 2 files changed, 59 insertions(+), 24 deletions(-) diff --git a/src/pages/Learners/LearnersPage.tsx b/src/pages/Learners/LearnersPage.tsx index 4228452..6e7b194 100644 --- a/src/pages/Learners/LearnersPage.tsx +++ b/src/pages/Learners/LearnersPage.tsx @@ -42,7 +42,6 @@ import { useBulkAssignProgrammeMutation, useBulkRevokeCourseMutation, useBulkCreateLearnersForHrMutation, - useGetCoursesForHrQuery, useGetAssignedCoursesForOrganizationQuery, useGetLearnerCoursesQuery, useGetProgrammesForHrQuery, @@ -91,6 +90,8 @@ const LearnersPage: React.FC = () => { const [showEditDrawer, setShowEditDrawer] = useState(false); const [selectedProgrammeId, setSelectedProgrammeId] = useState(''); const [selectedCourseId, setSelectedCourseId] = useState(''); + const [courseStartDate, setCourseStartDate] = useState(''); + const [courseEndDate, setCourseEndDate] = useState(''); const [assignError, setAssignError] = useState(''); const [assignCourseError, setAssignCourseError] = useState(''); const [editingEmployee, setEditingEmployee] = useState(null); @@ -169,14 +170,13 @@ const LearnersPage: React.FC = () => { offset: 0, }); const { - data: coursesResponse, - isLoading: coursesLoading, - refetch: refetchCourses - } = useGetCoursesForHrQuery({ - limit: 100, - offset: 0, - }); - + data: bulkAssignCoursesResponse, + isLoading: bulkAssignCoursesLoading, + } = useGetAssignedCoursesForOrganizationQuery( + { limit: 100, offset: 0 }, + { skip: !showAssignCourseModal } + ); + const { data: learnerCoursesResponse, refetch: refetchLearnerCourses, isLoading: learnerCoursesLoading } = useGetLearnerCoursesQuery(editingEmployee?.id ?? '', { skip: !editingEmployee?.id, @@ -454,6 +454,8 @@ const LearnersPage: React.FC = () => { const response = await bulkAssignCourse({ principal_xids: [editingEmployee.id], course_xids: [courseId], + start_date: courseStartDate, + end_date: courseEndDate, }).unwrap(); await refetchLearnerCourses(); @@ -737,11 +739,21 @@ const LearnersPage: React.FC = () => { setAssignCourseError('Please select a course.'); return; } + if (!courseStartDate || !courseEndDate) { + setAssignCourseError('Please select start date and end date.'); + return; + } + if (new Date(courseEndDate) < new Date(courseStartDate)) { + setAssignCourseError('End date cannot be before start date.'); + return; + } try { const response = await bulkAssignCourse({ principal_xids: selectedEmployees, course_xids: [selectedCourseId], + start_date: courseStartDate, + end_date: courseEndDate, }).unwrap(); showToast( @@ -751,6 +763,8 @@ const LearnersPage: React.FC = () => { ); setShowAssignCourseModal(false); setSelectedCourseId(''); + setCourseStartDate(''); + setCourseEndDate(''); setSelectedEmployees([]); } catch (error: any) { const message = error?.data?.message || 'Failed to assign course.'; @@ -1446,7 +1460,7 @@ const LearnersPage: React.FC = () => { - {(programmesResponse?.data?.items ?? []).map((programme) => ( + {(programmesResponse?.data ?? []).map((programme) => ( {programme.programme_title} @@ -1501,10 +1515,12 @@ const LearnersPage: React.FC = () => { +
+
+ + setCourseStartDate(e.target.value)} + /> +
+
+ + setCourseEndDate(e.target.value)} + /> +
+