/ app / Http / Livewire / Jsons / TPView.php
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  }