/ database / seeders / WorkbookSeeder.php
WorkbookSeeder.php
  1  <?php
  2  
  3  namespace Database\Seeders;
  4  
  5  use App\Models\Norm;
  6  use App\Models\NormGroup;
  7  use Illuminate\Database\Seeder;
  8  
  9  class WorkbookSeeder extends Seeder
 10  {
 11      /**
 12       * Run the database seeds.
 13       *
 14       * @return void
 15       */
 16      public function run()
 17      {
 18          $this->seedLinceWorkbooks();
 19          $this->seedCCWorkbooks();
 20      }
 21  
 22      public function seedLinceWorkbooks()
 23      {
 24          NormGroup::whereName("LINCE")
 25              ->first()
 26              ->norms
 27              ->each(function ($norm) {
 28                  $norm->workbooks()->createMany([
 29                      ['name' => 'MEB'],
 30                      ['name' => 'MCF'],
 31                      ['name' => 'MEC'],
 32                  ]);
 33              });
 34      }
 35  
 36      public function seedCCWorkbooks()
 37      {
 38          $workbooksPerVersion = [
 39              'v3.1R5' => [
 40                  "aco_cor.1",
 41                  "aco_dev.1",
 42                  "aco_dev.2",
 43                  "aco_dev.3",
 44                  "aco_rel.1",
 45                  "aco_rel.2",
 46                  "aco_ctt.1",
 47                  "aco_ctt.2",
 48                  "aco_vul.1",
 49                  "aco_vul.2",
 50                  "aco_vul.3",
 51                  "adv_arc.1",
 52                  "adv_fsp.1",
 53                  "adv_fsp.2",
 54                  "adv_fsp.3",
 55                  "adv_fsp.4",
 56                  "adv_fsp.5",
 57                  "adv_fsp.6",
 58                  "adv_imp.1",
 59                  "adv_imp.2",
 60                  "adv_int.1",
 61                  "adv_int.2",
 62                  "adv_int.3",
 63                  "adv_spm.1",
 64                  "adv_tds.1",
 65                  "adv_tds.2",
 66                  "adv_tds.3",
 67                  "adv_tds.4",
 68                  "adv_tds.5",
 69                  "adv_tds.6",
 70                  "agd_ope.1",
 71                  "agd_pre.1",
 72                  "alc_cmc.1",
 73                  "alc_cmc.2",
 74                  "alc_cmc.3",
 75                  "alc_cmc.4",
 76                  "alc_cmc.5",
 77                  "alc_cms.1",
 78                  "alc_cms.2",
 79                  "alc_cms.3",
 80                  "alc_cms.4",
 81                  "alc_cms.5",
 82                  "alc_del.1",
 83                  "alc_dvs.1",
 84                  "alc_dvs.2",
 85                  "alc_flr.1",
 86                  "alc_flr.2",
 87                  "alc_flr.3",
 88                  "alc_lcd.1",
 89                  "alc_lcd.2",
 90                  "alc_tat.1",
 91                  "alc_tat.2",
 92                  "alc_tat.3",
 93                  "ape_int.1",
 94                  "ape_ccl.1",
 95                  "ape_spd.1",
 96                  "ape_obj.1",
 97                  "ape_obj.2",
 98                  "ape_ecd.1",
 99                  "ape_req.1",
100                  "ape_req.2",
101                  "ace_int.1",
102                  "ace_ccl.1",
103                  "ace_spd.1",
104                  "ace_obj.1",
105                  "ace_ecd.1",
106                  "ace_req.1",
107                  "ace_mco.1",
108                  "ace_cco.1",
109                  "ase_int.1",
110                  "ase_ccl.1",
111                  "ase_spd.1",
112                  "ase_obj.1",
113                  "ase_obj.2",
114                  "ase_ecd.1",
115                  "ase_req.1",
116                  "ase_req.2",
117                  "ase_tss.1",
118                  "ase_tss.2",
119                  "ate_cov.1",
120                  "ate_cov.2",
121                  "ate_cov.3",
122                  "ate_dpt.1",
123                  "ate_dpt.2",
124                  "ate_dpt.3",
125                  "ate_dpt.4",
126                  "ate_fun.1",
127                  "ate_fun.2",
128                  "ate_ind.1",
129                  "ate_ind.2",
130                  "ate_ind.3",
131                  "ava_van.1",
132                  "ava_van.2",
133                  "ava_van.3",
134                  "ava_van.4",
135                  "ava_van.5",
136              ],
137              '2022 R1' => [
138                  "ace_ccl.1",
139                  "ace_cco.1",
140                  "ace_ecd.1",
141                  "ace_int.1",
142                  "ace_mco.1",
143                  "ace_obj.1",
144                  "ace_obj.2",
145                  "ace_req.1",
146                  "ace_req.2",
147                  "ace_spd.1",
148                  "aco_cor.1",
149                  "aco_ctt.1",
150                  "aco_ctt.2",
151                  "aco_dev.1",
152                  "aco_dev.2",
153                  "aco_dev.3",
154                  "aco_rel.1",
155                  "aco_rel.2",
156                  "aco_vul.1",
157                  "aco_vul.2",
158                  "aco_vul.3",
159                  "adv_arc.1",
160                  "adv_comp.1",
161                  "adv_fsp.1",
162                  "adv_fsp.2",
163                  "adv_fsp.3",
164                  "adv_fsp.4",
165                  "adv_fsp.5",
166                  "adv_fsp.6",
167                  "adv_imp.1",
168                  "adv_imp.2",
169                  "adv_int.1",
170                  "adv_int.2",
171                  "adv_int.3",
172                  "adv_spm.1",
173                  "adv_tds.1",
174                  "adv_tds.2",
175                  "adv_tds.3",
176                  "adv_tds.4",
177                  "adv_tds.5",
178                  "adv_tds.6",
179                  "agd_ope.1",
180                  "agd_pre.1",
181                  "alc_cmc.1",
182                  "alc_cmc.2",
183                  "alc_cmc.3",
184                  "alc_cmc.4",
185                  "alc_cmc.5",
186                  "alc_cms.1",
187                  "alc_cms.2",
188                  "alc_cms.3",
189                  "alc_cms.4",
190                  "alc_cms.5",
191                  "alc_comp.1",
192                  "alc_del.1",
193                  "alc_dvs.1",
194                  "alc_dvs.2",
195                  "alc_flr.1",
196                  "alc_flr.2",
197                  "alc_flr.3",
198                  "alc_lcd.1",
199                  "alc_lcd.2",
200                  "alc_tat.1",
201                  "alc_tat.2",
202                  "alc_tat.3",
203                  "alc_tda.1",
204                  "alc_tda.2",
205                  "alc_tda.3",
206                  "ape_ccl.1",
207                  "ape_ecd.1",
208                  "ape_int.1",
209                  "ape_obj.1",
210                  "ape_obj.2",
211                  "ape_req.1",
212                  "ape_req.2",
213                  "ape_spd.1",
214                  "ase_ccl.1",
215                  "ase_comp.1",
216                  "ase_ecd.1",
217                  "ase_int.1",
218                  "ase_obj.1",
219                  "ase_obj.2",
220                  "ase_req.1",
221                  "ase_req.2",
222                  "ase_spd.1",
223                  "ase_tss.1",
224                  "ase_tss.2",
225                  "ate_comp.1",
226                  "ate_cov.1",
227                  "ate_cov.2",
228                  "ate_cov.3",
229                  "ate_dpt.1",
230                  "ate_dpt.2",
231                  "ate_dpt.3",
232                  "ate_dpt.4",
233                  "ate_fun.1",
234                  "ate_fun.2",
235                  "ate_ind.1",
236                  "ate_ind.2",
237                  "ate_ind.3",
238                  "ava_comp.1",
239                  "ava_van.1",
240                  "ava_van.2",
241                  "ava_van.3",
242                  "ava_van.4",
243                  "ava_van.5",
244              ]
245          ];
246  
247          $group = NormGroup::whereName("Common Criteria")->first();
248          foreach ($workbooksPerVersion as $version => $workbooks) {
249              $norm = Norm::where('version', $version)->where('norm_group_id', $group->id)->first();
250              $newArray = [];
251              foreach ($workbooks as $item) {
252                  $newArray[] = ['name' => strtoupper($item)];
253              }
254              if ($norm) {
255                  $norm->workbooks()->createMany($newArray);
256              }
257          }
258      }
259  }