@@ -30,22 +30,27 @@ class SyncController extends ApiController
3030 /** @var UtilityService $util */
3131 protected $ util ;
3232
33+ private function isCurrentVersion (Course $ course ): bool {
34+ $ previousReport = $ course ->getLatestReport ();
35+ if ($ previousReport ) {
36+ $ data = json_decode ($ previousReport ->getData ());
37+ $ currentVersionNumber = !empty ($ _ENV ['VERSION_NUMBER ' ]) ? $ _ENV ['VERSION_NUMBER ' ] : '' ;
38+ if (isset ($ data ->versionNumber ) && $ data ->versionNumber === $ currentVersionNumber ) {
39+ return true ;
40+ }
41+ }
42+ return false ;
43+ }
44+
3345 private ManagerRegistry $ doctrine ;
3446
3547 public function __construct (ManagerRegistry $ doctrine )
3648 {
3749 $ this ->doctrine = $ doctrine ;
3850 }
39-
40- #[Route('/api/sync/{course} ' , name: 'request_sync ' )]
41- public function requestSync (Course $ course ,
42- LmsFetchService $ lmsFetch ,
43- UserRepository $ userRepo ,
44- CourseUserRepository $ courseUserRepo ,
45- EntityManagerInterface $ em ,
46- LmsApiService $ lmsApi
47- )
48- {
51+
52+ private function executeScan (Course $ course , LmsFetchService $ lmsFetch , bool $ force ) {
53+
4954 $ response = new ApiResponse ();
5055 $ user = $ this ->getUser ();
5156 $ reportArr = false ;
@@ -62,18 +67,6 @@ public function requestSync(Course $course,
6267 throw new \Exception ('msg.sync.course_inactive ' );
6368 }
6469
65- // Check to see if the CODE (based on version number) has been updated since the last scan.
66- // If so (or if we can't tell), force a full rescan.
67- $ force = true ;
68- $ previousReport = $ course ->getLatestReport ();
69- if ($ previousReport ) {
70- $ data = json_decode ($ previousReport ->getData ());
71- $ currentVersionNumber = !empty ($ _ENV ['VERSION_NUMBER ' ]) ? $ _ENV ['VERSION_NUMBER ' ] : '' ;
72- if (isset ($ data ->versionNumber ) && $ data ->versionNumber === $ currentVersionNumber ) {
73- $ force = false ;
74- }
75- }
76-
7770 $ lmsFetch ->refreshLmsContent ($ course , $ user , $ force );
7871
7972 $ report = $ course ->getLatestReport ();
@@ -116,56 +109,17 @@ public function requestSync(Course $course,
116109 return new JsonResponse ($ response );
117110 }
118111
112+ #[Route('/api/sync/{course} ' , name: 'request_sync ' )]
113+ public function requestSync (Course $ course , LmsFetchService $ lmsFetch )
114+ {
115+ $ force = ! $ this ->isCurrentVersion ($ course );
116+
117+ return $ this ->executeScan ($ course , $ lmsFetch , $ force );
118+ }
119+
119120 #[Route('/api/sync/rescan/{course} ' , name: 'full_rescan ' )]
120121 public function fullCourseRescan (Course $ course , LmsFetchService $ lmsFetch ) {
121- $ response = new ApiResponse ();
122- $ user = $ this ->getUser ();
123- $ reportArr = false ;
124-
125- try {
126- if (!$ this ->userHasCourseAccess ($ course )) {
127- throw new \Exception ('msg.no_permissions ' );
128- }
129- if ($ course ->isDirty ()) {
130- throw new \Exception ('msg.course_scanning ' );
131- }
132- if (!$ course ->isActive ()) {
133- $ response ->setData (0 );
134- throw new \Exception ('msg.sync.course_inactive ' );
135- }
136-
137- $ lmsFetch ->refreshLmsContent ($ course , $ user , true );
138-
139- $ report = $ course ->getLatestReport ();
140-
141- if (!$ report ) {
142- throw new \Exception ('msg.no_report_created ' );
143- }
144-
145- $ reportArr = $ report ->toArray ();
146- $ reportArr ['files ' ] = $ course ->getFileItems ();
147- $ reportArr ['issues ' ] = $ course ->getAllIssues ();
148- $ reportArr ['contentItems ' ] = $ course ->getContentItems ();
149- $ reportArr ['contentSections ' ] = $ lmsFetch ->getCourseSections ($ course , $ user );
150-
151- $ response ->setData ($ reportArr );
152-
153- $ reportData = json_decode ($ report ->getData ());
154- if (isset ($ reportData ->itemsScanned ) && $ reportData ->itemsScanned > 0 ) {
155- $ response ->addMessage ('msg.new_content ' , 'success ' , 5000 );
156- } else {
157- $ response ->addMessage ('msg.no_new_content ' , 'success ' , 5000 );
158- }
159-
160- } catch (\Exception $ e ) {
161- if ('msg.course_scanning ' === $ e ->getMessage ()) {
162- $ response ->addMessage ($ e ->getMessage (), 'info ' , 0 , false );
163- } else {
164- $ response ->addMessage ($ e ->getMessage (), 'error ' , 0 );
165- }
166- }
167-
168- return new JsonResponse ($ response );
122+ return $ this ->executeScan ($ course , $ lmsFetch , true );
169123 }
170124
171125 #[Route('/api/sync/content/{contentItem} ' , name: 'content_sync ' , methods: ['GET ' ])]
0 commit comments