/**
  * @todo check status of profile in auth that it is filled or not
  * Enter description here ...
  */
 public function profileAction()
 {
     $this->_helper->viewRenderer->setNoRender(false);
     $this->_helper->layout()->enableLayout();
     $request = $this->getRequest();
     $params = array_diff($request->getParams(), $request->getUserParams());
     $member_id = null;
     //Zend_Registry::get('logger')->debug('member_id may be sent in as parameter'get('logger')->debug(
     //Zend_Registry::get('logger')->debug('member_id may be sent in as parameter');
     if (empty($params['member_id'])) {
         $member_id = $this->getMember_id();
     } else {
         $member_id = $params['member_id'];
     }
     $format = $this->_getParam('format', 'html');
     $this->_helper->viewRenderer->setNoRender(false);
     $student_model = new Acad_Model_Member_Student();
     $student_model->setMember_id($member_id);
     $filled_qualifications = array();
     $qualification_model = new Acad_Model_Qualification();
     $qualifications = $qualification_model->fetchQualifications();
     $qualfication_id_array = $student_model->fetchQualificationsIds();
     if (is_array($qualfication_id_array)) {
         $qualification_ids = array_flip($qualfication_id_array);
         $filled_qualifications = array_intersect_key($qualifications, $qualification_ids);
     }
     $degree_data = array();
     $info = array();
     $class_ids = array();
     $class_semester = array();
     $class_dmc_info_ids = array();
     $dmc_dispatch_dates = array();
     $no_details_sems = array();
     $student = new Acad_Model_Member_Student();
     $student->setMember_id($member_id);
     $class_ids = $student->fetchAllClassIds();
     $class = new Acad_Model_Class();
     foreach ($class_ids as $class_id) {
         $class->setClass_id($class_id);
         $class->fetchInfo();
         $semester_id = $class->getSemester_id();
         $class_semester[$class_id] = $semester_id;
     }
     foreach ($class_semester as $class_idA => $sem) {
         $dmc_info_ids = array();
         $dmc_info_ids = $student->fetchDmcInfoIds($class_idA);
         if (!$dmc_info_ids) {
             $dmc_info_ids = array();
             $no_details_sems[] = $sem;
         } else {
             $class_dmc_info_ids[$class_idA] = $dmc_info_ids;
         }
     }
     $dmc_dispatch_dates = $student->fetchDmcInfoIdsByDate(true);
     foreach ($class_dmc_info_ids as $class_idB => $dmc_info_id_array) {
         $semester_idA = $class_semester[$class_idB];
         foreach ($dmc_info_id_array as $dmc_info_id => $dmc_id) {
             $degree_data[$semester_idA][$dmc_info_id]['class_id'] = $class_idB;
             $degree_data[$semester_idA][$dmc_info_id]['dmc_id'] = $dmc_id;
             $degree_data[$semester_idA][$dmc_info_id]['dispatch_date'] = $dmc_dispatch_dates[$dmc_info_id];
         }
     }
     foreach ($no_details_sems as $no_details_sem) {
         $degree_data[$no_details_sem][] = array();
     }
     $exam_model = new Acad_Model_CompetitiveExam();
     $exams = $exam_model->fetchExams();
     $present_exam_ids_array = $student_model->fetchCompetitveExamIds();
     $filled_exams = array();
     if ($present_exam_ids_array) {
         $present_exam_ids = array_flip($present_exam_ids_array);
         $filled_exams = array_intersect_key($exams, $present_exam_ids);
     }
     $response = array('degree_data' => $degree_data, 'qualifications' => $qualifications, 'filled_qualifications' => $filled_qualifications, 'exams' => $exams, 'filled_exams' => $filled_exams);
     //Zend_Registry::get('logger')->debug('member_id may be sent in as parameter'get('logger')->debug($response);
     switch ($format) {
         case 'html':
             $this->view->assign('filled_qualifications', $filled_qualifications);
             $this->view->assign('degree_data', $degree_data);
             $this->view->assign('class_semester', $class_semester);
             $this->view->assign('qualifications', $qualifications);
             $this->view->assign('exams', $exams);
             $this->view->assign('filled_exams', $filled_exams);
             break;
         case 'jsonp':
             $callback = $this->getRequest()->getParam('callback');
             echo $callback . '(' . $this->_helper->json($filled_qualifications, false) . ')';
             break;
         case 'json':
             $this->_helper->json($filled_qualifications);
             break;
         case 'test':
             break;
         default:
             break;
     }
 }