[10/Apr/2026:20:00:15] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:15] (root_api-) 
[10/Apr/2026:20:00:15] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:15] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:15] (root_api-) op => getCourseRoles ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:15] (root_api-) OP= getCourseRoles of page root_api.php
[10/Apr/2026:20:00:15] (root_api-) serviceName course_data
[10/Apr/2026:20:00:16] (root_api-) Query~SELECT tld.optionid, tld.display_name,tld.data_value FROM tbl_lookup_detail tld, tbl_lookup tl WHERE tl.dev_name = 'course_role' AND tl.keyid=tld.keyid ORDER BY tld.sequence~2026-04-10 20:00:16:0416~2026-04-10 20:00:16~success
[10/Apr/2026:20:00:16] (root_api-) Final JSON =  {"status":"ok","message":"Roles fetched Successfully","Errorcode":"","data":[{"optionid":"13","display_name":"Author","data_value":"author"},{"optionid":"14","display_name":"Editor","data_value":"editor"},{"optionid":"12","display_name":"Approver","data_value":"approver"},{"optionid":"15","display_name":"Reader","data_value":"reader"}]}
[10/Apr/2026:20:00:19] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:19] (root_api-) op => checklogin ,uname => alhenaude20@gmail.com ,pwd => 8c56e4d0f8c63dd2de2624a9d1a04827 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => login_data ,
[10/Apr/2026:20:00:19] (root_api-) OP= checklogin of page root_api.php
[10/Apr/2026:20:00:19] (root_api-) serviceName login_data
[10/Apr/2026:20:00:19] (root_api-) Query~SELECT tbl_user_master.user_id,user_name,role_id,isAdmin,isActive,first_name,last_name,email,mobile,tbl_user_master.creation_date, tbl_user_details.profile_picture FROM tbl_user_master LEFT JOIN tbl_user_details ON tbl_user_details.user_id=tbl_user_master.user_id  WHERE email='alhenaude20@gmail.com' AND password='8c56e4d0f8c63dd2de2624a9d1a04827'~2026-04-10 20:00:19:0419~2026-04-10 20:00:19~success
[10/Apr/2026:20:00:19] (root_api-) Query~SELECT count(reg_id) AS verifiedCount, reg_status, reg_id, reg_type, resend_count
								FROM tbl_register WHERE reg_type='register' AND user_id='184'~2026-04-10 20:00:19:0419~2026-04-10 20:00:19~success
[10/Apr/2026:20:00:19] (root_api-) Query~SELECT ur.right_id,ur.right_key FROM vw_user_rights ur 
										WHERE ur.user_id='184' 
										AND ur.effective_right_value=1~2026-04-10 20:00:19:0419~2026-04-10 20:00:19~success
[10/Apr/2026:20:00:19] (root_api-) Query~SELECT * FROM tbl_user_org WHERE role_id='3' AND user_id='184'~2026-04-10 20:00:19:0419~2026-04-10 20:00:19~success
[10/Apr/2026:20:00:19] (root_api-) Query~SELECT count(cu.user_id) as my_course_count
	FROM tbl_course c
	INNER JOIN tbl_course_users cu ON c.course_id=cu.course_id
	INNER JOIN tbl_org org ON c.org_id=org.org_id
	WHERE c.status IN('Published') AND cu.user_id = '184'~2026-04-10 20:00:19:0419~2026-04-10 20:00:19~success
[10/Apr/2026:20:00:19] (root_api-) Final JSON =  {"status":"ok",
											"message":"login done successfully",
											"Errorcode":"",
											"data":{"user_id":"184","user_name":"","role_id":"3","isAdmin":null,"isActive":"1","first_name":"Alhena","last_name":"Udemans","email":"alhenaude20@gmail.com","mobile":"0678038927","creation_date":"2025-07-03 11:29:28","profile_picture":null,"user_rights":"","user_details":{"user_id":"184","user_name":"","role_id":"3","isAdmin":null,"isActive":"1","first_name":"Alhena","last_name":"Udemans","email":"alhenaude20@gmail.com","mobile":"0678038927","creation_date":"03 Jul 2025","action":"Login","profile_picture":null,"org_id":"1","userEnrolledCourse":"0"}}}
[10/Apr/2026:20:00:20] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:20] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:20] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) serviceName user_data
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:00:20] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:20] (root_api-) op => getUserOrganizations ,user_id => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:20] (root_api-) OP= getUserOrganizations of page root_api.php
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) serviceName user_data
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT org.org_id, org.org_name, uo.role_id FROM tbl_user_org uo, tbl_org org WHERE uo.org_id = org.org_id AND uo.role_id = 3 AND uo.user_id = 184~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"org_id":"1","org_name":"University Of Cape Town","role_id":"3"}]}
[10/Apr/2026:20:00:20] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:20] (root_api-) op => getcourses ,learner_id => 184 ,course_status =>  ,layout => grid ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:20] (root_api-) OP= getcourses of page root_api.php
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) serviceName course_data
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT c.*,cu.enroll_date, cu.start_date, cu.status as courseUserStatus, org.org_name
    							FROM tbl_course c
    							INNER JOIN tbl_course_users cu ON c.course_id=cu.course_id
                                INNER JOIN tbl_org org ON c.org_id=org.org_id
    							WHERE c.status IN('Published') AND cu.user_id = '184'ORDER BY c.course_id DESC~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Query~SELECT COUNT(1) AS courseEnrolled FROM tbl_course_users cu WHERE cu.user_id = '184'~2026-04-10 20:00:20:0420~2026-04-10 20:00:20~success
[10/Apr/2026:20:00:20] (root_api-) Final JSON =  {"status":"ok",
                "message":"",
                "Errorcode":"",
                "data":{"courseEnrolled":"0","layout":"grid"}}
[10/Apr/2026:20:00:21] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:21] (root_api-) 
[10/Apr/2026:20:00:21] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:21] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:21] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:00:21] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:00:21] (root_api-) serviceName common_data
[10/Apr/2026:20:00:21] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:00:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:23] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:23] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:00:23] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:23:0423~2026-04-10 20:00:23~success
[10/Apr/2026:20:00:23] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:00:23:0423~2026-04-10 20:00:23~success
[10/Apr/2026:20:00:23] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:00:23:0423~2026-04-10 20:00:23~success
[10/Apr/2026:20:00:23] (root_api-) serviceName user_data
[10/Apr/2026:20:00:23] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:00:23:0423~2026-04-10 20:00:23~success
[10/Apr/2026:20:00:23] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:00:24] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:24] (root_api-) op => getCourseReport ,learner_id => 184 ,sortCol =>  ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => report_data ,
[10/Apr/2026:20:00:24] (root_api-) OP= getCourseReport of page root_api.php
[10/Apr/2026:20:00:24] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:24:0424~2026-04-10 20:00:24~success
[10/Apr/2026:20:00:24] (root_api-) serviceName report_data
[10/Apr/2026:20:00:24] (root_api-) Query~SELECT tcu.course_id,IFNULL(ROUND(sum(tucp.question_time+ tucp.feedback_time)),0) AS avgTime 
	FROM tbl_user_course_progress tucp
	INNER JOIN tbl_course_users tcu ON tcu.enroll_id = tucp.enroll_id AND tcu.user_id = '184'  
	GROUP BY tucp.enroll_id~2026-04-10 20:00:24:0424~2026-04-10 20:00:24~success
[10/Apr/2026:20:00:24] (root_api-) Query~SELECT tc.course_name,tc.course_id, COUNT(DISTINCT tcd.course_deck_id) AS DeckCount
                ,IFNULL(date_format(tcu.enroll_date, '%d-%m-%Y'),'') AS enrollDate, 
                IFNULL(date_format(tcu.last_access_date, '%d-%m-%Y'), '') AS lastAccessedDate,
                 COUNT(DISTINCT dc.deck_card_id)*cud.cycle_count  AS totalCards, 
                 COUNT(DISTINCT tcuc.enroll_card_id) AS completedCardsCount,
                 cud.cycle_count 
                 FROM tbl_course tc
                 INNER JOIN tbl_course_deck tcd ON tcd.course_id = tc.course_id
                 INNER JOIN tbl_deck d ON d.deck_id = tcd.deck_id AND d.`status` IN ('Published') AND d.deck_type = 'main'
                 INNER JOIN tbl_deck_card dc ON dc.deck_id = tcd.deck_id
                 INNER JOIN tbl_card c ON c.card_id = dc.card_id AND c.card_type= 'main' AND c.`status` IN('Published') 
				  AND (c.question_text <> '' AND c.question_text IS NOT NULL)
                 INNER JOIN tbl_course_users tcu ON tcu.course_id = tc.course_id AND tcu.user_id='184'
                 INNER JOIN tbl_course_users_decks cud ON cud.enroll_id = tcu.enroll_id
                 LEFT JOIN tbl_course_users_cards tcuc ON tcuc.enroll_deck_id = cud.enroll_deck_id AND tcuc.`status` IN('Complete')
                 WHERE tc.`status` IN('Published') 
                 GROUP BY tc.course_id~2026-04-10 20:00:24:0424~2026-04-10 20:00:24~success
[10/Apr/2026:20:00:24] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":[]}
[10/Apr/2026:20:00:25] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:25] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:00:25] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:00:25] (root_api-) serviceName common_data
[10/Apr/2026:20:00:25] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:00:30] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) 
[10/Apr/2026:20:00:30] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:30] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) serviceName user_data
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:00:30] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) 
[10/Apr/2026:20:00:30] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:30] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) 
[10/Apr/2026:20:00:30] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) op => getcourses ,learner_id => 184 ,course_status =>  ,current_role => 2_2 ,org_id => 2 ,layout => grid ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:30] (root_api-) OP= getcourses of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='2'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='2'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) serviceName course_data
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT c.*, org.org_name, IF((SELECT count(*) from tbl_course c1 WHERE c.course_parent_id= c1.course_parent_id AND (c.version + 1) = c1.version) > 0, 'PublishedWithDraft',c.status) AS status, ce.ed_role
                FROM tbl_course c
                INNER JOIN tbl_org org ON c.org_id=org.org_id
                INNER JOIN tbl_course_educator ce ON ce.course_id=c.course_id AND user_id = '184'
                WHERE org.org_id = 2 AND (c.status IN('Published') OR (c.status='Draft' AND c.version = 1))ORDER BY c.course_id DESC~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT course_id, COUNT(course_id) AS enroll_user_count FROM tbl_course_users 
                WHERE course_id IN (25) GROUP BY course_id~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT first_name, last_name FROM tbl_user_master WHERE user_id = 184~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT course_id, course_image FROM tbl_course_images
                WHERE course_id IN (25) AND course_image IS NOT NULL AND course_image !=''  AND sequence = '1' AND status ='Active'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT tce.course_id, um.first_name, um.last_name FROM tbl_course_educator tce LEFT JOIN tbl_user_master um ON um.user_id = tce.user_id
				WHERE tce.course_id IN (25) AND tce.ed_role IN('author') GROUP BY tce.course_id~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:30] (root_api-) op => getCourseRoles ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:30] (root_api-) OP= getCourseRoles of page root_api.php
