@section('tittle') {{"ORGANOGRAM"}}@endsection
@extends('LifeAtGainup.Navbar.nav')
@section('content')
@php
ini_set('memory_limit','2048M');
$orgdata = Session::get('ornogramdata');
$employees = $orgdata['data'] ?? [];
// ---- Build lookup map (Emplno → employee) ----
$empMap = [];
foreach ($employees as $e) $empMap[$e['Emplno']] = $e;
// ---- Top-level (reporting_to missing or not in map) ----
$topLevel = collect($employees)->filter(fn($e) => empty($e['reporting_to']) || !isset($empMap[$e['reporting_to']]))->values();
// ---- Helper to render a node (uses NO_Of_Reporting_Can for caret) ----
function renderNode($emp, $map, $lvl = 1) {
$subCnt = (int)($emp['NO_Of_Reporting_Can'] ?? 0);
$hasSubs = $subCnt > 0;
$cls = $lvl == 1 ? 'org1' : ($lvl == 2 ? 'org' : 'org3');
$notice = ($emp['Notice'] ?? 'N') === 'Y' ? 'color:yellow;' : '';
$caretCls = $hasSubs ? 'caret' : '';
$disp = $hasSubs ? $emp['C_Name'].' - ('.$subCnt.')' : $emp['C_Name'];
$html = "
";
$html .= "";
$html .= "{$disp}";
$html .= "";
if ($hasSubs) {
$html .= "";
foreach ($map as $c) {
if (($c['reporting_to'] ?? null) === $emp['Emplno']) {
$html .= renderNode($c, $map, $lvl + 1);
}
}
$html .= "
";
}
$html .= "";
return $html;
}
@endphp
@foreach($topLevel as $root)
{!! renderNode($root, $empMap) !!}
@endforeach
@endsection