From 0eb76deb99adce3aafd44f35ebaebf8a0fda502e Mon Sep 17 00:00:00 2001
From: Roger Feese <rfeese@unl.edu>
Date: Mon, 18 Aug 2014 17:09:19 -0500
Subject: [PATCH] Added a method to update the ace recertification questions
 for a course model in memory.

---
 .../courses/controllers/EditController.php    |  5 ++-
 .../modules/courses/models/CourseModel.php    | 43 +++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/application/modules/courses/controllers/EditController.php b/application/modules/courses/controllers/EditController.php
index cc41c5aa..f57cd3d7 100644
--- a/application/modules/courses/controllers/EditController.php
+++ b/application/modules/courses/controllers/EditController.php
@@ -257,9 +257,12 @@ class Courses_EditController extends Creq_Controller_Action
             unset($session->currentSavedRequestId);
         }
 
+	//make sure the request is using the current ACE recertification questions
+	$course->updateAceRecertification();
+	
         $session->request = $request;
         $session->course = $course;
-        $session->parentCourse = $parentCourse;
+	$session->parentCourse = $parentCourse;
 
         $this->_redirect('/courses/edit/index/id/' . $tempId);
     }
diff --git a/application/modules/courses/models/CourseModel.php b/application/modules/courses/models/CourseModel.php
index 98553dcf..7f6f7652 100644
--- a/application/modules/courses/models/CourseModel.php
+++ b/application/modules/courses/models/CourseModel.php
@@ -3901,5 +3901,48 @@ class Courses_CourseModel extends Unl_Model
 
         return $changes;
     }
+
+    /**
+     * Update the ace recertification questions and answers. If there is a new version of the question set, it will be pulled in.
+     */
+    public function updateAceRecertification()
+    {
+	$db = Zend_Registry::get('db');
+        $select = new Zend_Db_Select($db);
+        $select->from(array('a' => 'creqCourseAceRecertifications'));
+        $select->where('a.generation = ?', $this->_data['course']);
+
+	$record = $select->query()->fetch();
+
+	if($record){
+           // for each AceRecertification record, get the questions and answers
+           //SELECT q.*, a.* FROM creq.creqCourseAceRecertifyAnswers AS a
+           //INNER JOIN creq.creqCourseAceRecertifyQuestions AS q ON a.questionId = q.courseAceRecertifyQuestionId
+           //INNER JOIN creq.creqCourseAceRecertifyQuestionSets AS s ON q.questionSetId = s.courseAceRecertifyQuestionSetId
+           //WHERE a.recertificationId = 785 ORDER BY q.questionSort;
+           $select = new Zend_Db_Select($db);
+           $select->from(array('a' => 'creqCourseAceRecertifyAnswers'));
+           $select->joinInner(array('q' => 'creqCourseAceRecertifyQuestions'), 'a.questionId = q.courseAceRecertifyQuestionId');
+           $select->joinInner(array('s' => 'creqCourseAceRecertifyQuestionSets'), 'q.questionSetId = s.courseAceRecertifyQuestionSetId');
+           $select->where('a.recertificationId = ?', $record['courseAceRecertificationId']);
+           $select->order('q.questionSort');
+           $recordsRecertQA = $select->query()->fetchAll();
+	}
+
+        if (!$recordsRecertQA || ($self->_data['type'] == "official" && !empty($recordsRecertQA[0]["dateRetired"]))) {
+            // load current empty question set
+            //SELECT q.* FROM creq.creqCourseAceRecertifyQuestionSets as s
+            //INNER JOIN creq.creqCourseAceRecertifyQuestions AS q ON s.courseAceRecertifyQuestionSetId = q.questionSetId
+            //WHERE s.dateRetired IS NULL ORDER BY q.questionSort;
+            $select = new Zend_Db_Select($db);
+            $select->from(array('s' => 'creqCourseAceRecertifyQuestionSets'));
+            $select->joinInner(array('q' => 'creqCourseAceRecertifyQuestions'), 's.courseAceRecertifyQuestionSetId = q.questionSetId');
+            $select->where('s.dateRetired IS NULL');
+            $select->order('q.questionSort');
+            $recordsRecertQA = $select->query()->fetchAll();
+	}
+
+        $self->_data['aceRecertification'] = $recordsRecertQA;
+    }
 }
 
-- 
GitLab