[10/Apr/2026:20:00:30] (root_api-) serviceName course_data
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT tld.optionid, tld.display_name,tld.data_value FROM tbl_lookup_detail tld, tbl_lookup tl WHERE tl.dev_name = 'course_role' AND tl.keyid=tld.keyid ORDER BY tld.sequence~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  {"status":"ok","message":"Roles fetched Successfully","Errorcode":"","data":[{"optionid":"13","display_name":"Author","data_value":"author"},{"optionid":"14","display_name":"Editor","data_value":"editor"},{"optionid":"12","display_name":"Approver","data_value":"approver"},{"optionid":"15","display_name":"Reader","data_value":"reader"}]}
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT cd.course_id, COUNT(dc.card_id) AS cardscount 
                FROM tbl_deck_card dc
                INNER JOIN tbl_course_deck cd ON dc.deck_id = cd.deck_id
                INNER JOIN tbl_deck d ON d.deck_id = cd.deck_id AND d.deck_type='main'
                INNER JOIN tbl_card card ON card.card_id = dc.card_id AND card.card_type = 'main'
                WHERE cd.course_id IN (25) AND card.question_text!='' AND card.answer_text !=''
                GROUP BY cd.course_id~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT cd.course_id, COUNT(1) AS deckcount 
                FROM tbl_course_deck cd 
                INNER JOIN tbl_deck d ON d.deck_id = cd.deck_id AND d.deck_type='main'
                WHERE cd.course_id IN(25)
                GROUP BY cd.course_id~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT preference FROM tbl_course_user_preference WHERE course_id = '25' AND status IN('active') AND user_id = '184' ORDER BY action_time DESC~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT COUNT(1) as prefLikeCount FROM tbl_course_user_preference WHERE course_id = '25' AND status IN('active')~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Query~SELECT COUNT(1) AS courseEnrolled FROM tbl_course_users cu WHERE cu.user_id = '184'~2026-04-10 20:00:30:0430~2026-04-10 20:00:30~success
[10/Apr/2026:20:00:30] (root_api-) Final JSON =  {"status":"ok",
                "message":"",
                "Errorcode":"",
                "data":{"my_course_count":1,"info":[{"course_id":"25","course_name":"Grade 8 Mathematics","course_version":"1","course_short_name":null,"course_status":null,"course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","course_brief":null,"creation_date":"2025-07-16 13:21:03","launch_date":"268 day's ago","created_by":"184","organization_name":"C-Institute","background_color":"","text_color":"","course_image":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course-thumb.jpg","course_enroll_user_count":0,"deck_count":"25","cardscount":"1239","course_like_count":"","course_like_percentage":100,"course_duration":"16","courseStatus":"Draft","ed_role":"author","author":"Alhena Udemans"}],"preference":"","courseEnrolled":"0","layout":"grid"}}
[10/Apr/2026:20:00:31] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:31] (root_api-) op => allcourses ,learner_id => 184 ,course_status =>  ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:31] (root_api-) OP= allcourses of page root_api.php
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) serviceName course_data
[10/Apr/2026:20:00:31] (root_api-) allcourses : [1] Get Course master data and organisation name.
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT c.*, org.org_name
                        FROM tbl_course c
                        INNER JOIN tbl_org org ON c.org_id=org.org_id
                        WHERE c.status IN('Published') AND c.course_id NOT IN(
                SELECT cu.course_id FROM tbl_course_users cu
            WHERE cu.user_id = '184')ORDER BY c.course_id DESC~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) allcourses : [2] Get the count of courses user enrolled in.
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT course_id, COUNT(course_id) AS enroll_user_count FROM tbl_course_users 
                WHERE course_id IN (1) GROUP BY course_id~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT course_id, course_image  FROM tbl_course_images
            WHERE course_id IN (1) AND sequence = '1'~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT cd.course_id, COUNT(1) AS cardscount 
             FROM tbl_deck_card dc
             INNER JOIN tbl_course_deck cd ON dc.deck_id = cd.deck_id
             INNER JOIN tbl_deck d ON d.deck_id = cd.deck_id AND d.deck_type='main'
             INNER JOIN tbl_card card ON card.card_id = dc.card_id AND card.card_type = 'main'
             WHERE cd.course_id IN (1)
             GROUP BY cd.course_id~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT cd.course_id, COUNT(1) AS deckcount 
            FROM tbl_course_deck cd 
            INNER JOIN tbl_deck d ON d.deck_id = cd.deck_id AND d.deck_type='main'
            WHERE cd.course_id IN(1)
            GROUP BY cd.course_id~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT preference FROM tbl_course_user_preference WHERE course_id = '1' AND status IN('active')AND user_id = '184' ORDER BY action_time DESC~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Query~SELECT COUNT(1) as prefLikeCount FROM tbl_course_user_preference WHERE course_id = '1' AND status IN('active')~2026-04-10 20:00:31:0431~2026-04-10 20:00:31~success
[10/Apr/2026:20:00:31] (root_api-) Final JSON =  {"status":"ok",
            "message":"",
            "Errorcode":"",
            "data":{"info":[{"course_id":"1","course_name":"Applied Complexity Science","course_short_name":null,"course_status":"","course_desc":"This course will expose students to a range of niche complexity science areas. It will share both theoretical insights, as well as offer practice tools to ensure development of applied complexity skills to tame modern interlocked problems.","course_brief":"Develop skill and tools to deal with taming complex problems","creation_date":"2022-05-04 12:57:26","launch_date":"1437 day's ago","created_by":"1","organization_name":"University Of Cape Town","course_image":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_1\/CE applied complexity science.png","course_enroll_user_count":"122","deck_count":"20","cardscount":"961","course_like_count":"54","course_like_percentage":100,"course_duration":"50"}],"preference":""}}
[10/Apr/2026:20:00:31] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:31] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:00:31] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:00:31] (root_api-) serviceName common_data
[10/Apr/2026:20:00:31] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:00:35] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:35] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:35] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:00:35] (root_api-) serviceName course_data
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:00:35] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:35] (root_api-) op => getCourseDecks ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:35] (root_api-) OP= getCourseDecks of page root_api.php
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) serviceName course_data
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT td.deck_id, td.status as deckStatus, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.version
            
            FROM tbl_deck td 
           /* INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_type = 'main' AND td.created_by = '184'
            */
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' 
            Where td.deck_type = 'main'
            ORDER BY td.deck_id~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '66'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '67'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '68'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '69'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '70'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '71'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '72'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:35] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:35] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '73'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '74'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) serviceName user_data
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '75'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '76'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '77'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '78'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '79'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '80'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '81'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '82'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '83'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '84'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '85'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '86'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '87'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '88'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '89'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Query~select count(*) as card_count FROM  tbl_deck_card dc
                                    INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main' AND tc.question_text !='' AND tc.answer_text !=''
                                    Where dc.deck_id = '90'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Final JSON =  {"status":"ok",
                "message":"",
                "Errorcode":"",
                "data":{"66":{"deck_info":{"deck_id":"66","course_id":"25","deck_name":"Term 1: Whole Numbers","short_name":"Whole No. ","eval_id":"1","deck_desc":"Whole numbers deals with the explaination of different types of numbers, properties of operations, finance as well as estimation and rounding off. ","deck_brief":"","deck_status":"Draft","card_cnt":"56","version":"1"}},"67":{"deck_info":{"deck_id":"67","course_id":"25","deck_name":"Integers","short_name":"Integers","eval_id":"1","deck_desc":"Short questions regarding what integers are and how to solve expressions involving integers. ","deck_brief":"","deck_status":"Draft","card_cnt":"37","version":"1"}},"68":{"deck_info":{"deck_id":"68","course_id":"25","deck_name":"Exponents ","short_name":"Exponents","eval_id":"1","deck_desc":"This chapter of exponents provides information on the different ways to solve exponential expressions as well as the different laws of exponents. ","deck_brief":"","deck_status":"Draft","card_cnt":"55","version":"1"}},"69":{"deck_info":{"deck_id":"69","course_id":"25","deck_name":"Numeric and Geometric Patterns ","short_name":"Patterns","eval_id":"1","deck_desc":"Numeric and geomteric patterns revises concepts of commonly asked patterns as well as different ways patterns may be represented such an in a table, flow diagram as well as visually in pictures.  ","deck_brief":"","deck_status":"Draft","card_cnt":"23","version":"1"}},"70":{"deck_info":{"deck_id":"70","course_id":"25","deck_name":"Functions and Relationships ","short_name":"Functions and Relationships","eval_id":"1","deck_desc":"Functions and relationships is all about relating the input number to the output number in different ways and representing these relationships visually. ","deck_brief":"","deck_status":"Draft","card_cnt":"18","version":"1"}},"71":{"deck_info":{"deck_id":"71","course_id":"25","deck_name":"Algebraic Expressions 1 ","short_name":"Algebraic expressions","eval_id":"1","deck_desc":"Algebraic expressions involves taking a deeper look into the different components that make up an expression as well as ways in which we can simplify and solve them.","deck_brief":"","deck_status":"Draft","card_cnt":"36","version":"1"}},"72":{"deck_info":{"deck_id":"72","course_id":"25","deck_name":"Algebraic Equations 1 ","short_name":"Algebraic equations","eval_id":"1","deck_desc":"This deck of algebraic equations provides learners with a solid foundation of the standard procedure of solving equations and helping them to easily solve for the value of certain variables.","deck_brief":"","deck_status":"Draft","card_cnt":"24","version":"1"}},"73":{"deck_info":{"deck_id":"73","course_id":"25","deck_name":"Term 2: Algebraic Expressions 2 ","short_name":"Algenbraic Expressions 2 ","eval_id":"1","deck_desc":"Algebraic expressions 2 involves solving expressions using the distributative property and simplifying expressions with multiple operations. ","deck_brief":"","deck_status":"Draft","card_cnt":"53","version":"1"}},"74":{"deck_info":{"deck_id":"74","course_id":"25","deck_name":"Algebraic Equations 2 ","short_name":"Algebraic Equations 2 ","eval_id":"1","deck_desc":"Algebraic equations 2 uses flow diagrams and tables to help learners visualise and understand the concept of equations better as well as different ways to solve equations from left to right and right to left. ","deck_brief":"","deck_status":"Draft","card_cnt":"38","version":"1"}},"75":{"deck_info":{"deck_id":"75","course_id":"25","deck_name":"Construction of Geometric Figures","short_name":"Construction of shapes","eval_id":"1","deck_desc":"Construction of geometric figures helps emphasise the differences between parallel and perpendicular lines as well as different types of angles within different types of triangles and quadrilatrals. ","deck_brief":"","deck_status":"Draft","card_cnt":"55","version":"1"}},"76":{"deck_info":{"deck_id":"76","course_id":"25","deck_name":"Geometry of 2D Shapes","short_name":"Geometry of shapes","eval_id":"1","deck_desc":"This chapter of geometry of 2D shapes focuses on identifying and classifying different types of triangles and quadrilaterals as well as solving for missing sides and angles. ","deck_brief":"","deck_status":"Draft","card_cnt":"67","version":"1"}},"77":{"deck_info":{"deck_id":"77","course_id":"25","deck_name":"Geometry of straight lines","short_name":"Geometry of straight lines","eval_id":"1","deck_desc":"In this chapter of geometry of straight lines, the different mathematical reasons are taught in example form and shows the different ways in which learners are asked to find angles and identify them more easily. ","deck_brief":"","deck_status":"Draft","card_cnt":"68","version":"1"}},"78":{"deck_info":{"deck_id":"78","course_id":"25","deck_name":"Term 3: Common Fractions","short_name":"Common Fractions","eval_id":"1","deck_desc":"Common fractions helps learners perform the basic operations with fractions including addition, subtraction, multiplication and division. It also helps learners understand how to use and incorporate equivalent fractions and simplify fractions. ","deck_brief":"","deck_status":"Draft","card_cnt":"132","version":"1"}},"79":{"deck_info":{"deck_id":"79","course_id":"25","deck_name":"Decimal Fractions","short_name":"Decimals ","eval_id":"1","deck_desc":"Decimal fractions touches on how to convert fractions to decimals and decimals to fractions as well as how to perform operations with decimals and ordering, comparing and rounding off decimals. ","deck_brief":"","deck_status":"Draft","card_cnt":"108","version":"1"}},"80":{"deck_info":{"deck_id":"80","course_id":"25","deck_name":"Pythagoras Theorem ","short_name":"Pythagoras ","eval_id":"1","deck_desc":"This deck focuses on solving for lengths of right-angled triangles using the Pythagoras theorem and introduces learners to the converse Pythagoras theorem. ","deck_brief":"","deck_status":"Draft","card_cnt":"31","version":"1"}},"81":{"deck_info":{"deck_id":"81","course_id":"25","deck_name":"Area and Perimeter of 2D shapes","short_name":"Area and Perimeter","eval_id":"1","deck_desc":"Area and perimeter focuses on calculating the distances around shapes as well as how much space shapes such as rectangles, squares, circles and triangles take up. It focuses on understanding and logically solving the perimeter and area of other composite 2D\nshapes as well. ","deck_brief":"","deck_status":"Draft","card_cnt":"74","version":"1"}},"82":{"deck_info":{"deck_id":"82","course_id":"25","deck_name":"Surface Area and Volume of 3D Shapes","short_name":"Surface Area and Volume ","eval_id":"1","deck_desc":"Surface area and volume focuses on the different methods learners can use to solve for volume, surface area and capacity as well as how to get cubic units of measurements and when such measurements are used. ","deck_brief":"","deck_status":"Draft","card_cnt":"51","version":"1"}},"83":{"deck_info":{"deck_id":"83","course_id":"25","deck_name":"Data Handling ","short_name":"Data Handling","eval_id":"1","deck_desc":"Data handling helps learners interpret and understand the various pieces of information that may be collected when looking at data as well as different ways to summarise and read data. ","deck_brief":"","deck_status":"Draft","card_cnt":"46","version":"1"}},"84":{"deck_info":{"deck_id":"84","course_id":"25","deck_name":"Representing Data ","short_name":"Representing Data","eval_id":"1","deck_desc":"Data can be described in different ways and uses different types of visual aids to show information. In this chapter, you will learn how to read and interpret data from different graphs such as bar graphs and histograms. ","deck_brief":"","deck_status":"Draft","card_cnt":"26","version":"1"}},"85":{"deck_info":{"deck_id":"85","course_id":"25","deck_name":"Interpretting, Analysing and Reporting Data","short_name":"Interpretting and Analysing Data","eval_id":"1","deck_desc":"This chapter focuses on the information that can be gathered from data as well as the questions that may be asked from it. \n","deck_brief":"","deck_status":"Draft","card_cnt":"10","version":"1"}},"86":{"deck_info":{"deck_id":"86","course_id":"25","deck_name":"Term 4: Functions and Relationships","short_name":"Functions and relationships ","eval_id":"1","deck_desc":"Functions and relationships focuses on the different ways in which input values may be related to output values in a table, flow diagram or even verbally. ","deck_brief":"","deck_status":"Draft","card_cnt":"25","version":"1"}},"87":{"deck_info":{"deck_id":"87","course_id":"25","deck_name":"Algebraic Equations","short_name":"Equations ","eval_id":"1","deck_desc":"This chapter of algebraic equations focuses on getting the values of x and y alone as well as how to solve linear and exponential equations. ","deck_brief":"","deck_status":"Draft","card_cnt":"47","version":"1"}},"88":{"deck_info":{"deck_id":"88","course_id":"25","deck_name":"Graphs","short_name":"Graphs ","eval_id":"1","deck_desc":"Graphs focuses on being able to interpret information that can be gathered from graphs as well as how to read different types of graphs and how data can be spread out on a graph. ","deck_brief":"","deck_status":"Draft","card_cnt":"48","version":"1"}},"89":{"deck_info":{"deck_id":"89","course_id":"25","deck_name":"Transformation Geometry","short_name":"Transformations","eval_id":"1","deck_desc":"Transformation geometry focuses on the different types of transformations which included translations, reflections and rotations as well as applying these transformations to distinct points and shapes on the Cartesian plane and moving points across the x and y-axes. ","deck_brief":"","deck_status":"Draft","card_cnt":"111","version":"1"}},"90":{"deck_info":{"deck_id":"90","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deck_status":"Draft","card_cnt":"0","version":"1"}}}}
