/**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     // open csv file from storage
     $csv = Reader::createFromPath(storage_path('import/actions.csv'));
     //get the first row, usually the CSV header
     $headers = $csv->fetchOne();
     // validate headers
     //get 25 rows starting from the 11th row
     $res = $csv->setOffset(1)->fetchAll();
     // build a nice associative array from the csv
     foreach ($res as $data) {
         foreach ($headers as $key => $header) {
             $action[$header] = $data[$key];
         }
         $actions_data[] = $action;
     }
     foreach ($actions_data as $action_data) {
         if (isset($action_data['id'])) {
             $action = \App\Action::firstOrNew(['id' => $action_data['id']]);
             $action->name = $action_data['name'];
             $action->body = $action_data['body'];
             $action->start = \Carbon\Carbon::parse($action_data['start']);
             $action->stop = \Carbon\Carbon::parse($action_data['stop']);
             $action->location = $action_data['location'];
             $action->user_id = 1;
             // create the group if not existing yet and associate it.
             if (!empty($action_data['group_id']) && !empty($action_data['group'])) {
                 $group = \App\Group::firstOrNew(['id' => $action_data['group_id'] + $this->id_offset]);
                 $group->name = $action_data['group'];
                 $group->body = 'No description';
                 $group->save();
                 $action->group()->associate($group);
                 $this->info($group->name . ' GROUP has been created/updated in db');
                 $action->save();
                 if ($action->isInvalid()) {
                     $this->error($action->getErrors());
                 } else {
                     $this->info($action->name . ' ACTION has been created/updated in db');
                 }
             }
         }
     }
 }