File: /home/imensosw/chartapi.imenso.co/app/Http/Controllers/TreedataController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Chart_data;
class TreedataController extends Controller
{
private $tree = array();
private $data = array();
private $post_level = "N1";
private $defaultLevel = "N2";
public function getTreeData(Request $request)
{
if(isset($request->level) && $request->level != "N1")
{
$this->defaultLevel = $request->level;
}
$sqlQuery = Chart_data::select('n_level', 'position_no', 'reporting_to_position_code', 'sub_division_n3', 'department_n4')
->whereNotIn('n_level', ['Service', 'Support'])
->whereIn('n_level', [$this->defaultLevel]);
if(isset($request->group))
{
$sqlQuery->where('group_n1', '=', $request->group);
}
if(isset($request->sub_division))
{
$sqlQuery->where('sub_division_n3', '=', $request->sub_division);
}
if(isset($request->department))
{
$sqlQuery->where('department_n4', '=', $request->department);
}
$result_data = $sqlQuery->get();
if($result_data)
{
foreach ($result_data as $key => $value) {
$level_name = $value->n_level.'_'.$value->position_no;
$reporting = $value->reporting_to_position_code;
$child_data = $this->getSubLevel($value->position_no, $request->group, $request->sub_division, $request->department);
if($child_data != null) {
$this->data[] = array("id"=>$value->position_no, "name"=>$value->sub_division_n3, "title"=>$value->department_n4, "children"=>$child_data);
} else {
$this->data[] = array("id"=>$value->position_no, "name"=>$value->sub_division_n3, "title"=>$value->department_n4);
}
}
}
if(isset($request->level))
{
$this->post_level = $request->level;
}
if($this->post_level != "N1")
{
$this->tree = array("id"=>$request->level, "level"=>"level", "children"=>$this->data);
}
else
{
$sqlQuery = Chart_data::select('n_level', 'position_no', 'reporting_to_position_code', 'sub_division_n3', 'department_n4')->where('n_level', 'N1')->get();
$this->tree = array("id"=>$sqlQuery[0]->position_no, "name"=>$sqlQuery[0]->sub_division_n3, "title"=>$sqlQuery[0]->department_n4, "children"=>$this->data);
}
return json_encode(array("postlevel"=>$this->defaultLevel, "data"=>$this->tree));
}
public function getSubLevel($position_no, $group, $sub_division, $department){
$getdata = array();
$sqlQuery = Chart_data::select('n_level', 'position_no', 'reporting_to_position_code', 'sub_division_n3', 'department_n4')->where('reporting_to_position_no', $position_no);
if($group != "")
{
$sqlQuery->where('group_n1', '=', $group);
}
if($sub_division != "")
{
$sqlQuery->where('sub_division_n3', '=', $sub_division);
}
if($department != "")
{
$sqlQuery->where('department_n4', '=', $department);
}
$result_data = $sqlQuery->get();
if($result_data)
{
foreach ($result_data as $key => $value) {
$level_name = $value->n_level.'_'.$value->position_no;
$reporting = $value->reporting_to_position_code;
$temp_data = $this->getSubLevel($value->position_no, $group, $sub_division, $department);
if ($temp_data != null) {
$getdata[] = array("id"=>$value->position_no, "name"=>$value->sub_division_n3, "title"=>$value->department_n4, "children"=>$temp_data);
} else {
$getdata[] = array("id"=>$value->position_no, "level"=>$value->n_level, "name"=>$value->sub_division_n3, "title"=>$value->department_n4);
}
}
return $getdata;
}
else
{
return '';
}
}
}