/ app / Http / Services / VulnerabilityService.php
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  }