[10/Apr/2026:20:00:35] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:35] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:35] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) serviceName course_data
[10/Apr/2026:20:00:35] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:00:35:0435~2026-04-10 20:00:35~success
[10/Apr/2026:20:00:35] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:00:36] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:00:36] (root_api-) 
[10/Apr/2026:20:00:36] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:00:36] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:00:36] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:36] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:00:36] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:00:36] (root_api-) serviceName common_data
[10/Apr/2026:20:00:36] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:00:39] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:39] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:39] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:00:39] (root_api-) serviceName course_data
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:00:39] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:39] (root_api-) op => getDeckCard ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:39] (root_api-) OP= getDeckCard of page root_api.php
[10/Apr/2026:20:00:39] (root_api-) serviceName course_data
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT c.card_id, c.card_parent_id FROM tbl_card c, tbl_deck_card dc  WHERE dc.deck_id = '90' AND c.question_text='' AND c.answer_text='' AND dc.card_id = c.card_id ~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~DELETE from tbl_card WHERE card_id = ''~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~DELETE from tbl_card_parent WHERE card_parent_id = ''~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~DELETE from tbl_deck_card WHERE card_id = ''~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT tc.card_id,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_style  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.sequence as cardSequence, tc.version,DENSE_RANK() OVER (ORDER BY dc.sequence) cardRank
            FROM  tbl_deck_card dc
            INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main'
            Where dc.deck_id = '90'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT deck_id, deck_name, status, version from tbl_deck WHERE deck_id = '90'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Final JSON =  {"status":"ok",
                "message":"",
                "Errorcode":"",
                "data":{"deck_info":{"deck_id":"90","deck_name":"Geometry of 3D shapes ","status":"Draft","version":"1"}}}
