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 }