/**
  * Remove the specified resource from storage.
  *
  * @param Request $request
  * @param int $id
  * @return \Illuminate\Http\Response
  * @throws \Exception
  */
 public function destroy(Request $request, $id)
 {
     $this->authorize('litteraturkritikk');
     if (!$request->get('confirm-deleteperson')) {
         return redirect()->back()->with('status', 'Manglet bekreftelse');
     }
     $person = Person::findOrFail($id);
     $person->records()->detach();
     $person->delete();
     \DB::unprepared('REFRESH MATERIALIZED VIEW litteraturkritikk_records_search');
     return redirect()->action('LitteraturkritikkPersonController@show', $id)->with('status', 'Personen ble slettet');
 }
 public function processPerson(&$record, &$row, $role)
 {
     $rowId = $row['id'];
     $etternavn = $row[$role . '_etternavn'];
     $fornavn = $row[$role . '_fornavn'];
     $kjonn = $row[$role . '_kjonn'];
     $etternavn_arr = $this->splitTrimAndFilterEmpty($etternavn);
     $fornavn_arr = $this->splitTrimAndFilterEmpty($fornavn);
     $this->stats[$role][count($etternavn_arr)] = isset($this->stats[$role][count($etternavn_arr)]) ? $this->stats[$role][count($etternavn_arr)] + 1 : 1;
     if (count($etternavn_arr) > count($fornavn_arr)) {
         if (!in_array($etternavn_arr[0], ['anonym', 'ukjent', 'Ukjent'])) {
             $this->warn("[{$rowId}] Antall etternavn <{$etternavn}> er flere enn antallet fornavn <{$fornavn}>.");
         }
     }
     if (count($etternavn_arr) < count($fornavn_arr)) {
         $this->error("[{$rowId}] Antall etternavn <{$etternavn}> er færre enn antallet fornavn <{$fornavn}>.");
     }
     for ($i = 0; $i < count($etternavn_arr); $i++) {
         if (!isset($fornavn_arr[$i])) {
             $fornavn_arr[$i] = null;
         }
         if (strtolower($etternavn_arr[$i] == 'ukjent')) {
             $etternavn_arr[$i] = 'ukjent';
             $fornavn_arr[$i] = null;
         }
         $red = false;
         if (preg_match('/\\s?\\(red\\.\\)/', $etternavn_arr[$i])) {
             $etternavn_arr[$i] = preg_replace('/\\s?\\(red\\.\\)/', '', $etternavn_arr[$i]);
             $red = true;
         }
         if (preg_match('/\\s?\\(red\\.\\)/', $fornavn_arr[$i])) {
             $fornavn_arr[$i] = preg_replace('/\\s?\\(red\\.\\)/', '', $fornavn_arr[$i]);
             $red = true;
         }
         $person = Person::firstOrNew(['etternavn' => $etternavn_arr[$i], 'fornavn' => $fornavn_arr[$i]]);
         $kjonn = $this->normalizeKjonn($kjonn);
         if ($person->kjonn && $kjonn && $person->kjonn != $kjonn) {
             $this->error("[{$rowId}] Person {$person->id} har registrert flere verdier for kjønn: <{$person->kjonn}> og <{$kjonn}>");
         }
         $person->kjonn = $kjonn;
         if ($role == 'kritiker' && $red) {
             $this->error("[{$rowId}] Redaktørrolle angitt for kritiker");
         }
         $person_role = $red ? 'redaktør' : $role;
         $record->persons()->save($person, ['person_role' => $person_role]);
     }
 }