[10/Apr/2026:20:00:39] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:39] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:00:39] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) serviceName user_data
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:00:39] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:39] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:00:39] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) serviceName course_data
[10/Apr/2026:20:00:39] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:00:39:0439~2026-04-10 20:00:39~success
[10/Apr/2026:20:00:39] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:00:40] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:00:40] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:00:40] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:00:40] (root_api-) serviceName common_data
[10/Apr/2026:20:00:40] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:02:15] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) 
[10/Apr/2026:20:02:15] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) serviceName user_data
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:02:15] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) 
[10/Apr/2026:20:02:15] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) serviceName deck_data
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2775,'1','1','0', NOW(), '184')
[10/Apr/2026:20:02:15] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2775,'1','1','0', NOW(), '184')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2775, 2775,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:02:15] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2775, 2775,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2775' WHERE card_id= 2775~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2775,'90','2775','1', NOW(), '184')
[10/Apr/2026:20:02:15] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2775,'90','2775','1', NOW(), '184')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2775"}
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) serviceName user_data
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) serviceName course_data
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2775 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) serviceName course_data
[10/Apr/2026:20:02:15] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:15] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:02:15] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:02:15] (root_api-) serviceName course_data
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2775' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2775 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2775 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2775","card_style":"0","card_title":"Card#2775","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"1","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:02:15] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:02:15:0415~2026-04-10 20:02:15~success
[10/Apr/2026:20:02:15] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:02:16] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:16] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:02:16] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:02:16] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:02:16:0416~2026-04-10 20:02:16~success
[10/Apr/2026:20:02:16] (root_api-) serviceName course_data
[10/Apr/2026:20:02:16] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:02:16:0416~2026-04-10 20:02:16~success
[10/Apr/2026:20:02:16] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:02:16:0416~2026-04-10 20:02:16~success
[10/Apr/2026:20:02:16] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:02:16:0416~2026-04-10 20:02:16~success
[10/Apr/2026:20:02:16] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:02:16] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:02:16] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:02:16] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:02:16] (root_api-) serviceName common_data
[10/Apr/2026:20:02:16] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:04:04] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:04:04] (root_api-) 
[10/Apr/2026:20:04:04] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:04:04] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:04:04] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:04] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a 3D shape?</p><p><br></p> ,answerText => <p>A 3D shape (or 3 dimensional shape) is a shape that occupies space, has a volume and <span style="background-color: rgb(181, 165, 214);">has a length, breadth/width and height. </span></p><p>Real-life objects are 3D objects.&nbsp;</p> ,editCardId => 2775 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:04:04] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:04:04] (root_api-) serviceName deck_data
[10/Apr/2026:20:04:04] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2775'~2026-04-10 20:04:04:0404~2026-04-10 20:04:04~success
[10/Apr/2026:20:04:04] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2775'~2026-04-10 20:04:04:0404~2026-04-10 20:04:04~success
[10/Apr/2026:20:04:04] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a 3D shape?</p><p><br></p>', answer_text = '<p>A 3D shape (or 3 dimensional shape) is a shape that occupies space, has a volume and <span style=\"background-color: rgb(181, 165, 214);\">has a length, breadth/width and height. </span></p><p>Real-life objects are 3D objects.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2775'
[10/Apr/2026:20:04:04] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a 3D shape?</p><p><br></p>', answer_text = '<p>A 3D shape (or 3 dimensional shape) is a shape that occupies space, has a volume and <span style=\"background-color: rgb(181, 165, 214);\">has a length, breadth/width and height. </span></p><p>Real-life objects are 3D objects.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2775'~2026-04-10 20:04:04:0404~2026-04-10 20:04:04~success
[10/Apr/2026:20:04:04] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:04:05] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:05] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:04:05] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) serviceName user_data
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:04:05] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:05] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:04:05] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:04:05] (root_api-) serviceName deck_data
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2776,'1','1','0', NOW(), '184')
[10/Apr/2026:20:04:05] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2776,'1','1','0', NOW(), '184')~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2776, 2776,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:04:05] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2776, 2776,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2776' WHERE card_id= 2776~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2776,'90','2776','2', NOW(), '184')
[10/Apr/2026:20:04:05] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2776,'90','2776','2', NOW(), '184')~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2776"}
[10/Apr/2026:20:04:05] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:05] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:04:05] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) serviceName user_data
[10/Apr/2026:20:04:05] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:04:05:0405~2026-04-10 20:04:05~success
[10/Apr/2026:20:04:05] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:04:06] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:06] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:06] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) serviceName course_data
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:04:06] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:06] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:06] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:04:06] (root_api-) serviceName course_data
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:04:06] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:06] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:06] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:06] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2776 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:06] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:04:06] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) serviceName course_data
[10/Apr/2026:20:04:06] (root_api-) serviceName course_data
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2776' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2776 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2776 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2776","card_style":"0","card_title":"Card#2776","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"2","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:04:06] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:04:06:0406~2026-04-10 20:04:06~success
[10/Apr/2026:20:04:06] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:04:07] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:07] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:04:07] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:04:07] (root_api-) serviceName common_data
[10/Apr/2026:20:04:07] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:04:43] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:04:43] (root_api-) 
[10/Apr/2026:20:04:43] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:04:43] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:04:43] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:43] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a 'face' of a 3D shape?</p><p><br></p> ,answerText => <p>Faces refer to the flat or curved <u>surfaces</u> of a 3D shape.</p><p>&nbsp;</p> ,editCardId => 2776 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:04:43] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:04:43] (root_api-) serviceName deck_data
[10/Apr/2026:20:04:43] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2776'~2026-04-10 20:04:43:0443~2026-04-10 20:04:43~success
[10/Apr/2026:20:04:43] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2776'~2026-04-10 20:04:43:0443~2026-04-10 20:04:43~success
[10/Apr/2026:20:04:43] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a \'face\' of a 3D shape?</p><p><br></p>', answer_text = '<p>Faces refer to the flat or curved <u>surfaces</u> of a 3D shape.</p><p>&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2776'
[10/Apr/2026:20:04:43] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a \'face\' of a 3D shape?</p><p><br></p>', answer_text = '<p>Faces refer to the flat or curved <u>surfaces</u> of a 3D shape.</p><p>&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2776'~2026-04-10 20:04:43:0443~2026-04-10 20:04:43~success
[10/Apr/2026:20:04:43] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) serviceName user_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) serviceName deck_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2777,'1','1','0', NOW(), '184')
[10/Apr/2026:20:04:45] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2777,'1','1','0', NOW(), '184')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2777, 2777,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:04:45] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2777, 2777,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2777' WHERE card_id= 2777~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2777,'90','2777','3', NOW(), '184')
[10/Apr/2026:20:04:45] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2777,'90','2777','3', NOW(), '184')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2777"}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) serviceName user_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) serviceName course_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2777 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) serviceName course_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2777' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2777 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2777 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2777","card_style":"0","card_title":"Card#2777","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"3","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) serviceName course_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:04:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:45] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:04:45] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) serviceName course_data
[10/Apr/2026:20:04:45] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:04:45:0445~2026-04-10 20:04:45~success
[10/Apr/2026:20:04:45] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:04:46] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:04:46] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:04:46] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:04:46] (root_api-) serviceName common_data
[10/Apr/2026:20:04:46] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:06:56] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:06:56] (root_api-) deckId => 90 ,cardId => 2777 ,courseId => 25 ,mediafor => Q ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:06:56] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:06:56] (root_api-) serviceName course_data
[10/Apr/2026:20:06:56] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"Q","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2777\/image 1 jpeg..jpg"}}
[10/Apr/2026:20:07:55] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:07:55] (root_api-) 
[10/Apr/2026:20:07:55] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:07:55] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:07:55] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:55] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>Given the diagram of the red rectangular prism and another diagram of the same prism but with all its faces and edges visible, answer the following questions:</p><p>1) How many of the faces are visible in the red prism diagram?</p><p> 2) How many faces are visible in the diagram with the black and white lines?</p><p>3) How many faces does this object have in total as a singular rectangular prism?</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2777/image 1 jpeg..jpg" style="width: 347px;"><br></p><p><br></p> ,answerText => <p>1) Only 3 faces are visible</p><p>2) 6 faces</p><p> 3) 6 faces</p> ,editCardId => 2777 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:07:55] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:07:55] (root_api-) serviceName deck_data
[10/Apr/2026:20:07:55] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2777'~2026-04-10 20:07:55:0455~2026-04-10 20:07:55~success
[10/Apr/2026:20:07:55] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2777'~2026-04-10 20:07:55:0455~2026-04-10 20:07:55~success
[10/Apr/2026:20:07:55] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>Given the diagram of the red rectangular prism and another diagram of the same prism but with all its faces and edges visible, answer the following questions:</p><p>1) How many of the faces are visible in the red prism diagram?</p><p> 2) How many faces are visible in the diagram with the black and white lines?</p><p>3) How many faces does this object have in total as a singular rectangular prism?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2777/image 1 jpeg..jpg\" style=\"width: 347px;\"><br></p><p><br></p>', answer_text = '<p>1) Only 3 faces are visible</p><p>2) 6 faces</p><p> 3) 6 faces</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2777'
[10/Apr/2026:20:07:55] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>Given the diagram of the red rectangular prism and another diagram of the same prism but with all its faces and edges visible, answer the following questions:</p><p>1) How many of the faces are visible in the red prism diagram?</p><p> 2) How many faces are visible in the diagram with the black and white lines?</p><p>3) How many faces does this object have in total as a singular rectangular prism?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2777/image 1 jpeg..jpg\" style=\"width: 347px;\"><br></p><p><br></p>', answer_text = '<p>1) Only 3 faces are visible</p><p>2) 6 faces</p><p> 3) 6 faces</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2777'~2026-04-10 20:07:55:0455~2026-04-10 20:07:55~success
[10/Apr/2026:20:07:55] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:07:56] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:56] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:07:56] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) serviceName user_data
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:07:56] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:56] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:07:56] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:07:56] (root_api-) serviceName deck_data
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2778,'1','1','0', NOW(), '184')
[10/Apr/2026:20:07:56] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2778,'1','1','0', NOW(), '184')~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2778, 2778,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:07:56] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2778, 2778,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2778' WHERE card_id= 2778~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2778,'90','2778','4', NOW(), '184')
[10/Apr/2026:20:07:56] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2778,'90','2778','4', NOW(), '184')~2026-04-10 20:07:56:0456~2026-04-10 20:07:56~success
[10/Apr/2026:20:07:56] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2778"}
[10/Apr/2026:20:07:57] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:57] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:07:57] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) serviceName user_data
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:07:57] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:57] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:07:57] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) serviceName course_data
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:07:57] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:57] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2778 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:07:57] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) serviceName course_data
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2778' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2778 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2778 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2778","card_style":"0","card_title":"Card#2778","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"4","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:07:57] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:57] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:07:57] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:07:57] (root_api-) serviceName course_data
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:07:57] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:57] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:07:57] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) serviceName course_data
[10/Apr/2026:20:07:57] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:07:57:0457~2026-04-10 20:07:57~success
[10/Apr/2026:20:07:57] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:07:58] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:07:58] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:07:58] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:07:58] (root_api-) serviceName common_data
[10/Apr/2026:20:07:58] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:08:28] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:08:28] (root_api-) 
[10/Apr/2026:20:08:28] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:08:28] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:08:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:28] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a polyhedron?</p><p><br></p> ,answerText => <p>A polyhedron is a 3D shape made up of flat faces only, no curved faces.</p><p><br></p> ,editCardId => 2778 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:08:28] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:08:28] (root_api-) serviceName deck_data
[10/Apr/2026:20:08:28] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2778'~2026-04-10 20:08:28:0428~2026-04-10 20:08:28~success
[10/Apr/2026:20:08:28] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2778'~2026-04-10 20:08:28:0428~2026-04-10 20:08:28~success
[10/Apr/2026:20:08:28] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a polyhedron?</p><p><br></p>', answer_text = '<p>A polyhedron is a 3D shape made up of flat faces only, no curved faces.</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2778'
[10/Apr/2026:20:08:28] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a polyhedron?</p><p><br></p>', answer_text = '<p>A polyhedron is a 3D shape made up of flat faces only, no curved faces.</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2778'~2026-04-10 20:08:28:0428~2026-04-10 20:08:28~success
[10/Apr/2026:20:08:28] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:08:29] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:29] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:08:29] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) serviceName user_data
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:08:29] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:29] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:08:29] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:08:29] (root_api-) serviceName deck_data
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2779,'1','1','0', NOW(), '184')
[10/Apr/2026:20:08:29] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2779,'1','1','0', NOW(), '184')~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2779, 2779,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:08:29] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2779, 2779,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2779' WHERE card_id= 2779~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2779,'90','2779','5', NOW(), '184')
[10/Apr/2026:20:08:29] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2779,'90','2779','5', NOW(), '184')~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2779"}
[10/Apr/2026:20:08:29] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:29] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:08:29] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) serviceName user_data
[10/Apr/2026:20:08:29] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:08:29:0429~2026-04-10 20:08:29~success
[10/Apr/2026:20:08:29] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:08:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:30] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:08:30] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) serviceName course_data
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:08:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:30] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2779 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:08:30] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) serviceName course_data
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2779' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2779 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2779 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2779","card_style":"0","card_title":"Card#2779","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"5","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:08:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:30] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:08:30] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:08:30] (root_api-) serviceName course_data
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:08:30] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:30] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:08:30] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) serviceName course_data
[10/Apr/2026:20:08:30] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:08:30:0430~2026-04-10 20:08:30~success
[10/Apr/2026:20:08:30] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:08:31] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:08:31] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:08:31] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:08:31] (root_api-) serviceName common_data
[10/Apr/2026:20:08:31] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:15:11] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:15:11] (root_api-) deckId => 90 ,cardId => 2779 ,courseId => 25 ,mediafor => A ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:15:11] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:15:11] (root_api-) serviceName course_data
[10/Apr/2026:20:15:11] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"A","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2779\/image 2 jpeg..jpg"}}
[10/Apr/2026:20:15:21] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:15:21] (root_api-) 
[10/Apr/2026:20:15:21] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:15:21] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:15:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:21] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is an edge?</p><p><br></p> ,answerText => <p>An edge refers to the line where two faces of a 3D shape meet.&nbsp;</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2779/image 2 jpeg..jpg" style="width: 549px;"><br></p><p><br></p> ,editCardId => 2779 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:15:21] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:15:21] (root_api-) serviceName deck_data
[10/Apr/2026:20:15:21] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2779'~2026-04-10 20:15:21:0421~2026-04-10 20:15:21~success
[10/Apr/2026:20:15:21] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2779'~2026-04-10 20:15:21:0421~2026-04-10 20:15:21~success
[10/Apr/2026:20:15:21] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is an edge?</p><p><br></p>', answer_text = '<p>An edge refers to the line where two faces of a 3D shape meet.&nbsp;</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2779/image 2 jpeg..jpg\" style=\"width: 549px;\"><br></p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2779'
[10/Apr/2026:20:15:21] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is an edge?</p><p><br></p>', answer_text = '<p>An edge refers to the line where two faces of a 3D shape meet.&nbsp;</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2779/image 2 jpeg..jpg\" style=\"width: 549px;\"><br></p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2779'~2026-04-10 20:15:21:0421~2026-04-10 20:15:21~success
[10/Apr/2026:20:15:21] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:15:22] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:22] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:15:22] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) serviceName user_data
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:15:22] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:22] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:15:22] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:15:22] (root_api-) serviceName deck_data
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2780,'1','1','0', NOW(), '184')
[10/Apr/2026:20:15:22] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2780,'1','1','0', NOW(), '184')~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2780, 2780,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:15:22] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2780, 2780,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2780' WHERE card_id= 2780~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2780,'90','2780','6', NOW(), '184')
[10/Apr/2026:20:15:22] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2780,'90','2780','6', NOW(), '184')~2026-04-10 20:15:22:0422~2026-04-10 20:15:22~success
[10/Apr/2026:20:15:22] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2780"}
[10/Apr/2026:20:15:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:23] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:15:23] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) serviceName user_data
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:15:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:23] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:15:23] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) serviceName course_data
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:15:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:23] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2780 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:15:23] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) serviceName course_data
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2780' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2780 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2780 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2780","card_style":"0","card_title":"Card#2780","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"6","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:15:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:23] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:15:23] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:15:23] (root_api-) serviceName course_data
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:15:23] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:23] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:15:23] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) serviceName course_data
[10/Apr/2026:20:15:23] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:15:23:0423~2026-04-10 20:15:23~success
[10/Apr/2026:20:15:23] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:15:24] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:15:24] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:15:24] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:15:24] (root_api-) serviceName common_data
[10/Apr/2026:20:15:24] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:18:35] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:18:35] (root_api-) deckId => 90 ,cardId => 2780 ,courseId => 25 ,mediafor => A ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:18:35] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:18:35] (root_api-) serviceName course_data
[10/Apr/2026:20:18:35] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"A","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2780\/image 3 jpeg..jpg"}}
[10/Apr/2026:20:18:43] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:18:43] (root_api-) 
[10/Apr/2026:20:18:43] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:18:43] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:18:43] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:43] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a vertix or vertices?</p><p><br></p> ,answerText => <p>A vertex refers to the corner of a shape where 2 edges meet.</p><p>Vertices is plural for 1 vertex.&nbsp;</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2780/image 3 jpeg..jpg" style="width: 585px;"><br></p> ,editCardId => 2780 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:18:43] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:18:43] (root_api-) serviceName deck_data
[10/Apr/2026:20:18:43] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2780'~2026-04-10 20:18:43:0443~2026-04-10 20:18:43~success
[10/Apr/2026:20:18:43] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2780'~2026-04-10 20:18:43:0443~2026-04-10 20:18:43~success
[10/Apr/2026:20:18:43] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a vertix or vertices?</p><p><br></p>', answer_text = '<p>A vertex refers to the corner of a shape where 2 edges meet.</p><p>Vertices is plural for 1 vertex.&nbsp;</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2780/image 3 jpeg..jpg\" style=\"width: 585px;\"><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2780'
[10/Apr/2026:20:18:43] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a vertix or vertices?</p><p><br></p>', answer_text = '<p>A vertex refers to the corner of a shape where 2 edges meet.</p><p>Vertices is plural for 1 vertex.&nbsp;</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2780/image 3 jpeg..jpg\" style=\"width: 585px;\"><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2780'~2026-04-10 20:18:43:0443~2026-04-10 20:18:43~success
[10/Apr/2026:20:18:43] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) serviceName user_data
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) serviceName deck_data
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2781,'1','1','0', NOW(), '184')
[10/Apr/2026:20:18:44] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2781,'1','1','0', NOW(), '184')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2781, 2781,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:18:44] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2781, 2781,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2781' WHERE card_id= 2781~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2781,'90','2781','7', NOW(), '184')
[10/Apr/2026:20:18:44] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2781,'90','2781','7', NOW(), '184')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2781"}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) serviceName user_data
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) serviceName course_data
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2781 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) serviceName course_data
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2781' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2781 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2781 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2781","card_style":"0","card_title":"Card#2781","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"7","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) serviceName course_data
[10/Apr/2026:20:18:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:44] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:18:44] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) serviceName course_data
[10/Apr/2026:20:18:44] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:18:44] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:18:44:0444~2026-04-10 20:18:44~success
[10/Apr/2026:20:18:44] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:18:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:18:45] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:18:45] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:18:45] (root_api-) serviceName common_data
[10/Apr/2026:20:18:45] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:19:42] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:19:42] (root_api-) deckId => 90 ,cardId => 2781 ,courseId => 25 ,mediafor => Q ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:19:42] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:19:42] (root_api-) serviceName course_data
[10/Apr/2026:20:19:42] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"Q","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2781\/image 4 jpeg..jpg"}}
[10/Apr/2026:20:20:31] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:20:31] (root_api-) 
[10/Apr/2026:20:20:31] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:20:31] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:20:31] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:31] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>Which image (A or B) is a polyhedron?</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2781/image 4 jpeg..jpg" style="width: 430px;"><br></p> ,answerText => <p><span style="background-color: rgb(181, 165, 214);">B</span></p><p>Why? </p><p>Made up of flat faces/surfaces only.</p><p> A has a curved surface so it can't be a polyhedron.&nbsp;</p> ,editCardId => 2781 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:20:31] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:20:31] (root_api-) serviceName deck_data
[10/Apr/2026:20:20:31] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2781'~2026-04-10 20:20:31:0431~2026-04-10 20:20:31~success
[10/Apr/2026:20:20:31] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2781'~2026-04-10 20:20:31:0431~2026-04-10 20:20:31~success
[10/Apr/2026:20:20:31] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>Which image (A or B) is a polyhedron?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2781/image 4 jpeg..jpg\" style=\"width: 430px;\"><br></p>', answer_text = '<p><span style=\"background-color: rgb(181, 165, 214);\">B</span></p><p>Why? </p><p>Made up of flat faces/surfaces only.</p><p> A has a curved surface so it can\'t be a polyhedron.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2781'
[10/Apr/2026:20:20:31] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>Which image (A or B) is a polyhedron?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2781/image 4 jpeg..jpg\" style=\"width: 430px;\"><br></p>', answer_text = '<p><span style=\"background-color: rgb(181, 165, 214);\">B</span></p><p>Why? </p><p>Made up of flat faces/surfaces only.</p><p> A has a curved surface so it can\'t be a polyhedron.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2781'~2026-04-10 20:20:31:0431~2026-04-10 20:20:31~success
[10/Apr/2026:20:20:31] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:20:32] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:32] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:20:32] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:20:32] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) serviceName user_data
[10/Apr/2026:20:20:32] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:20:32] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:32] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:20:32] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:20:32] (root_api-) serviceName deck_data
[10/Apr/2026:20:20:32] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2782,'1','1','0', NOW(), '184')
[10/Apr/2026:20:20:32] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2782,'1','1','0', NOW(), '184')~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2782, 2782,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:20:32] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2782, 2782,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:32] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:20:32:0432~2026-04-10 20:20:32~success
[10/Apr/2026:20:20:33] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2782' WHERE card_id= 2782~2026-04-10 20:20:32:0432~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2782,'90','2782','8', NOW(), '184')
[10/Apr/2026:20:20:33] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2782,'90','2782','8', NOW(), '184')~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2782"}
[10/Apr/2026:20:20:33] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:33] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:20:33] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) serviceName user_data
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:20:33] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:33] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:20:33] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) serviceName course_data
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:20:33] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:33] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2782 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:20:33] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) serviceName course_data
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2782' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2782 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2782 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2782","card_style":"0","card_title":"Card#2782","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"8","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:20:33] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:33] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:33] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:20:33] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:20:33] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:20:33] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:20:33] (root_api-) serviceName course_data
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) serviceName course_data
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:20:33] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:20:33:0433~2026-04-10 20:20:33~success
[10/Apr/2026:20:20:33] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:20:34] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:20:34] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:20:34] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:20:34] (root_api-) serviceName common_data
[10/Apr/2026:20:20:34] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:21:28] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:21:28] (root_api-) deckId => 90 ,cardId => 2782 ,courseId => 25 ,mediafor => Q ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:21:28] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:21:28] (root_api-) serviceName course_data
[10/Apr/2026:20:21:28] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"Q","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2782\/image 5 jpeg..jpg"}}
[10/Apr/2026:20:22:20] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:22:20] (root_api-) 
[10/Apr/2026:20:22:20] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:22:20] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:22:20] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:20] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>How many edges does the polyhedron below have?</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2782/image 5 jpeg..jpg" style="width: 181px;"><br></p> ,answerText => <p>Definition of an edge: line where two faces of a 3D shape meet. </p><p>.: There are <span style="background-color: rgb(214, 165, 189);">12 edges</span>.&nbsp;</p> ,editCardId => 2782 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:22:20] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:22:20] (root_api-) serviceName deck_data
[10/Apr/2026:20:22:20] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2782'~2026-04-10 20:22:20:0420~2026-04-10 20:22:20~success
[10/Apr/2026:20:22:20] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2782'~2026-04-10 20:22:20:0420~2026-04-10 20:22:20~success
[10/Apr/2026:20:22:20] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>How many edges does the polyhedron below have?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2782/image 5 jpeg..jpg\" style=\"width: 181px;\"><br></p>', answer_text = '<p>Definition of an edge: line where two faces of a 3D shape meet. </p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">12 edges</span>.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2782'
[10/Apr/2026:20:22:20] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>How many edges does the polyhedron below have?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2782/image 5 jpeg..jpg\" style=\"width: 181px;\"><br></p>', answer_text = '<p>Definition of an edge: line where two faces of a 3D shape meet. </p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">12 edges</span>.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2782'~2026-04-10 20:22:20:0420~2026-04-10 20:22:20~success
[10/Apr/2026:20:22:20] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) serviceName user_data
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) serviceName deck_data
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2783,'1','1','0', NOW(), '184')
[10/Apr/2026:20:22:21] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2783,'1','1','0', NOW(), '184')~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2783, 2783,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:22:21] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2783, 2783,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2783' WHERE card_id= 2783~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2783,'90','2783','9', NOW(), '184')
[10/Apr/2026:20:22:21] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2783,'90','2783','9', NOW(), '184')~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2783"}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) serviceName user_data
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) serviceName course_data
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2783 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) serviceName course_data
[10/Apr/2026:20:22:21] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2783' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2783 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2783 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:22:21:0421~2026-04-10 20:22:21~success
[10/Apr/2026:20:22:21] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2783","card_style":"0","card_title":"Card#2783","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"9","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:22:21] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:21] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:22:21] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:22:21] (root_api-) serviceName course_data
[10/Apr/2026:20:22:22] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:22:21:0421~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:22:22] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:22] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:22:22] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:22:22] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) serviceName course_data
[10/Apr/2026:20:22:22] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:22:22:0422~2026-04-10 20:22:22~success
[10/Apr/2026:20:22:22] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:22:22] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:22:22] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:22:22] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:22:22] (root_api-) serviceName common_data
[10/Apr/2026:20:22:22] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:23:07] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:23:07] (root_api-) deckId => 90 ,cardId => 2783 ,courseId => 25 ,mediafor => Q ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:23:07] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:23:07] (root_api-) serviceName course_data
[10/Apr/2026:20:23:07] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"Q","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2783\/image 6 jpeg..jpg"}}
[10/Apr/2026:20:23:45] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:23:45] (root_api-) 
[10/Apr/2026:20:23:45] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:23:45] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:23:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:45] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>How many vertices does the following polyhedron have?</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2783/image 6 jpeg..jpg" style="width: 237px;"><br></p> ,answerText => <p>Definition of vertices: corners of a shape where 2 edges meet.</p><p>.: There are <span style="background-color: rgb(214, 165, 189);">6 vertices</span>.&nbsp;</p> ,editCardId => 2783 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:23:45] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:23:45] (root_api-) serviceName deck_data
[10/Apr/2026:20:23:45] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2783'~2026-04-10 20:23:45:0445~2026-04-10 20:23:45~success
[10/Apr/2026:20:23:45] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2783'~2026-04-10 20:23:45:0445~2026-04-10 20:23:45~success
[10/Apr/2026:20:23:45] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>How many vertices does the following polyhedron have?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2783/image 6 jpeg..jpg\" style=\"width: 237px;\"><br></p>', answer_text = '<p>Definition of vertices: corners of a shape where 2 edges meet.</p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">6 vertices</span>.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2783'
[10/Apr/2026:20:23:45] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>How many vertices does the following polyhedron have?</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2783/image 6 jpeg..jpg\" style=\"width: 237px;\"><br></p>', answer_text = '<p>Definition of vertices: corners of a shape where 2 edges meet.</p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">6 vertices</span>.&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2783'~2026-04-10 20:23:45:0445~2026-04-10 20:23:45~success
[10/Apr/2026:20:23:45] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:23:46] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:46] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:23:46] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) serviceName user_data
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:23:46] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:46] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:23:46] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:23:46] (root_api-) serviceName deck_data
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2784,'1','1','0', NOW(), '184')
[10/Apr/2026:20:23:46] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2784,'1','1','0', NOW(), '184')~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2784, 2784,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:23:46] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2784, 2784,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2784' WHERE card_id= 2784~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2784,'90','2784','10', NOW(), '184')
[10/Apr/2026:20:23:46] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2784,'90','2784','10', NOW(), '184')~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2784"}
[10/Apr/2026:20:23:46] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:46] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:23:46] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) serviceName user_data
[10/Apr/2026:20:23:46] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:23:46:0446~2026-04-10 20:23:46~success
[10/Apr/2026:20:23:46] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:23:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:47] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:23:47] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) serviceName course_data
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:23:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:47] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2784 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:23:47] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) serviceName course_data
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2784' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2784 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2784 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2784","card_style":"0","card_title":"Card#2784","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"10","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:23:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:47] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:23:47] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:23:47] (root_api-) serviceName course_data
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:23:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:47] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:23:47] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) serviceName course_data
[10/Apr/2026:20:23:47] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:23:47:0447~2026-04-10 20:23:47~success
[10/Apr/2026:20:23:47] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:23:48] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:23:48] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:23:48] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:23:48] (root_api-) serviceName common_data
[10/Apr/2026:20:23:48] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:24:08] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:24:08] (root_api-) 
[10/Apr/2026:20:24:08] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:24:08] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:24:08] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:08] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What 2 types of polyhedrons do you get?</p><p><br></p> ,answerText => <p>Prisms and pyramids</p><p><br></p> ,editCardId => 2784 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:24:08] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:24:08] (root_api-) serviceName deck_data
[10/Apr/2026:20:24:08] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2784'~2026-04-10 20:24:08:0408~2026-04-10 20:24:08~success
[10/Apr/2026:20:24:08] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2784'~2026-04-10 20:24:08:0408~2026-04-10 20:24:08~success
[10/Apr/2026:20:24:08] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What 2 types of polyhedrons do you get?</p><p><br></p>', answer_text = '<p>Prisms and pyramids</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2784'
[10/Apr/2026:20:24:08] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What 2 types of polyhedrons do you get?</p><p><br></p>', answer_text = '<p>Prisms and pyramids</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2784'~2026-04-10 20:24:08:0408~2026-04-10 20:24:08~success
[10/Apr/2026:20:24:08] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) serviceName user_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) serviceName deck_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2785,'1','1','0', NOW(), '184')
[10/Apr/2026:20:24:10] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2785,'1','1','0', NOW(), '184')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2785, 2785,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:24:10] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2785, 2785,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2785' WHERE card_id= 2785~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2785,'90','2785','11', NOW(), '184')
[10/Apr/2026:20:24:10] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2785,'90','2785','11', NOW(), '184')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2785"}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) serviceName user_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) serviceName course_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2785 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) serviceName course_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2785' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2785 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2785 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2785","card_style":"0","card_title":"Card#2785","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"11","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) serviceName course_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:24:10] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:10] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:10] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) serviceName course_data
[10/Apr/2026:20:24:10] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:24:10:0410~2026-04-10 20:24:10~success
[10/Apr/2026:20:24:10] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:24:11] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:11] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:24:11] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:24:11] (root_api-) serviceName common_data
[10/Apr/2026:20:24:11] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:24:36] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:24:36] (root_api-) 
[10/Apr/2026:20:24:36] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:24:36] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:24:36] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:36] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a prism?</p><p><br></p> ,answerText => <p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p><br></p> ,editCardId => 2785 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:24:36] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:24:36] (root_api-) serviceName deck_data
[10/Apr/2026:20:24:36] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2785'~2026-04-10 20:24:36:0436~2026-04-10 20:24:36~success
[10/Apr/2026:20:24:36] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2785'~2026-04-10 20:24:36:0436~2026-04-10 20:24:36~success
[10/Apr/2026:20:24:36] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a prism?</p><p><br></p>', answer_text = '<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2785'
[10/Apr/2026:20:24:36] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a prism?</p><p><br></p>', answer_text = '<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2785'~2026-04-10 20:24:36:0436~2026-04-10 20:24:36~success
[10/Apr/2026:20:24:36] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) serviceName user_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) serviceName deck_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2786,'1','1','0', NOW(), '184')
[10/Apr/2026:20:24:37] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2786,'1','1','0', NOW(), '184')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2786, 2786,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:24:37] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2786, 2786,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2786' WHERE card_id= 2786~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2786,'90','2786','12', NOW(), '184')
[10/Apr/2026:20:24:37] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2786,'90','2786','12', NOW(), '184')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2786"}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) serviceName user_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) serviceName course_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2786 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) serviceName course_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2786' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2786 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2786 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2786","card_style":"0","card_title":"Card#2786","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"12","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) serviceName course_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:24:37] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:37] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:37] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:24:37] (root_api-) serviceName course_data
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:24:37:0437~2026-04-10 20:24:37~success
[10/Apr/2026:20:24:37] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:24:38] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:38] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:24:38] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:24:38] (root_api-) serviceName common_data
[10/Apr/2026:20:24:38] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:24:40] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:40] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:40] (root_api-) op => getDeckCard ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:40] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:40] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:24:40] (root_api-) OP= getDeckCard of page root_api.php
[10/Apr/2026:20:24:40] (root_api-) serviceName course_data
[10/Apr/2026:20:24:40] (root_api-) serviceName course_data
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT c.card_id, c.card_parent_id FROM tbl_card c, tbl_deck_card dc  WHERE dc.deck_id = '90' AND c.question_text='' AND c.answer_text='' AND dc.card_id = c.card_id ~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:24:40] (root_api-) Query~DELETE from tbl_card WHERE card_id = '2786'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~DELETE from tbl_card_parent WHERE card_parent_id = '2786'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~DELETE from tbl_deck_card WHERE card_id = '2786'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT tc.card_id,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_style  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.sequence as cardSequence, tc.version,DENSE_RANK() OVER (ORDER BY dc.sequence) cardRank
            FROM  tbl_deck_card dc
            INNER JOIN tbl_card tc ON tc.card_id = dc.card_id AND tc.card_type = 'main'
            Where dc.deck_id = '90'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT deck_id, deck_name, status, version from tbl_deck WHERE deck_id = '90'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Final JSON =  {"status":"ok",
                "message":"",
                "Errorcode":"",
                "data":{"deck_info":{"deck_id":"90","deck_name":"Geometry of 3D shapes ","status":"Draft","version":"1"},"card_info":[{"card_id":"2775","card_sequence":"1","card_style":"Text","question_text":"<p>What is a 3D shape?<\/p><p><br><\/p>","answer_text":"<p>A 3D shape (or 3 dimensional shape) is a shape that occupies space, has a volume and <span style=\"background-color: rgb(181, 165, 214);\">has a length, breadth\/width and height. <\/span><\/p><p>Real-life objects are 3D objects.&nbsp;<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2776","card_sequence":"2","card_style":"Text","question_text":"<p>What is a 'face' of a 3D shape?<\/p><p><br><\/p>","answer_text":"<p>Faces refer to the flat or curved <u>surfaces<\/u> of a 3D shape.<\/p><p>&nbsp;<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2777","card_sequence":"3","card_style":"Text","question_text":"<p>Given the diagram of the red rectangular prism and another diagram of the same prism but with all its faces and edges visible, answer the following questions:<\/p><p>1) How many of the faces are visible in the red prism diagram?<\/p><p> 2) How many faces are visible in the diagram with the black and white lines?<\/p><p>3) How many faces does this object have in total as a singular rectangular prism?<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2777\/image 1 jpeg..jpg\" style=\"width: 347px;\"><br><\/p><p><br><\/p>","answer_text":"<p>1) Only 3 faces are visible<\/p><p>2) 6 faces<\/p><p> 3) 6 faces<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2778","card_sequence":"4","card_style":"Text","question_text":"<p>What is a polyhedron?<\/p><p><br><\/p>","answer_text":"<p>A polyhedron is a 3D shape made up of flat faces only, no curved faces.<\/p><p><br><\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2779","card_sequence":"5","card_style":"Text","question_text":"<p>What is an edge?<\/p><p><br><\/p>","answer_text":"<p>An edge refers to the line where two faces of a 3D shape meet.&nbsp;<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2779\/image 2 jpeg..jpg\" style=\"width: 549px;\"><br><\/p><p><br><\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2780","card_sequence":"6","card_style":"Text","question_text":"<p>What is a vertix or vertices?<\/p><p><br><\/p>","answer_text":"<p>A vertex refers to the corner of a shape where 2 edges meet.<\/p><p>Vertices is plural for 1 vertex.&nbsp;<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2780\/image 3 jpeg..jpg\" style=\"width: 585px;\"><br><\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2781","card_sequence":"7","card_style":"Text","question_text":"<p>Which image (A or B) is a polyhedron?<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2781\/image 4 jpeg..jpg\" style=\"width: 430px;\"><br><\/p>","answer_text":"<p><span style=\"background-color: rgb(181, 165, 214);\">B<\/span><\/p><p>Why? <\/p><p>Made up of flat faces\/surfaces only.<\/p><p> A has a curved surface so it can't be a polyhedron.&nbsp;<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2782","card_sequence":"8","card_style":"Text","question_text":"<p>How many edges does the polyhedron below have?<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2782\/image 5 jpeg..jpg\" style=\"width: 181px;\"><br><\/p>","answer_text":"<p>Definition of an edge: line where two faces of a 3D shape meet. <\/p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">12 edges<\/span>.&nbsp;<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2783","card_sequence":"9","card_style":"Text","question_text":"<p>How many vertices does the following polyhedron have?<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2783\/image 6 jpeg..jpg\" style=\"width: 237px;\"><br><\/p>","answer_text":"<p>Definition of vertices: corners of a shape where 2 edges meet.<\/p><p>.: There are <span style=\"background-color: rgb(214, 165, 189);\">6 vertices<\/span>.&nbsp;<\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2784","card_sequence":"10","card_style":"Text","question_text":"<p>What 2 types of polyhedrons do you get?<\/p><p><br><\/p>","answer_text":"<p>Prisms and pyramids<\/p><p><br><\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"},{"card_id":"2785","card_sequence":"11","card_style":"Text","question_text":"<p>What is a prism?<\/p><p><br><\/p>","answer_text":"<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).<\/p><p><br><\/p>","card_title":"","card_status":"Draft","deck_id":"90","card_image_url":"","card_video_url":"","version":"1"}]}}
