TPView.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 TPView extends BaseJsonView 11 { 12 public $modal; 13 public $functionalTestData; 14 15 public function getFunctionalTestsProperty() 16 { 17 $functionalTests = collect($this->json->json['functionalTests']); 18 return $this->getPaginate($functionalTests, 'functionalTests'); 19 } 20 21 public function showModal($functionalTest) 22 { 23 $this->modal = true; 24 $this->functionalTestData = $this->getData($functionalTest); 25 } 26 27 public function getData($functionalTest) 28 { 29 return [ 30 'name' => $functionalTest['name'], 31 'interfaces' => $functionalTest['interfaces'], 32 'subsystems' => $functionalTest['subsystems'], 33 'sfrs' => $functionalTest['sfrs'], 34 'expectedResults' => $functionalTest['expectedResults'], 35 'obtainedResults' => $functionalTest['obtainedResults'], 36 'description' => $functionalTest['description'], 37 'results' => $functionalTest['results'], 38 ]; 39 } 40 41 public function diffedFunctionalTests() 42 { 43 $olds = collect($this->oldJson->json['functionalTests']); 44 $news = collect($this->json->json['functionalTests']); 45 $result = []; 46 $used = []; 47 48 foreach ($news as $new) { 49 50 $used[] = $new['name']; 51 $aux = $olds->where('name', $new['name'])->first(); 52 53 $result[] = [ 54 'name' => $this->applyDiff($new['name'] ?? '', $aux['name'] ?? ''), 55 'objective' => $this->applyDiff($new['objective'] ?? '', $aux['objective'] ?? ''), 56 'scenario' => $this->applyDiff($new['scenario'] ?? '', $aux['scenario'] ?? ''), 57 'preconditions' => $this->applyDiff($new['preconditions'] ?? '', $aux['preconditions'] ?? ''), 58 'evaluator' => $this->applyDiff($new['evaluator'] ?? '', $aux['evaluator'] ?? ''), 59 'expectedResults' => $this->applyDiff($new['expectedResults'] ?? '', $aux['expectedResults'] ?? ''), 60 'obtainedResults' => $this->applyDiff($new['obtainedResults'] ?? '', $aux['obtainedResults'] ?? ''), 61 'description' => $this->applyDiff($new['description'] ?? '', $aux['description'] ?? ''), 62 63 ]; 64 } 65 66 foreach ($olds->whereNotIn('name', $used) as $old) { 67 $result[] = [ 68 'name' => $this->applyDiff('', $old['name'] ?? ''), 69 'objective' => $this->applyDiff('', $old['objective'] ?? ''), 70 'scenario' => $this->applyDiff('', $old['scenario'] ?? ''), 71 'preconditions' => $this->applyDiff('', $old['preconditions'] ?? ''), 72 'evaluator' => $this->applyDiff('', $old['evaluator'] ?? ''), 73 'expectedResults' => $this->applyDiff('', $old['expectedResults'] ?? ''), 74 'obtainedResults' => $this->applyDiff('', $old['obtainedResults'] ?? ''), 75 'description' => $this->applyDiff('', $old['description'] ?? ''), 76 ]; 77 } 78 79 return $this->getPaginate(collect($result), 'functionalTests'); 80 } 81 82 public function render() 83 { 84 return view('livewire.jsons.tp-view') 85 ->layoutData([ 86 'title' => $this->json->schema_name, 87 'entity' => $this->json, 88 'breadcrumb' => 'jsons.view', 89 ]); 90 } 91 }