File manager - Edit - /home/wwwroot/camplus.hk/master.camplus.hk/public_html/application/modules/appraisal/models/Apform_model.php
Back
<?php Class Apform_model extends CI_Model{ function getFormDetail($id) { return $this->db->get_where('ap_form',['id',$id])->row_array(); } function getTodaySection() { $forms = $this->db->get('ap_form')->result_array(); $arr = []; foreach ($forms as $key => $form){ $sections = $this->db->get_where('ap_form_sections','ap_form = ' . $form['id'] . ' and start="' . date('Y-m-d') . '"')->result_array(); if(!empty($sections)) { foreach($sections as $section) { if($section['type']=='u2d') { $where = " and ap_form_section_unit_user.type='HEAD'"; } else { $where = " and ap_form_section_unit_user.type='MEMBER'"; } $users = $this->db->select('DISTINCT(ap_form_section_unit_user.user_id)') ->join('ap_form_section_unit', 'ap_form_section_unit.id = ap_form_section_unit_user.unit_id','left') ->join('ap_form_sections','ap_form_sections.id = ap_form_section_unit.section') ->get_where('ap_form_section_unit_user','ap_form_sections.id=' . $section['id'] . $where)->result_array(); $arr[] = ['section' => $section,'users' => $users]; } } } return $arr; } function getForms() { $forms = $this->db->get('ap_form')->result_array(); foreach ($forms as $key => $form){ $end = $this->db->order_by('end','desc')->get_where('ap_form_sections','ap_form = ' . $form['id'])->row_array(); if($end['end']<date('Y-m-d')) $forms[$key]['end'] = true; else $forms[$key]['end'] = false; } return $forms; } function getFormOnly($ap_form, $appraiser='') { $result = array(); $this->db->select('ap_form_sections.*, group_concat(ap_form_section_unit_user.unit_id) as unit_ids'); $this->db->from('ap_form_section_unit_user'); $this->db->join('ap_form_section_unit','ap_form_section_unit.id = ap_form_section_unit_user.unit_id'); $this->db->join('ap_form_sections', 'ap_form_section_unit.section = ap_form_sections.id'); $this->db->where('ap_form_sections.ap_form = ' . $ap_form); $this->db->where('ap_form_section_unit_user.user_id = ' . $appraiser); $this->db->where('ap_form_section_unit_user.type = "HEAD"'); $this->db->group_by('ap_form_sections.id'); $sections = $this->db->get()->result_array(); foreach($sections as &$section) { $this->db->select('ap_form_section_unit.*'); $this->db->from('ap_form_section_unit'); $this->db->where_in('id',explode(',',$section['unit_ids'])); $section['units'] = $this->db->get()->result_array(); foreach($section['units'] as &$unit) { $this->db->select('ap_form_section_unit_user.user_id'); $this->db->from('ap_form_section_unit_user'); $this->db->where('unit_id',$unit['id']); $this->db->where('type','MEMBER'); $unit['members'] = $this->db->get()->result_array(); } } return $sections; } function getForm($id, $appraiser='') { if($appraiser=='') { $appraiser = $this->session->userdata('id'); } $form = $this->db->get_where('ap_form',array('id'=>$id))->row_array(); $form['sections']= $this->db->order_by('weight','asc')->get_where('ap_form_sections',array('ap_form'=>$form['id']))->result_array(); foreach($form['sections'] as $key=>$section) { $form['sections'][$key]['units'] = $this->db->get_where('ap_form_section_unit',array('section'=>$section['id']))->result_array(); foreach($form['sections'][$key]['units'] as $key2 => $unit) { $this->db->select('group_concat(user_id) as uid'); $this->db->select('ap_form_section_unit_user.*'); $form['sections'][$key]['units'][$key2]['head'] = explode(',',$this->db->get_where('ap_form_section_unit_user',array('unit_id'=>$unit['id'],'type'=>'HEAD'))->row_array()['uid']); foreach($form['sections'][$key]['units'][$key2]['head'] as $key3=>$head) { $answer = $this->db->get_where('ap_filled_form',array('appraiser'=>$appraiser,'appraisee'=>$head,'form'=>$section['form'],'unit'=>$unit['id']))->row_array(); if(!empty($answer)) $form['sections'][$key]['units'][$key2]['head_answer'][$key3] = $answer; } $this->db->select('group_concat(user_id) as uid'); $form['sections'][$key]['units'][$key2]['member'] = explode(',',$this->db->get_where('ap_form_section_unit_user',array('unit_id'=>$unit['id'],'type'=>'MEMBER'))->row_array()['uid']); foreach($form['sections'][$key]['units'][$key2]['member'] as $key3=>$member) { $answer = $this->db->get_where('ap_filled_form',array('appraiser'=>$appraiser,'appraisee'=>$member,'form'=>$section['form'],'unit'=>$unit['id']))->row_array(); if(!empty($answer)) $form['sections'][$key]['units'][$key2]['member_answer'][$key3] = $answer; } $this->db->select('group_concat(user_id) as uid'); $form['sections'][$key]['units'][$key2]['related'] = explode(',',$this->db->get_where('ap_form_section_unit_user',array('unit_id'=>$unit['id'],'type'=>'RELATED'))->row_array()['uid']); } } return $form; } function addForm($form) { $this->db->insert('ap_form',array('name'=>$form['name'],'uid'=>$this->session->userdata('id'))); $ap_form = $this->db->insert_id(); foreach($form['data'] as $section) { $this->db->insert('ap_form_sections',array('type'=>$section['type'],'name'=>$section['name'],'start'=>explode('-',$section['period'])[0],'end'=>explode('-',$section['period'])[1],'description'=>$section['description'],'form'=>$section['select_form'],'sign'=>$section['sign'] ,'viewable_to_user'=>$section['viewable_to_user'],'ap_form'=>$ap_form)); $section_id = $this->db->insert_id(); foreach($section['units'] as $unit) { $this->db->insert('ap_form_section_unit',array('name'=>$unit['name'],'section'=>$section_id)); $unit_id = $this->db->insert_id(); if(!empty($unit['head'])){ foreach($unit['head'] as $head){ $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$head,'type'=>'HEAD')); } } if(!empty($unit['members'])){ foreach($unit['members'] as $member) { $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$member,'type'=>'MEMBER')); } } if(!empty($unit['related'])){ foreach($unit['related'] as $related) { $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$member,'type'=>'RELATED')); } } } } return $ap_form; } function saveForm($id,$form) { $this->db->update('ap_form',array('name'=>$form['name']),array('id'=>$id)); $ori_section = $this->db->get_where('ap_form_sections',array('ap_form'=>$id))->result_array(); $ori_section_arr = []; foreach ($ori_section as $section) { $ori_section_arr[] = $section['id']; } foreach($form['data'] as $section) { $viewable_to_user = 0; if(!empty($section['viewable_to_user'])) { $viewable_to_user = $section['viewable_to_user']; } if($section['expanded']==1){ if(empty($section['id'])) { $this->db->insert('ap_form_sections',array('type'=>$section['type'],'name'=>$section['name'],'start'=>explode('-',$section['period'])[0],'end'=>explode('-',$section['period'])[1],'description'=>$section['description'],'form'=>$section['select_form'],'viewable_to_user'=>$viewable_to_user,'sign'=>$section['sign'],'is_counter_sign'=>$section['is_counter_sign'],'hideoa'=>$section['hideoa'],'ap_form'=>$id)); $section_id = $this->db->insert_id(); } else { $this->db->update('ap_form_sections',array('type'=>$section['type'],'name'=>$section['name'],'start'=>explode('-',$section['period'])[0],'end'=>explode('-',$section['period'])[1],'description'=>$section['description'],'form'=>$section['select_form'],'viewable_to_user'=>$viewable_to_user,'sign'=>$section['sign'],'is_counter_sign'=>$section['is_counter_sign'],'hideoa'=>$section['hideoa'],'ap_form'=>$id),array('id'=>$section['id'])); $section_id = $section['id']; if (($key = array_search($section['id'], $ori_section_arr)) !== false) { unset($ori_section_arr[$key]); } } $ori_units = $this->db->get_where('ap_form_section_unit',array('section'=>$section_id))->result_array(); $ori_units_arr = []; foreach ($ori_units as $unit) { $ori_units_arr[] = $unit['id']; } foreach($section['units'] as $unit) { if(empty($unit['id'])) { $this->db->insert('ap_form_section_unit',array('name'=>$unit['name'],'section'=>$section_id)); $unit_id = $this->db->insert_id(); } else { $this->db->update('ap_form_section_unit',array('name'=>$unit['name']),array('id'=>$unit['id'])); if (($key = array_search($unit['id'], $ori_units_arr)) !== false) { unset($ori_units_arr[$key]); } $unit_id = $unit['id']; } $this->db->delete('ap_form_section_unit_user',array('unit_id'=>$unit_id)); if(!empty($unit['head'])) foreach($unit['head'] as $head) { $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$head,'type'=>'HEAD')); } if(!empty($unit['related'])) foreach($unit['related'] as $related) { $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$related,'type'=>'RELATED')); } foreach($unit['members'] as $member) { $this->db->insert('ap_form_section_unit_user',array('unit_id'=>$unit_id,'user_id'=>$member,'type'=>'MEMBER')); } } foreach($ori_units_arr as $unit){ $this->db->delete('ap_form_section_unit',array('id'=>$unit)); } } else { if (($key = array_search($section['id'], $ori_section_arr)) !== false) { unset($ori_section_arr[$key]); } } } foreach($ori_section_arr as $section){ $this->db->delete('ap_form_sections',array('id'=>$section)); } } function deleteForm($id,$delete_form=true){ $sections = $this->db->get_where('ap_form_sections',array('ap_form'=>$id))->result_array(); foreach ($sections as $section) { $untis = $this->db->get_where('ap_form_section_unit',array('section'=>$section['id']))->result_array(); foreach ($untis as $unit) { $this->db->delete('ap_form_section_unit_user',array('unit_id'=>$unit['id'])); $this->db->delete('ap_form_section_unit',array('id'=>$unit['id'])); } $this->db->delete('ap_form_sections',array('id'=>$section['id'])); } if($delete_form) $this->db->delete('ap_form',array('id'=>$id)); } function fillForm($data) { $data['appraiser'] = $this->session->userdata('id'); $delete_arr = $data; unset($delete_arr['answer']); $ff_id = $this->db->get_where('ap_filled_form',$delete_arr)->row_array()['id']; $this->db->delete('ap_filled_form',$delete_arr); $json = json_decode($data['answer']); $json_array = (array)$json; foreach($json_array as $key=>$answer) { $this->db->delete('ap_answer',array('ff_id'=>$ff_id)); if(gettype($answer)=='array') { foreach($answer as $key2=>$ans) { if(!empty($ans->type)) { list($type, $file) = explode(';', $ans->content); list(, $file) = explode(',', $file); if(!empty($file)) file_put_contents(FCPATH . '/files/appraisal_files/' . $data['form'] . '_' . $data['appraisee'] . '_' . $data['unit'] . '_' . $ans->name, base64_decode($file)); $json_array[$key][$key2]->content='base64'; } } $answer = json_encode($json_array[$key]); } } $data['answer'] = json_encode($json_array); $this->db->insert('ap_filled_form',$data); $form_id = $this->db->insert_id(); foreach($json_array as $key=>$answer) { if(gettype($answer)=='array' || gettype($answer)=='object') $answer = json_encode($json_array[$key]); $this->db->insert('ap_answer',array('ff_id'=>$form_id,'a_key'=>$key,'answer'=>$answer)); } return true; } function submit($user,$form) { $this->db->delete('ap_form_section_user',array('user_id'=>$user,'section_id'=>$form)); $this->db->insert('ap_form_section_user',array('user_id'=>$user,'section_id'=>$form,'status'=>'SUBMITTED')); return true; } function allformanswer($user,$form) { return $this->db->select('ap_form_sections.name as section_name, ap_form.name as form_name, ap_form_section_unit.name as unit_name, ap_filled_form.answer') ->join('ap_form_section_unit','ap_form_section_unit.id = ap_filled_form.unit') ->join('ap_form_sections','ap_form_section_unit.section = ap_form_sections.id') ->join('ap_form','ap_form_sections.ap_form = ap_form.id') ->get_where('ap_filled_form',['ap_filled_form.form'=>$form,'ap_filled_form.appraiser'=>$user]) ->result_array(); } function release($user,$form) { $array = $this->db->get_where('ap_form_section_user',array('user_id'=>$user,'section_id'=>$form))->row_array(); if(count($array)<1) { return $this->db->insert('ap_form_section_user',array('status'=>'RELEASED','user_id'=>$user,'section_id'=>$form)); } else { return $this->db->update('ap_form_section_user',array('status'=>'RELEASED'),array('user_id'=>$user,'section_id'=>$form)); } } function getSubmit($user,$form) { return $this->db->get_where('ap_form_section_user',array('user_id'=>$user,'section_id'=>$form))->row_array(); } function get_section($apform){ return $this->db->order_by('weight','asc')->get_where('ap_form_sections',array('ap_form'=>$apform))->result_array(); } function get_oa_members($form,$uid) { $this->db->select('group_concat(appraisee) as appraisee'); $array = $this->db->get_where('ap_oa',array('oa'=>$uid,'ap_form'=>$form))->row_array(); if(!empty($array)) return explode(',',$array['appraisee']); else return []; } function getSigned($ap_form, $user) { $result = array(); $this->db->select('unit_id, user_id,counter'); $this->db->from('ap_form_sign'); $this->db->join('ap_form_section_unit','ap_form_section_unit.id = ap_form_sign.unit_id'); $this->db->join('ap_form_sections', 'ap_form_section_unit.section = ap_form_sections.id'); $this->db->where('ap_form_sections.ap_form = ' . $ap_form); $this->db->where('ap_form_sign.user_id = ' . $user); $this->db->where('ap_form_sign.signature <> ""'); //$this->db->group_by('ap_form'); $result = $this->db->get()->result_array(); return $result; } }
| ver. 1.4 |
Github
|
.
| PHP 7.2.34 | Generation time: 0.29 |
proxy
|
phpinfo
|
Settings