[10/Apr/2026:20:24:40] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:40] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:40] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) serviceName user_data
[10/Apr/2026:20:24:40] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:40:0440~2026-04-10 20:24:40~success
[10/Apr/2026:20:24:40] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:41] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:41] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:41] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:24:41] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:41:0441~2026-04-10 20:24:41~success
[10/Apr/2026:20:24:41] (root_api-) serviceName course_data
[10/Apr/2026:20:24:41] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:24:41:0441~2026-04-10 20:24:41~success
[10/Apr/2026:20:24:41] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:24:42] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:24:42] (root_api-) 
[10/Apr/2026:20:24:42] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:24:42] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:24:42] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:42] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:24:42] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:24:42] (root_api-) serviceName common_data
[10/Apr/2026:20:24:42] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:24:44] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:44] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:24:44] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:24:44] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:44:0444~2026-04-10 20:24:44~success
[10/Apr/2026:20:24:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:24:44:0444~2026-04-10 20:24:44~success
[10/Apr/2026:20:24:44] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:24:44:0444~2026-04-10 20:24:44~success
[10/Apr/2026:20:24:44] (root_api-) serviceName user_data
[10/Apr/2026:20:24:44] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:24:44:0444~2026-04-10 20:24:44~success
[10/Apr/2026:20:24:44] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:24:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:45] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:45] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) serviceName course_data
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:24:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:45] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2785 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:45] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) serviceName course_data
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2785' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2785 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2785 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2785","card_style":"0","card_title":"","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"<p>What is a prism?<\/p><p><br><\/p>","cardStatus":"Draft","answer_text":"<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).<\/p><p><br><\/p>","deck_id":"90","cardSequence":"11","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:24:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:45] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:45] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) serviceName course_data
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:24:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:45] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:24:45] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:24:45] (root_api-) serviceName course_data
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:24:45:0445~2026-04-10 20:24:45~success
[10/Apr/2026:20:24:45] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:24:46] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:24:46] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:24:46] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:24:46] (root_api-) serviceName common_data
[10/Apr/2026:20:24:46] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:25:01] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:25:01] (root_api-) 
[10/Apr/2026:20:25:01] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:25:01] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:25:01] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:01] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a prism?</p><p><br></p> ,answerText => <p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p>E.g. rectangular prism&nbsp;</p> ,editCardId => 2785 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:25:01] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:25:01] (root_api-) serviceName deck_data
[10/Apr/2026:20:25:01] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2785'~2026-04-10 20:25:01:0401~2026-04-10 20:25:01~success
[10/Apr/2026:20:25:01] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2785'~2026-04-10 20:25:01:0401~2026-04-10 20:25:01~success
[10/Apr/2026:20:25:01] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a prism?</p><p><br></p>', answer_text = '<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p>E.g. rectangular prism&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2785'
[10/Apr/2026:20:25:01] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a prism?</p><p><br></p>', answer_text = '<p>A prism is a 3D shape made up of 2 identical, parallel faces (known as bases) and connected by parallelograms (called lateral faces).</p><p>E.g. rectangular prism&nbsp;</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2785'~2026-04-10 20:25:01:0401~2026-04-10 20:25:01~success
[10/Apr/2026:20:25:01] (root_api-) Final JSON =  {"status":"ok","message":"Card Updated Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) serviceName user_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) serviceName deck_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2786,'1','1','0', NOW(), '184')
[10/Apr/2026:20:25:03] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2786,'1','1','0', NOW(), '184')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2786, 2786,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:25:03] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2786, 2786,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2786' WHERE card_id= 2786~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2786,'90','2786','12', NOW(), '184')
[10/Apr/2026:20:25:03] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2786,'90','2786','12', NOW(), '184')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2786"}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) serviceName user_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) serviceName course_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) serviceName course_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2786 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) serviceName course_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2786' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2786 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2786 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2786","card_style":"0","card_title":"Card#2786","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"12","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:25:03] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:03] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:03] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) serviceName course_data
[10/Apr/2026:20:25:03] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:25:03:0403~2026-04-10 20:25:03~success
[10/Apr/2026:20:25:03] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:25:04] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:04] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:25:04] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:25:04] (root_api-) serviceName common_data
[10/Apr/2026:20:25:04] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:25:26] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:25:26] (root_api-) 
[10/Apr/2026:20:25:26] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:25:26] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:25:26] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:26] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What is a pyramid?</p><p><br></p> ,answerText => <p>A pyramid is a 3D object made up of only one base and is connected by triangles (which serve as lateral faces) meeting at the apex.</p><p><br></p> ,editCardId => 2786 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:25:26] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:25:26] (root_api-) serviceName deck_data
[10/Apr/2026:20:25:26] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2786'~2026-04-10 20:25:26:0426~2026-04-10 20:25:26~success
[10/Apr/2026:20:25:26] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2786'~2026-04-10 20:25:26:0426~2026-04-10 20:25:26~success
[10/Apr/2026:20:25:26] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a pyramid?</p><p><br></p>', answer_text = '<p>A pyramid is a 3D object made up of only one base and is connected by triangles (which serve as lateral faces) meeting at the apex.</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2786'
[10/Apr/2026:20:25:26] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What is a pyramid?</p><p><br></p>', answer_text = '<p>A pyramid is a 3D object made up of only one base and is connected by triangles (which serve as lateral faces) meeting at the apex.</p><p><br></p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2786'~2026-04-10 20:25:26:0426~2026-04-10 20:25:26~success
[10/Apr/2026:20:25:26] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:25:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:27] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:25:27] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) serviceName user_data
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:25:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:27] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:25:27] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:25:27] (root_api-) serviceName deck_data
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2787,'1','1','0', NOW(), '184')
[10/Apr/2026:20:25:27] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2787,'1','1','0', NOW(), '184')~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2787, 2787,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:25:27] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2787, 2787,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2787' WHERE card_id= 2787~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2787,'90','2787','13', NOW(), '184')
[10/Apr/2026:20:25:27] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2787,'90','2787','13', NOW(), '184')~2026-04-10 20:25:27:0427~2026-04-10 20:25:27~success
[10/Apr/2026:20:25:27] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2787"}
[10/Apr/2026:20:25:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:28] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:25:28] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) serviceName user_data
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:25:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:28] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:28] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) serviceName course_data
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:25:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:28] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2787 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:28] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) serviceName course_data
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2787' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2787 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2787 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2787","card_style":"0","card_title":"Card#2787","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"13","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:25:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:28] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:28] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:25:28] (root_api-) serviceName course_data
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:28] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:25:28] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:25:28] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) serviceName course_data
[10/Apr/2026:20:25:28] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:25:28:0428~2026-04-10 20:25:28~success
[10/Apr/2026:20:25:28] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:25:29] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:25:29] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:25:29] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:25:29] (root_api-) serviceName common_data
[10/Apr/2026:20:25:29] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:26:25] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:26:25] (root_api-) 
[10/Apr/2026:20:26:25] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:26:25] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:26:25] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:25] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>What are the differences between a prism and a pyramid?</p><p><br></p> ,answerText => <p>1. Prism has 2 bases, whereas pyramids have one base.</p><p>2. Prisms are connected by parallelograms, whereas pyramids are connected by triangles.</p><p>3. Prism's lateral faces meet at edges, whereas a pyramid's lateral faces meet at an apex.</p> ,editCardId => 2787 ,action => SAVE_AND_NEXT ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:26:25] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:26:25] (root_api-) serviceName deck_data
[10/Apr/2026:20:26:25] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2787'~2026-04-10 20:26:25:0425~2026-04-10 20:26:25~success
[10/Apr/2026:20:26:25] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2787'~2026-04-10 20:26:25:0425~2026-04-10 20:26:25~success
[10/Apr/2026:20:26:25] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>What are the differences between a prism and a pyramid?</p><p><br></p>', answer_text = '<p>1. Prism has 2 bases, whereas pyramids have one base.</p><p>2. Prisms are connected by parallelograms, whereas pyramids are connected by triangles.</p><p>3. Prism\'s lateral faces meet at edges, whereas a pyramid\'s lateral faces meet at an apex.</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2787'
[10/Apr/2026:20:26:25] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>What are the differences between a prism and a pyramid?</p><p><br></p>', answer_text = '<p>1. Prism has 2 bases, whereas pyramids have one base.</p><p>2. Prisms are connected by parallelograms, whereas pyramids are connected by triangles.</p><p>3. Prism\'s lateral faces meet at edges, whereas a pyramid\'s lateral faces meet at an apex.</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2787'~2026-04-10 20:26:25:0425~2026-04-10 20:26:25~success
[10/Apr/2026:20:26:25] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE_AND_NEXT"}
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) serviceName user_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => createBlankCard ,course_id => 25 ,cardDeckId => 90 ,userId => 184 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= createBlankCard of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) serviceName deck_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(1) as deckCount FROM tbl_deck WHERE deck_id = '90'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select ifnull(max(card_parent_id),0)+1 as maxId from tbl_card_parent~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) In case tbl_card_parent Insert query = INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2788,'1','1','0', NOW(), '184')
[10/Apr/2026:20:26:27] (root_api-) Query~INSERT into tbl_card_parent (card_parent_id, last_version, draft_version, published_version, creation_date, created_by) 
                    VALUES (2788,'1','1','0', NOW(), '184')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select ifnull(max(card_parent_id),0) as lastInsertedId from tbl_card_parent~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select ifnull(max(card_id),0)+1 as maxId from tbl_card~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) In case tbl_card Insert query = INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2788, 2788,  1, '0','Draft','main','','', NOW(), '184')
