name)->firstOrFail(); return $o->echoarea_total_daily() ->sortBy('date') ->groupBy('date') ->transform(function($item,$key) { return [ 'x'=>Carbon::createFromFormat('Y-m-d',$key)->timestamp*1000, 'y'=>$item->sum('count')]; } ) ->values(); } /** * Add or edit a domain */ public function add_edit(DomainRequest $request,Domain $o) { if ($request->post()) { foreach (['name','dnsdomain','active','public','homepage','notes','flatten','accept_app','nodestatus_id'] as $key) $o->{$key} = $request->post($key); $o->save(); return redirect()->to('domain'); } return view('domain.addedit') ->with('o',$o); } /** * Get all the hosts for a zone of a particular region (or not) * * @param Zone $o * @param int $region * @return Collection */ public function api_hosts(Zone $o,int $region): Collection { return $o->hosts ->filter(fn($item)=>$item->role_id === Address::NODE_NC) ->filter(fn($item)=>$region ? ($item->region_id === $region) : TRUE) ->map(function($item) { return [ 'id'=>$item->host_id, 'value'=>sprintf('%s %s',$item->ftn_3d,$item->system->name) ]; }) ->values(); } /** * Find all the hubs for a host * * @param Zone $o * @param int $host * @return Collection */ public function api_hubs(Zone $o,int $host): Collection { return $o->hubs ->filter(fn($item)=>$item->role_id === Address::NODE_HC) ->filter(fn($item)=>$host ? ($item->host_id === $host) : TRUE) ->map(function($item) { return [ 'id'=>$item->id, 'value'=>sprintf('%s %s',$item->ftn_3d,$item->system->name) ]; }) ->values(); } /** * Get all the regions for a zone * * @param Zone $o * @return Collection */ public function api_regions(Zone $o): Collection { return $o->regions ->filter(fn($item)=>$item->role_id === Address::NODE_RC) ->map(function($item) { return [ 'id'=>$item->region_id, 'value'=>sprintf('%s %s',$item->ftn_3d,$item->system->location) ]; }) ->values(); } public function view(Domain $o) { if (! $o->public && ! Gate::check('admin',$o)) abort(404); $o->load(['zones.system','zones.domain','zones.addresses.nodes_hub','zones.addresses.echomail_from']); return view('domain.view') ->with('o',$o); } }