First work on a status page showing nodes with uncollected mail

This commit is contained in:
2023-11-24 21:49:38 +11:00
parent bed5bf8acc
commit 4c91ed54c0
4 changed files with 138 additions and 0 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
@@ -242,4 +243,51 @@ class HomeController extends Controller
return view('setup')
->with('o',$o);
}
public function status()
{
$date = Carbon::now()->yesterday()->endOfday();
// Nodes with uncollected mail
$e = Address::select(['addresses.id',DB::raw('count(*) as e'),DB::raw('0 as n'),DB::raw('0 as f')])
->join('echomail_seenby',['echomail_seenby.address_id'=>'addresses.id'])
->join('echomails',['echomails.id'=>'echomail_seenby.echomail_id'])
->whereNotNull('export_at')
->whereNull('sent_at')
->where('datetime','<',$date)
->groupBy('addresses.id');
$n = Address::select(['addresses.id',DB::raw('0 as e'),DB::raw('count(*) as n'),DB::raw('0 as f')])
->join('netmails',['netmails.tftn_id'=>'addresses.id'])
->whereNull('sent_at')
->where('datetime','<',$date)
->groupBy('addresses.id');
$f = Address::select(['addresses.id',DB::raw('0 as e'),DB::raw('0 as n'),DB::raw('count(*) as f')])
->join('file_seenby',['file_seenby.address_id'=>'addresses.id'])
->join('files',['files.id'=>'file_seenby.file_id'])
->whereNotNull('export_at')
->whereNull('sent_at')
->where('datetime','<',$date)
->groupBy('addresses.id');
$r = Address::select([
'a.id',
'system_id',
'zone_id',
'host_id',
'node_id',
DB::raw('sum(a.e) as e'),
DB::raw('sum(a.n) as n'),
DB::raw('sum(a.f) as f')
])
->from($e->union($n)->union($f),'a')
->join('addresses',['addresses.id'=>'a.id'])
->groupBy('system_id','a.id','zone_id','host_id','node_id')
->with(['system','zone.domain']);
return view('status')
->with('date',$date)
->with('uncollected',$r->get());
}
}