[10/Apr/2026:20:26:27] (root_api-) Query~INSERT into tbl_card (card_id, card_parent_id, version, card_style, status, card_type, question_text, answer_text, creation_date, created_by) 
                     VALUES (2788, 2788,  1, '0','Draft','main','','', NOW(), '184')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select ifnull(max(card_id),0) as lastInsertedId from tbl_card~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~UPDATE tbl_card set card_title = 'Card#2788' WHERE card_id= 2788~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT IFNULL(MAX(sequence), 0) as lastSequenceNumber FROM tbl_deck_card WHERE deck_id = '90'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select ifnull(max(deck_card_id),0)+1 as maxId from tbl_deck_card~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) In case tbl_deck_card Insert query = INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2788,'90','2788','14', NOW(), '184')
[10/Apr/2026:20:26:27] (root_api-) Query~INSERT into tbl_deck_card (deck_card_id, deck_id, card_id, sequence, creation_date, created_by) 
                        VALUES (2788,'90','2788','14', NOW(), '184')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok","message":"Card inserted Successfully!!","Errorcode":"","data":"2788"}
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) serviceName user_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) serviceName course_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) serviceName course_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) serviceName course_data
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:27] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2788 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:26:27] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) serviceName course_data
[10/Apr/2026:20:26:27] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:26:27] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2788' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2788 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:26:27] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2788 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:26:27:0427~2026-04-10 20:26:27~success
[10/Apr/2026:20:26:27] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2788","card_style":"0","card_title":"Card#2788","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"","cardStatus":"Draft","answer_text":"","deck_id":"90","cardSequence":"14","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:26:28] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:26:28] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:26:28] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:26:28] (root_api-) serviceName common_data
[10/Apr/2026:20:26:28] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
[10/Apr/2026:20:27:29] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:27:29] (root_api-) deckId => 90 ,cardId => 2788 ,courseId => 25 ,mediafor => Q ,userId => 184 ,action => cardImage ,op => updateCardImage ,serviceName => course_data ,clid => 66bbc87451ad3590b670daae13ee0619 ,
[10/Apr/2026:20:27:29] (root_api-) OP= updateCardImage of page root_api.php
[10/Apr/2026:20:27:29] (root_api-) serviceName course_data
[10/Apr/2026:20:27:29] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"mediafor":"Q","img_url":"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2788\/image 7 jpeg..jpg"}}
[10/Apr/2026:20:27:45] (root_api-) token =  IP = 169.0.141.80
[10/Apr/2026:20:27:45] (root_api-) 
[10/Apr/2026:20:27:45] (root_api-) OP=  of page root_api.php
[10/Apr/2026:20:27:45] (root_api-) Final JSON =  { "status":"error",
					"message":"Invalid Session",
					"Errorcode":"err100",
					"data":{}}
