VulnerabilityService.php
1 <?php 2 3 namespace App\Http\Services; 4 5 use App\Models\TOE; 6 7 class VulnerabilityService 8 { 9 public static function search(TOE $toe, array $filters, string $sortField, string $sortDirection) 10 { 11 $query = $toe->vulnerabilities()->withPivot(['id', 'reviewed_by'])->as('stored'); 12 13 if ($filters && $filters['search']) { 14 $query->where('vid', 'like', "%" . $filters['search'] . "%"); 15 $query->Orwhere('artifact_name', 'like', "%" . $filters['search'] . "%"); 16 } 17 18 if ($filters && $filters['pending_only']) { 19 $query->whereNull('reviewed_by'); 20 } 21 22 if ($filters && $filters['created_at_since']) { 23 $query->where('vulnerabilities.created_at', '>=', $filters['created_at_since']); 24 } 25 26 if ($filters && $filters['created_at_to']) { 27 $query->where('vulnerabilities.created_at', '<=', $filters['created_at_to']); 28 } 29 30 if ($sortField && $sortDirection) { 31 $query->orderBy($sortField, $sortDirection); 32 } 33 34 return $query; 35 } 36 }