diff --git a/api/application/controllers/PD_Controller.php b/api/application/controllers/PD_Controller.php index cc6ab12c..37218c45 100644 --- a/api/application/controllers/PD_Controller.php +++ b/api/application/controllers/PD_Controller.php @@ -2270,8 +2270,8 @@ class PD_Controller extends REST_Controller { { $pd_form_raw_data = $this->PD_Model->getPDFormDetailsWithScoring($pd_id,$template_form_detail['form_id']); - $pd_score = $this->calculatePDScore($pd_form_raw_data); - $transformed_data = $this->transformKeyPairToQuestionAnswers($pd_form_raw_data,$template_form_detail['form_id']); + $pd_form_raw_data_with_score = $this->calculatePDScore($pd_form_raw_data); + $transformed_data = $this->transformKeyPairToQuestionAnswers($pd_form_raw_data_with_score,$template_form_detail['form_id']); $final_data_to_response['question_answers']['form_details'][] = array('name' =>[$template_form_detail['pd_form_name']],'details' => $transformed_data); @@ -2327,8 +2327,10 @@ class PD_Controller extends REST_Controller { $fields = array('question', 'key', 'ismaster', 'master_name'); $where_condition_array = array('fk_form_id' => $form_id,'isactive' => 1); $question_key_master_data = $this->PD_Model->selectCustomRecords($fields,$where_condition_array,QUESTIONKEYMAPPING); - //print_r($pd_form_raw_data); + //print_r($pd_form_raw_data);die(); $current_question_array = array(); + if(count($pd_form_raw_data)) + { foreach($pd_form_raw_data as $raw_key => $raw_data) { $que_key = $raw_data['column_name']; @@ -2340,7 +2342,7 @@ class PD_Controller extends REST_Controller { { if($master['ismaster'] != 1) { - $current_question_array[] = array('category_weightage' => $raw_data['category_weightage'],'question_weightage' => $raw_data['question_weightage'],'answer_score' => $raw_data['score'],'question'=>$master['question'],'answer'=>$raw_data['column_value']); + $current_question_array[] = array('category_id'=>$raw_data['fk_category_id'],'category_name'=>$raw_data['category_name'],'category_weightage' => $raw_data['category_weightage'],'question_weightage' => $raw_data['question_weightage'],'answer_score' => $raw_data['score'],'max_score' => $raw_data['max_score'],'question'=>$master['question'],'answer'=>$raw_data['column_value'],'actual_score'=>$raw_data['actual_score'],'exact_score'=>$raw_data['exact_score']); } else { @@ -2351,7 +2353,7 @@ class PD_Controller extends REST_Controller { if(count($result_data)) { //print_r($result_data); - $current_question_array[] = array('category_weightage' => $raw_data['category_weightage'],'question_weightage' => $raw_data['question_weightage'],'answer_score' => $raw_data['score'],'question'=>$master['question'],'answer'=>$result_data[0]['name']); + $current_question_array[] = array('category_id'=>$raw_data['fk_category_id'],'category_name'=>$raw_data['category_name'],'category_weightage' => $raw_data['category_weightage'],'question_weightage' => $raw_data['question_weightage'],'answer_score' => $raw_data['score'],'max_score' => $raw_data['max_score'],'question'=>$master['question'],'answer'=>$result_data[0]['name'],'actual_score'=>$raw_data['actual_score'],'exact_score'=>$raw_data['exact_score']); } // } @@ -2359,6 +2361,7 @@ class PD_Controller extends REST_Controller { } } } + } return $current_question_array ; @@ -3342,12 +3345,37 @@ class PD_Controller extends REST_Controller { // echo $ci_instant; } - public function calculatePDScore($pd_form_raw_data) + public function calculatePDScore($data) { - echo "calculatePDScore"; - print_r($pd_form_raw_data); - //die(); - echo "calculatePDScore\n\n\n\n"; + + $pd_form_raw_data = $data; + + $actual_score = 0; + $exact_score = 0; + foreach($pd_form_raw_data as $raw_key => $raw_data) + { + + if($raw_data['category_weightage'] != '' && $raw_data['question_weightage'] != '' && $raw_data['score'] != '' && $raw_data['max_score'] != '') + { + + + $pd_form_raw_data[$raw_key]['actual_score'] = (($raw_data['category_weightage']/100) * ($raw_data['question_weightage']/100) * $raw_data['max_score']); + $pd_form_raw_data[$raw_key]['exact_score'] = (($raw_data['category_weightage']/100) * ($raw_data['question_weightage']/100) * $raw_data['score']); + + // $actual_score = $actual_score + ($raw_data['category_weightage'] * $raw_data['question_weightage'] * $raw_data['max_score']); + // $exact_score = $exact_score + ($raw_data['category_weightage'] * $raw_data['question_weightage'] * $raw_data['score']); + + } + else + { + $pd_form_raw_data[$raw_key]['actual_score'] = null; + $pd_form_raw_data[$raw_key]['exact_score'] = null; + + } + } + + return $pd_form_raw_data; + } diff --git a/api/application/models/PD_Model.php b/api/application/models/PD_Model.php index 52029c01..6edd71df 100644 --- a/api/application/models/PD_Model.php +++ b/api/application/models/PD_Model.php @@ -999,31 +999,13 @@ class PD_Model extends SPARQ_Model { // echo $pd_form_id; $pd_master_detials = $this->getPDMasterDetails($pd_id); - //SUB QUERY START - - $this->db->SELECT('max(score)'); - $this->db->FROM(PDFORMDETAILS.' as PDFORMDETAILS'); - - $this->db->JOIN(SCORECARDQUESTIONS.' as SCORECARDQUESTIONS','PDFORMDETAILS.column_name = SCORECARDQUESTIONS.fk_key AND PDFORMDETAILS.fk_form_id = SCORECARDQUESTIONS.fk_form_id AND SCORECARDQUESTIONS.fk_template_id = '.$pd_master_detials[0]['fk_pd_template_id'].' AND SCORECARDQUESTIONS.isactive = 1','left'); - - $this->db->JOIN(SCORECARDANSWERS.' as SCORECARDANSWERS','SCORECARDQUESTIONS.fk_template_id = '.$pd_master_detials[0]['fk_pd_template_id'].' AND SCORECARDQUESTIONS.score_question_id = SCORECARDANSWERS.fk_score_question_id AND SCORECARDQUESTIONS.isactive = 1 AND SCORECARDANSWERS.isactive = 1','left'); - - $this->db->WHERE('PDFORMDETAILS.fk_pd_id',$pd_id); - if($pd_form_id != "") - { - $this->db->WHERE('PDFORMDETAILS.fk_form_id',$pd_form_id); - } - $this->db->WHERE('PDFORMDETAILS.isactive',1); - //$this->db->GROUP_BY('SCORECARDQUESTIONS.score_question_id'); - $max_score = $this->db->get_compiled_select(); - - //SUB QUERY END - - $this->db->SELECT('PDFORMDETAILS.fk_pd_id,PDFORMDETAILS.fk_form_id,PDFORMDETAILS.iter_column_name,PDFORMDETAILS.iter_sub_column_name,PDFORMDETAILS.iteration, PDFORMDETAILS.column_name, PDFORMDETAILS.column_id, PDFORMDETAILS.column_value,TEMPLATECATEGORYWEIGHTAGE.weightage as category_weightage,TEMPLATECATEGORYWEIGHTAGE.fk_question_category_id,QUESTIONKEYMAPPING.fk_category_id,SCORECARDQUESTIONS.weightage as question_weightage,SCORECARDQUESTIONS.calc_type,SCORECARDANSWERS.score,('.$max_score.') as max_score'); + $this->db->SELECT('PDFORMDETAILS.fk_pd_id,PDFORMDETAILS.fk_form_id,PDFORMDETAILS.iter_column_name,PDFORMDETAILS.iter_sub_column_name,PDFORMDETAILS.iteration, PDFORMDETAILS.column_name, PDFORMDETAILS.column_id, PDFORMDETAILS.column_value,TEMPLATECATEGORYWEIGHTAGE.weightage as category_weightage,TEMPLATECATEGORYWEIGHTAGE.fk_question_category_id,QUESTIONKEYMAPPING.fk_category_id,QUESTIONCATEGORY.category_name,SCORECARDQUESTIONS.score_question_id,SCORECARDQUESTIONS.weightage as question_weightage,SCORECARDQUESTIONS.calc_type,SCORECARDANSWERS.score'); $this->db->FROM(PDFORMDETAILS.' as PDFORMDETAILS'); $this->db->JOIN(TEMPLATECATEGORYWEIGHTAGE.' as TEMPLATECATEGORYWEIGHTAGE','TEMPLATECATEGORYWEIGHTAGE.fk_template_id ='.$pd_master_detials[0]['fk_pd_template_id']); $this->db->JOIN(QUESTIONKEYMAPPING.' as QUESTIONKEYMAPPING','TEMPLATECATEGORYWEIGHTAGE.fk_question_category_id = QUESTIONKEYMAPPING.fk_category_id AND QUESTIONKEYMAPPING.fk_form_id = PDFORMDETAILS.fk_form_id AND TEMPLATECATEGORYWEIGHTAGE.isactive = 1 AND QUESTIONKEYMAPPING.isactive = 1 AND QUESTIONKEYMAPPING.key = PDFORMDETAILS.column_name','LEFT'); + $this->db->JOIN(QUESTIONCATEGORY.' as QUESTIONCATEGORY','QUESTIONKEYMAPPING.fk_category_id = QUESTIONCATEGORY.question_category_id AND TEMPLATECATEGORYWEIGHTAGE.fk_question_category_id = QUESTIONCATEGORY.question_category_id','LEFT'); + $this->db->JOIN(SCORECARDQUESTIONS.' as SCORECARDQUESTIONS','PDFORMDETAILS.column_name = SCORECARDQUESTIONS.fk_key AND PDFORMDETAILS.fk_form_id = SCORECARDQUESTIONS.fk_form_id AND SCORECARDQUESTIONS.fk_template_id = '.$pd_master_detials[0]['fk_pd_template_id'].' AND SCORECARDQUESTIONS.isactive = 1','left'); $this->db->JOIN(SCORECARDANSWERS.' as SCORECARDANSWERS','PDFORMDETAILS.column_value = SCORECARDANSWERS.answer AND SCORECARDQUESTIONS.fk_template_id = '.$pd_master_detials[0]['fk_pd_template_id'].' AND SCORECARDQUESTIONS.score_question_id = SCORECARDANSWERS.fk_score_question_id AND SCORECARDQUESTIONS.isactive = 1 AND SCORECARDANSWERS.isactive = 1','left'); @@ -1041,6 +1023,18 @@ class PD_Model extends SPARQ_Model { $this->db->WHERE('PDFORMDETAILS.isactive',1); $this->db->ORDER_BY('PDFORMDETAILS.pd_form_detail_id'); $form_details = $this->db->GET()->result_array(); + if(count($form_details)) + { + foreach($form_details as $form_details_key => $form_detail) + { + // if($form_detail['score_question_id'] != null || $form_detail['score_question_id'] != '') + // { + $max_score = $this->db->SELECT('max(score) as max_score')->FROM(SCORECARDANSWERS)->WHERE('fk_score_question_id',$form_detail['score_question_id'])->GET()->result_array(); + $form_details[$form_details_key]['max_score'] = $max_score[0]['max_score']; + // } + } + } + return $form_details; }