[10/Apr/2026:20:27:45] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:45] (root_api-) op => user-card-operation ,userId => 184 ,courseId => 25 ,cardDeckMode => edit ,cardDeckId => 90 ,questionText => <p>Label the following polyhedrons as either a prism or pyramid.</p><p><img src="https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2788/image 7 jpeg..jpg" style="width: 525px;"></p><p><br></p><p><br></p> ,answerText => <p>A. Pyramid</p><p>B. Prism</p><p>C. Neither</p> ,editCardId => 2788 ,action => SAVE ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => deck_data ,
[10/Apr/2026:20:27:45] (root_api-) OP= user-card-operation of page root_api.php
[10/Apr/2026:20:27:45] (root_api-) serviceName deck_data
[10/Apr/2026:20:27:45] (root_api-) Query~SELECT count(1) as deckCardCount FROM tbl_deck_card WHERE deck_id = '90' AND card_id = '2788'~2026-04-10 20:27:45:0445~2026-04-10 20:27:45~success
[10/Apr/2026:20:27:45] (root_api-) Query~SELECT question_text, answer_text FROM tbl_card  WHERE card_id = '2788'~2026-04-10 20:27:45:0445~2026-04-10 20:27:45~success
[10/Apr/2026:20:27:45] (root_api-) In case Card Updated query = UPDATE tbl_card SET card_style = '0' , question_text = '<p>Label the following polyhedrons as either a prism or pyramid.</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2788/image 7 jpeg..jpg\" style=\"width: 525px;\"></p><p><br></p><p><br></p>', answer_text = '<p>A. Pyramid</p><p>B. Prism</p><p>C. Neither</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2788'
[10/Apr/2026:20:27:45] (root_api-) Query~UPDATE tbl_card SET card_style = '0' , question_text = '<p>Label the following polyhedrons as either a prism or pyramid.</p><p><img src=\"https://bo.coglearn.cioinfotech.com/upload/courses/course_25/deck_90/card_2788/image 7 jpeg..jpg\" style=\"width: 525px;\"></p><p><br></p><p><br></p>', answer_text = '<p>A. Pyramid</p><p>B. Prism</p><p>C. Neither</p>', card_type='main', updation_date = NOW(), updated_by = '184', card_title = '', card_image_url = '', 
                    onlyTextQuestion = '', onlyTextAnswer = '' 
                    WHERE card_id = '2788'~2026-04-10 20:27:45:0445~2026-04-10 20:27:45~success
