@extends('layouts.app')
@section('htmlheader_title')
	Dashboard
@endsection

@php
use App\Classes\Protocol\Binkp;
use App\Models\Setup;
$user->load(['systems.akas.zone.domain.echoareas','systems.akas.echoareas']);
$setup = Setup::findOrFail(config('app.id'));
@endphp

@section('content')
	<h1>{{ $user->name }}</h1>

	@if($user->systems->count())
		<div class="row">
			<div class="col-7">
				<div class="row">
					<div class="col-12">
						<div id="network_messages"></div>
					</div>
				</div>

				<div class="row pt-2">
					<div class="col-12">
						<h2>Hub Details for your nets</h2>

						<div class="accordion" id="accordion_details">
							@foreach($user
								->addresses()
								->diff(our_address())
								->filter(fn($item)=>($item->point_id === 0))
								->filter(function($item) { return $item->zone->domain->active && $item->zone->domain->public && $item->zone->domain->isManaged(); })
								->sortBy('zone.domain.name')
								->groupBy('zone.domain.name') as $list)
								<!-- {{ $x=$list->first()->domain->name }} -->
								<div class="accordion-item">
									<h3 class="accordion-header">
										<span class="accordion-button" id="hd_{{ $x }}" data-bs-toggle="collapse" data-bs-target="#collapse_{{ $x }}" aria-expanded="true" aria-controls="collapse_{{ $x }}">{{ $x }}</span>
									</h3>

									<div id="collapse_{{ $x }}" class="accordion-collapse {{ ($loop->index) ? 'collapse' : 'show' }}" aria-labelledby="{{ $x }}" data-bs-parent="#accordion_details">
										<div class="accordion-body">
											<p>For your addresses in this domain: <strong class="highlight">{!! $list->pluck('ftn')->join('</strong>, <strong class="highlight">') !!}</strong>, you'll need to use the following details:</p>
											<br>
											<table class="table monotable">
												<tbody>
												<tr>
													<td>
														Hub FTN Address
													</td>
													<th>
														<span style="color: cyan;">{{ our_address($list->first())->ftn4d }}</span>
													</th>
												</tr>
												<tr>
													<td>
														Hub FTN Domain
													</td>
													<th>
														<span style="color: cyan;">{{ $x }}</span>
													</th>
												</tr>
												<tr>
													<td>
														Hub Internet Address
													</td>
													<th>
														<span style="color: cyan;">{{ our_hostname($list->first()) }}</span>
													</th>
												</tr>
												<tr>
													<td>
														Hub Internet Ports
													</td>
													<td>
														BINKP: <span style="color: cyan;">{{ $setup->binkp_port }}</span> MD5 Mode: <span style="color: cyan;">{{$setup->optionGet(Binkp::F_MD,'binkp_options') ? 'YES' : 'NO' }}</span><br>
														EMSI: <span style="color: cyan;">{{ $setup->emsi_port }}</span> Protocol: <span style="color: cyan;">Zmodem</span><br>
													</td>
												</tr>
												</tbody>
											</table>
										</div>
									</div>
								</div>
							@endforeach
						</div>
					</div>
				</div>
			</div>

			<!-- System Addresses -->
			<div class="col-5">
				<table class="table monotable">
					<thead>
					<tr><th colspan="2">System Addresses</th></tr>
					</thead>
					<tbody>

					@foreach ($user->systems->sortBy('name') as $o)
						<tr>
							<th><a href="{{ url('system/addedit',[$o->id]) }}">{{ $o->name }}</a></th>
							<th class="text-end">
								<small><small><strong>{{ $o->akas->count() }}</strong> AKAs configured</small></small><br><br>
								@if ($o->akas->count())
									@foreach ($o->akas as $ao)
										{{ $ao->ftn }} <small>({{ $ao->security ?: '-' }})</small><br>
									@endforeach
								@else
									-
								@endif
							</th>
						</tr>
					@endforeach
					</tbody>
				</table>
			</div>
		</div>

		<div class="row">
			<div class="col-12">
				<h3>Active and Available Echos</h3>
				<table class="table monotable">
					<tbody>
					@foreach (($dl=$user
						->systems
						->pluck('akas')->flatten()
						->pluck('zone.domain')
						->unique()
						->filter(function($item) { return $item->active && $item->public && $item->isManaged(); })
						->sortBy('name')) as $o)
						<tr>
							<th class="nowrap">
								<a href="{{ url('domain/view',[$o->id]) }}">{{ $o->name }}</a> <small>({{ ($sec=$user->systems->pluck('akas')->flatten()->filter(function($item) use ($o) { return $item->zone->domain_id === $o->id; })->max('security') ?: 0) ?? '-' }})</small><br><br>
								{{ ($sub=$user->systems->pluck('akas')->flatten()->pluck('echoareas')->flatten()->filter(function($item) use ($o) { return $item->domain_id === $o->id; }))->count() }} <small>Subscribed</small>
							</th>
							<td>
								@foreach ($o->echoareas->sortBy('name') as $eo)
									<span style="@if(! $eo->active) color: gray; @elseif(! $eo->can_access($sec)) color: red; @elseif($sub->where('name',$eo->name)->count()) color: green; @endif">{{ $eo->name }}</span>
								@endforeach
							</td>
						</tr>
					@endforeach
					</tbody>
				</table>
			</div>
		</div>

	@else
		<p>You are not linked to any BBS systems. Start <a href="{{ url('user/system/register') }}">here</a> to link to your first.</p>
	@endif
