/ app / Http / Livewire / Jsons / PTView.php
PTView.php
 1  <?php
 2  
 3  namespace App\Http\Livewire\Jsons;
 4  
 5  use App\Models\JsonDraft;
 6  use Illuminate\Support\Collection;
 7  use Livewire\Component;
 8  use Livewire\WithPagination;
 9  
10  class PTView extends BaseJsonView
11  {
12      public $modal;
13      public $penetrationTestData;
14  
15      public function getPenetrationTestsProperty()
16      {
17          $penetrationTests = collect($this->json->json['penetrationTests']);
18          return $this->getPaginate($penetrationTests, 'penetrationTests');
19      }
20  
21      public function showModal($penetrationTestData)
22      {
23          $this->modal = true;
24          $this->penetrationTestData = $this->getData($penetrationTestData);
25      }
26  
27      public function getData($penetrationTestData)
28      {
29          return [
30              'name' => $penetrationTestData['name'],
31              'expectedResults' => $penetrationTestData['expectedResults'],
32              'obtainedResults' => $penetrationTestData['obtainedResults'],
33              'description' => $penetrationTestData['description'],
34              'results' => $penetrationTestData['results'],
35          ];
36      }
37  
38      public function diffedPenetrationTests()
39      {
40          $olds = collect($this->oldJson->json['penetrationTests']);
41          $news = collect($this->json->json['penetrationTests']);
42          $result = [];
43          $used = [];
44  
45          foreach ($news as $new) {
46  
47              $used[] = $new['name'];
48              $aux = $olds->where('name', $new['name'])->first();
49  
50              $result[] = [
51                  'name' => $this->applyDiff($new['name'] ?? '', $aux['name'] ?? ''),
52                  'vulnerability' => $this->applyDiff($new['vulnerability'] ?? '', $aux['vulnerability'] ?? ''),
53                  'objective' => $this->applyDiff($new['objective'] ?? '', $aux['objective'] ?? ''),
54                  'scenario' => $this->applyDiff($new['scenario'] ?? '', $aux['scenario'] ?? ''),
55                  'preconditions' => $this->applyDiff($new['preconditions'] ?? '', $aux['preconditions'] ?? ''),
56                  'evaluator' => $this->applyDiff($new['evaluator'] ?? '', $aux['evaluator'] ?? ''),
57                  'expectedResults' => $this->applyDiff($new['expectedResults'] ?? '', $aux['expectedResults'] ?? ''),
58                  'obtainedResults' => $this->applyDiff($new['obtainedResults'] ?? '', $aux['obtainedResults'] ?? ''),
59                  'description' => $this->applyDiff($new['description'] ?? '', $aux['description'] ?? ''),
60  
61              ];
62          }
63  
64          foreach ($olds->whereNotIn('name', $used) as $old) {
65              $result[] = [
66                  'name' => $this->applyDiff('', $old['name'] ?? ''),
67                  'vulnerability' => $this->applyDiff('', $old['vulnerability'] ?? ''),
68                  'objective' => $this->applyDiff('', $old['objective'] ?? ''),
69                  'scenario' => $this->applyDiff('', $old['scenario'] ?? ''),
70                  'preconditions' => $this->applyDiff('', $old['preconditions'] ?? ''),
71                  'evaluator' => $this->applyDiff('', $old['evaluator'] ?? ''),
72                  'expectedResults' => $this->applyDiff('', $old['expectedResults'] ?? ''),
73                  'obtainedResults' => $this->applyDiff('', $old['obtainedResults'] ?? ''),
74                  'description' => $this->applyDiff('', $old['description'] ?? ''),
75              ];
76          }
77  
78          return $this->getPaginate(collect($result), 'penetrationTests');
79      }
80  
81      public function render()
82      {
83          return view('livewire.jsons.pt-view')
84              ->layoutData([
85                  'title' => $this->json->schema_name,
86                  'entity' => $this->json,
87                  'breadcrumb' => 'jsons.view',
88              ]);
89      }
90  }