[10/Apr/2026:20:27:45] (root_api-) Final JSON =  {"status":"ok","message":"Card Created Successfully!!","Errorcode":"","data":"","action":"SAVE"}
[10/Apr/2026:20:27:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:47] (root_api-) op => getSwitchRoles ,user_id => 184 ,org_id => 1 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => user_data ,
[10/Apr/2026:20:27:47] (root_api-) OP= getSwitchRoles of page root_api.php
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(1) as cnt FROM tbl_org  WHERE status = 'Active' AND org_id ='1'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(1) as cnt FROM tbl_user_org u WHERE u.status = 'Active' AND u.user_id ='184' AND  org_id ='1'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) serviceName user_data
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT u.user_org_id, u.org_id, u.role_id, um.email,o.org_name,r.role_name,o.short_name,CONCAT(u.role_id,'_',u.org_id) as user_org_role
            FROM tbl_user_org u 
            inner join tbl_org o on u.org_id=o.org_id
            inner join tbl_role_master r on r.role_id=u.role_id
            inner join tbl_user_master um on u.user_id = um.user_id
            where u.user_id= 184~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Final JSON =  {"status":"ok","message":"User Details fetched Successfully!!","Errorcode":"","data":[{"user_org_id":"225","org_id":"1","role_id":"3","email":"alhenaude20@gmail.com","org_name":"University Of Cape Town","role_name":"Learner","short_name":"UCT","user_org_role":"3_1"},{"user_org_id":"226","org_id":"2","role_id":"2","email":"alhenaude20@gmail.com","org_name":"C-Institute","role_name":"Educator","short_name":"C-Institute","user_org_role":"2_2"}]}
[10/Apr/2026:20:27:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:47] (root_api-) op => getUsersCourseRole ,user_id => 184 ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:27:47] (root_api-) OP= getUsersCourseRole of page root_api.php
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) serviceName course_data
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT ed_role FROM tbl_course_educator WHERE  course_id = '25' AND user_id = 184~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":{"ed_role":"author"}}
[10/Apr/2026:20:27:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:47] (root_api-) op => get-my-contents-card-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,cardId => 2788 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:27:47] (root_api-) OP= get-my-contents-card-info of page root_api.php
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) serviceName course_data
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT tc.card_id,tc.card_style,tc.card_title,tc.card_image_url,tc.card_video_url, CASE WHEN tc.card_style = 0 THEN 'Text' ELSE 'Image' END AS card_styleText  , tc.question_text, tc.status AS cardStatus, tc.answer_text, dc.deck_id,dc.sequence as cardSequence, tc.version, tc.card_parent_id
            FROM tbl_card tc
            INNER JOIN tbl_deck_card dc ON dc.card_id = tc.card_id
            Where dc.deck_id = '90' AND tc.card_id = '2788' AND tc.card_type = 'main' /*AND tc.created_by = '184'*/~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select tc.card_parent_id, dc.deck_id as card_parent_deckid, tcd.course_id as card_parent_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2788 AND tc.version = 0 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select tc.card_id as card_child_id, dc.deck_id as card_child_deckid, tcd.course_id as card_child_courseid from tbl_card tc, tbl_deck_card dc, tbl_course_deck tcd WHERE tc.card_parent_id=2788 AND tc.version = 2 AND tc.card_parent_id=dc.card_id AND dc.deck_id=tcd.deck_id~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"card_id":"2788","card_style":"0","card_title":"","card_image_url":"","card_video_url":"","card_styleText":"Text","question_text":"<p>Label the following polyhedrons as either a prism or pyramid.<\/p><p><img src=\"https:\/\/bo.coglearn.cioinfotech.com\/upload\/courses\/course_25\/deck_90\/card_2788\/image 7 jpeg..jpg\" style=\"width: 525px;\"><\/p><p><br><\/p><p><br><\/p>","cardStatus":"Draft","answer_text":"<p>A. Pyramid<\/p><p>B. Prism<\/p><p>C. Neither<\/p>","deck_id":"90","cardSequence":"14","version":"1","card_parent_id":null,"card_parent_deckid":null,"card_parent_courseid":null,"card_child_id":null,"card_child_deckid":null,"card_child_courseid":null}}
[10/Apr/2026:20:27:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:47] (root_api-) op => getCourseDetail ,course_id => 25 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:27:47] (root_api-) OP= getCourseDetail of page root_api.php
[10/Apr/2026:20:27:47] (root_api-) serviceName course_data
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT * FROM tbl_course where course_id = '25' AND status NOT IN('Discard')~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT course_image_id, course_image, sequence, status FROM tbl_course_images where course_id = 25 ORDER BY sequence DESC~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select course_id as prev_course_id from tbl_course where course_parent_id = 25 AND version = 0 AND status NOT IN('Discard')~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select course_id as next_course_id from tbl_course where course_parent_id = 25 AND version = 2 AND status NOT IN('Discard')~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Final JSON =  {"status":"ok","message":"Course Details fetched Successfully","Errorcode":"","data":[{"course_id":"25","course_parent_id":"25","version":"1","org_id":"2","course_name":"Grade 8 Mathematics","short_name":"","status":"Draft","eval_id":"1","course_desc":"Grade 8 Mathematics aims to build strong foundational skills required to prepare learners for higher grades of mathematics and develop strong, appropriate mathematical reasoning and logical thinking. ","amount":"0","currency":null,"pay_type":"paid","course_brief":null,"course_duration":"16","background_color":"","text_color":"","creation_date":"2025-07-16 13:21:03","created_by":"184","updation_date":"2026-01-07 12:53:22","updated_by":"184","images":[],"parentid":"","childid":""}]}
[10/Apr/2026:20:27:47] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:47] (root_api-) op => get-my-contents-deck-info ,user_id => 184 ,course_id => 25 ,deckId => 90 ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => course_data ,
[10/Apr/2026:20:27:47] (root_api-) OP= get-my-contents-deck-info of page root_api.php
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT count(u.user_id) as cnt FROM tbl_user_master u WHERE u.isActive = '1' AND u.user_id ='184'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) serviceName course_data
[10/Apr/2026:20:27:47] (root_api-) Query~SELECT td.deck_id, td.created_by, tcd.course_id, 
            ifnull(tcd.deck_name,td.deck_name) deck_name,
            ifnull(tcd.short_name,td.short_name) short_name,
            ifnull(tcd.eval_id,td.eval_id) eval_id,
            ifnull(tcd.deck_desc,td.deck_desc) deck_desc,
            ifnull(tcd.deck_brief,td.deck_brief) deck_brief,
            td.status AS deckStatus,
            td.version
            FROM tbl_deck td 
            INNER JOIN tbl_course_deck tcd ON tcd.deck_id = td.deck_id AND course_id = '25' AND tcd.created_by = '184'
            Where td.deck_id = '90' AND td.deck_type = 'main' AND td.created_by = '184'~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select td.deck_parent_id, cd.course_id as parent_courseid from tbl_deck td, tbl_course_deck cd where td.deck_id = 90 AND td.deck_parent_id <> 90 AND td.deck_parent_id = cd.deck_id~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Query~select td.deck_id as deck_child_id, cd.course_id as child_courseid from tbl_deck td, tbl_course_deck cd where td.deck_parent_id = 90 AND td.deck_id <> 90 AND td.deck_id = cd.deck_id~2026-04-10 20:27:47:0447~2026-04-10 20:27:47~success
[10/Apr/2026:20:27:47] (root_api-) Final JSON =  {"status":"ok",
                    "message":"",
                    "Errorcode":"",
                    "data":{"deck_id":"90","created_by":"184","course_id":"25","deck_name":"Geometry of 3D shapes ","short_name":"3D shapes ","eval_id":"1","deck_desc":"Geometry of 3D shapes focuses on being able to differenciate between a face, vertice and edge as well as the different types of 3D shapes. Some of these shapes will also be represented as nets and learners should be able to identify what shapes these nets can make. ","deck_brief":"","deckStatus":"Draft","version":"1","parentid":"","childid":""}}
[10/Apr/2026:20:27:48] (root_api-) token = 66bbc87451ad3590b670daae13ee0619 IP = 169.0.141.80
[10/Apr/2026:20:27:48] (root_api-) op => api-refresh ,clid => 66bbc87451ad3590b670daae13ee0619 ,serviceName => common_data ,
[10/Apr/2026:20:27:48] (root_api-) OP= api-refresh of page root_api.php
[10/Apr/2026:20:27:48] (root_api-) serviceName common_data
[10/Apr/2026:20:27:48] (root_api-) Final JSON =  {"status":"ok","message":"","Errorcode":"","data":""}
