'organization_master');$this->load->view('partials/header',$d);$this->load->view('hr_payroll/organization_master',$d);$this->load->view('partials/footer');} public function data(){return json_response(true,'Master organisasi.',array('departments'=>$this->db->order_by('department_name')->get('k_departments')->result(),'positions'=>$this->db->select('p.*,d.department_name')->from('k_positions p')->join('k_departments d','d.id=p.department_id','left')->order_by('p.position_name')->get()->result()));} public function save_department(){return$this->saveMaster('k_departments','department_name');} public function save_position(){return$this->saveMaster('k_positions','position_name',true);} private function saveMaster($table,$nameField,$position=false){$id=(int)$this->input->post('id');$code=strtoupper(trim($this->input->post('code',true)));$name=trim($this->input->post('name',true));if($code===''||$name==='')return json_response(false,'Kode dan nama wajib diisi.',array(),422);$q=$this->db->where('code',$code);if($id)$q->where('id !=',$id);if($q->count_all_results($table))return json_response(false,'Kode sudah digunakan.',array(),422);$data=array('code'=>$code,$nameField=>$name,'description'=>trim($this->input->post('description',true))?:null,'is_active'=>$this->input->post('is_active')?1:0);if($position)$data['department_id']=$this->input->post('department_id')?:null;if($id)$this->db->where('id',$id)->update($table,$data);else{$this->db->insert($table,$data);$id=$this->db->insert_id();}return json_response(true,'Data berhasil disimpan.',array('id'=>$id));} public function delete_department($id){return$this->deactivate('k_departments',$id,'department_id');} public function delete_position($id){return$this->deactivate('k_positions',$id,'position_id');} private function deactivate($table,$id,$employeeField){$id=(int)$id;$used=$this->db->where($employeeField,$id)->count_all_results('k_employees')>0;if($table==='k_departments'&&$this->db->where('department_id',$id)->count_all_results('k_positions')>0)$used=true;if($used){$this->db->where('id',$id)->update($table,array('is_active'=>0));return json_response(true,'Data sudah digunakan, sehingga dinonaktifkan dan tidak dihapus.');}$this->db->where('id',$id)->delete($table);return json_response(true,'Data berhasil dihapus.');} }