Ejemplo n.º 1
0
 public function executeStudentRegradeDetail(sfWebRequest $request)
 {
     ## <SectionDetail>, <StudentDetail>, <GradedCourses> <CreateForm> <activatedRegrades> ## THESE ARE NEEDED STEP BY STEP
     $this->showCourseGrades = FALSE;
     $this->showFormResult = FALSE;
     $this->showActivatedRegrade = FALSE;
     $this->registrationIdsArray = array();
     $this->coursesIdsArray = array();
     $this->regradeRegistrationIdsArray = array();
     $this->activatedCourseIdsArray = array();
     $this->departmentName = $this->getUser()->getAttribute('departmentName');
     $this->programSectionId = $request->getParameter('sectionId');
     $this->studentId = $request->getParameter('studentId');
     $this->enrollmentId = $request->getParameter('enrollmentId');
     $this->sectionDetail = Doctrine_Core::getTable('ProgramSection')->getOneProgramSectionById($this->programSectionId);
     $this->studentDetail = Doctrine_Core::getTable('Student')->getStudentDetailById($this->studentId);
     $this->programName = Doctrine_Core::getTable('ProgramSection')->getOneProgramSectionById($this->programSectionId)->getProgram();
     ## RETRIEVE STUDENT REGISTERED COURSES UNDER ONE SEMESTER ENROLLMENT,
     #1. Find enrollment
     $this->enrollment = Doctrine_Core::getTable('EnrollmentInfo')->findOneStudentEnrollmentInforById($this->enrollmentId);
     $this->forward404Unless($this->enrollment);
     #2. Find all Registrations per enrollment above
     $this->registrations = Doctrine_Core::getTable('Registration')->getEnrollmentRegistrations($this->enrollment->getId());
     $this->forward404Unless($this->registrations);
     foreach ($this->registrations as $registration) {
         $this->registrationIdsArray[$registration->getId()] = $registration->getId();
         if ($registration->getIsGradeComplain() == TRUE || $registration->getIsMakeup() == TRUE || $registration->getIsReexam() == TRUE) {
             $this->regradeRegistrationIdsArray[$registration->getId()] = $registration->getId();
         }
     }
     #3. Find all courses [StudentCourseGrade] under each Registration, a)Calculatables, b)Have Grade
     $this->activeGradedStudentCourses = Doctrine_Core::getTable('StudentCourseGrade')->getActiveRegistrationCourses($this->registrationIdsArray, $this->studentId);
     $this->forward404Unless($this->activeGradedStudentCourses);
     #3.1 Check if there graded courses
     if ($this->activeGradedStudentCourses->count() != 0) {
         $this->showCourseGrades = TRUE;
     }
     #3.2 Find all courses [StudentCourseGrade] under each Registration, a)Calculatables, b)Have Grade c)not under regrade process (not activated)
     $this->activeNotReGradedStudentCourses = Doctrine_Core::getTable('StudentCourseGrade')->getActiveRegistrationNotRegradedCourses($this->registrationIdsArray, $this->studentId);
     $this->forward404Unless($this->activeNotReGradedStudentCourses);
     #4. PREPARE REGRADE REQUEST FORM
     ##COURSE
     $this->coursesIdsArray[''] = 'Select Course to Regrade';
     foreach ($this->activeNotReGradedStudentCourses as $course) {
         $this->coursesIdsArray[$course->getCourseId()] = $course->getCourse();
     }
     ##REGRADE - FROM FormChoices
     ##AC MINUTE, REMARK
     ## THE FORM
     $this->frontendRegradeRequestForm = new FrontendRegradeRequestForm($this->enrollmentId, $this->studentId, $this->coursesIdsArray);
     #5. ACTIVATED REGRADES
     #5.1 - Get all special / regrade registrations
     $this->activatedCoursesForRegrade = Doctrine_Core::getTable('StudentCourseGrade')->getActivatedCoursesForRegrade($this->regradeRegistrationIdsArray, $this->studentId);
     $this->forward404Unless($this->activatedCoursesForRegrade);
     #5.2 - Arrange activated regradable courses for form
     if ($this->activatedCoursesForRegrade->count() != 0) {
         $this->showActivatedRegrade = TRUE;
         $this->activatedCourseIdsArray[''] = '-- Select Course To Regrade --';
         foreach ($this->activatedCoursesForRegrade as $activatedCFR) {
             $this->activatedCourseIdsArray[$activatedCFR->getId()] = $activatedCFR->getCourse();
         }
         #KEEP COURSE ID ARRAY ON SESSION, TO BE USED WHEN REGRADE VALUE IS ENTERED
         $this->getUser()->setAttribute('activatedCourseIdsArray', $this->activatedCourseIdsArray);
     }
     #6. DATAWORKER FOR VIEW
     $gradeChoices = Doctrine_Core::getTable('Grade')->getAllLetterGradeChoices();
     $this->getUser()->setAttribute('gradeChoices', $gradeChoices);
     ## created for use when new regrade value is entered,
     $this->frontendRegradeSubmissionForm = new FrontendRegradeSubmissionForm($this->enrollmentId, $this->studentId, $this->activatedCourseIdsArray, $gradeChoices);
     ### PROCESS THE FORM IF SUBMITTED ###
     if ($request->isMethod('post')) {
         $this->frontendRegradeRequestForm->bind($request->getParameter('regraderequestform'));
         if ($this->frontendRegradeRequestForm->isValid()) {
             $formData = $this->frontendRegradeRequestForm->getValues();
             $this->courseId = $formData['course_id'];
             $this->regradeReason = $formData['regrade_reason'];
             $this->studentId = $formData['student_id'];
             $this->enrollmentInfoId = $formData['enrollment_info_id'];
             $this->remark = $formData['remark'];
             $this->ac = $formData['ac'];
             if ($this->courseId == '' || $this->regradeReason == '' || $this->studentId == '' || $this->enrollmentInfoId == '') {
                 $this->getUser()->setFlash('error', 'Error occured: nothing performed, please redo actions ');
                 $this->redirect('regrade/studentRegradeDetail?sectionId=' . $this->programSectionId . '&studentId=' . $this->studentId . '&enrollmentId=' . $this->enrollmentId);
             }
             ## REGISTER STUDENT BASED ON ENROLLMENTINFO FOR SPECIFIED REGRADE REASON
             $registration = new Registration();
             $registration->setEnrollmentInfoId($this->enrollmentInfoId);
             $registration->setAc($this->ac);
             $registration->setDate(date('m-d-Y'));
             $registration->setRemark($this->remark);
             if ($this->regradeReason == 'gradecomplain') {
                 $registration->setIsGradeComplain(TRUE);
             }
             if ($this->regradeReason == 'reexam') {
                 $registration->setIsReexam(TRUE);
             }
             if ($this->regradeReason == 'makeup') {
                 $registration->setIsMakeup(TRUE);
             }
             $registration->save();
             ## STUDENTCOURSEGRADE -----------> NEW COURSE RE-REGISTERED
             $student = new StudentCourseGrade();
             $student->setStudentId($this->studentId);
             $student->setRegistrationId($registration->getId());
             $student->setCourseId($this->courseId);
             $student->setIsRepeated(TRUE);
             $student->setIsCalculated(FALSE);
             $student->setRegradeStatus(2);
             $student->save();
             ## STUDENTCOURSEGRADE ------------> EXISTING COURSE / ONE NEEDED TO BE CHANGED
             $normalRegistration = Doctrine_Core::getTable('Registration')->getNormalRegistrationByEnrollmentId($this->enrollmentInfoId);
             $oldStudentCourseGrade = Doctrine_Core::getTable('StudentCourseGrade')->getRegisteredGradedCourse($normalRegistration->getId(), $this->studentId, $this->courseId);
             $oldStudentCourseGrade->setRegradeStatus(4);
             $oldStudentCourseGrade->save();
             //$this->showFormResult=TRUE;
             ##Do Logging!!
             $newLog = new AuditLog();
             $action = 'The Department Head has Activated  Student Regreade Process';
             $newLog->addNewLogInfo($this->getUser()->getAttribute('userId'), $action);
             $this->getUser()->setFlash('notice', 'Successfuly Activated Regrade Process');
             $this->redirect('regrade/studentRegradeDetail?sectionId=' . $this->programSectionId . '&studentId=' . $this->studentId . '&enrollmentId=' . $this->enrollmentId);
         }
     }
     #$this->sectionCourses   = Doctrine_Core::getTable('Course')->getCoursesByCourseIds($courseIds);
 }