@endsection

@section('page-css')
	<style>
		.highcharts-data-table table {
			min-width: 310px;
			max-width: 800px;
			margin: 1em auto;
		}
		.highcharts-data-table table {
			border-collapse: collapse;
			border: 1px solid #EBEBEB;
			margin: 10px auto;
			text-align: center;
			width: 100%;
			max-width: 500px;
		}
		.highcharts-data-table caption {
			padding: 1em 0;
			font-size: 1.2em;
			color: #555;
		}
		.highcharts-data-table th {
			font-weight: 600;
			padding: 0.5em;
		}
		.highcharts-data-table td, .highcharts-data-table th, .highcharts-data-table caption {
			padding: 0.5em;
		}
		{{--
		.highcharts-data-table thead tr, .highcharts-data-table tr:nth-child(even) {
			background: #f8f8f8;
		}
		.highcharts-data-table tr:hover {
			background: #f1f7ff;
		}
		--}}
	</style>
@append

@section('page-scripts')
	@js('highcharts')

	<script>
		@if($user->systems->count())
			// Create the chart
			Highcharts.chart('network_messages',{
				chart: {
					type: 'column',
					backgroundColor: '#000000',
				},
				credits: {
					enabled: false
				},
				exporting: {
					buttons: false
				},
				title: {
					text: 'Echomail Statistics'
				},
				subtitle: {
					text: '{{ sprintf('%s - %s',\Carbon\Carbon::now()->subMonths(6)->startOfMonth()->format('Y-m-d'),\Carbon\Carbon::now()->format('Y-m-d')) }}'
				},
				xAxis: {
					type: 'category'
				},
				yAxis: {
					title: {
						text: '# Msgs'
					},
					stackLabels: {
						enabled: true,
						style: {
							fontWeight: 'bold',
							color: (Highcharts.defaultOptions.title.style && Highcharts.defaultOptions.title.style.color) || 'gray'
						}
					}
				},
				legend: {
					align: 'right',
					//x: -30,
					verticalAlign: 'top',
					y: 40,
					floating: true,
					backgroundColor: Highcharts.defaultOptions.legend.backgroundColor || 'white',
					borderColor: '#e0e0e0',
					borderWidth: 1,
					shadow: false
				},
				plotOptions: {
					column: {
						dataLabels: {
							enabled: true
						}
					},
					series: {
						borderWidth: 0,
						grouping: false,
					}
				},
				tooltip: {
					headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
					pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.0f}</b>'
				},
				series: [
					{
						name: 'Networks',
						colorByPoint: true,
						data: [
							@foreach($dl as $do)
								{
									name: '{{ $do->name }}',
									y: {{ $do->echoarea_total_daily()->sum('count') }},
									drilldown: 'n-{{ $do->name }}',
								},
							@endforeach
						]
					},
					{
						name: 'Yours',
						colorByPoint: true,
						pointPlacement: 0.1,
						data: [
							@foreach($dl as $do)
								{
									name: '{{ $do->name }}',
									y: {{ $do->echoarea_total_daily($user->systems)->sum('count') }},
									drilldown: 'ny-{{ $do->name }}',
									color: Highcharts.color(Highcharts.getOptions().colors[{{$loop->index}}]).brighten(-0.2).get()
							},
							@endforeach
						]
					},
				],
				drilldown: {
					drillUpButton: {
						position: {
							x: 0,
							y: -50,
						}
					},
					series: [
						@foreach($dl as $do)
							{
								name: '{{ $do->name }}',
								id:  'n-{{ $do->name }}',
								data: {!! $do->echoarea_total_daily()
									->groupBy('name')
									->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
									->values() !!}
							},
						@endforeach

						@foreach($dl as $do)
							{
								name: '{{ $do->name }}',
								id:  'ny-{{ $do->name }}',
								data: {!! $do->echoarea_total_daily($user->systems)
									->groupBy('name')
									->map(function($item,$key) { return ['name'=>$key,'y'=>$item->sum('count'),'drilldown'=>'e-'.$key]; })
									->values() !!}
							},
						@endforeach
					]
				},
			});
		@endif
	</script>
@append