MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
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 '';
		}
	}
}