/**
  * Assign relations
  *
  * @return void
  */
 public function assignAction()
 {
     // Check permission
     if ($this->settings['enableRelation']) {
         // Get $_GET and $_POST parameters
         $arguments = $this->request->getArguments();
         $flashMessage = '';
         // Set Table names
         $tables = explode(',', $this->settings['tables']);
         // Get column types
         $columnTypes = $this->recordManagementRepository->getColumnTypes($tables);
         // Set foreign key / foreign key columns
         $foreignKeyColumn = $this->settings['relationForeignKeyColumn'];
         $foreignKeyRelationColumn = $this->settings['relationForeignKeyRelationColumn'];
         $foreignKey = $arguments['foreignKey'];
         // Get relation data
         $relationDataOld = explode('<->', $arguments['relationDataOld']);
         array_pop($relationDataOld);
         $relationDataNew = explode('<->', $arguments['relationDataNew']);
         array_pop($relationDataNew);
         if ($this->settings['relationType'] == 'manytomany') {
             // Delete removed relations
             foreach ($relationDataOld as $idOld) {
                 $deleteRelation = true;
                 $status = 'success';
                 foreach ($relationDataNew as $idNew) {
                     if ($idOld == $idNew) {
                         $deleteRelation = false;
                         break;
                     }
                 }
                 if ($deleteRelation) {
                     $deleteData = array();
                     $deleteData[$foreignKeyColumn] = $foreignKey;
                     $deleteData[$foreignKeyRelationColumn] = $idOld;
                     $status = $this->recordManagementRepository->deleteRecord($tables[0], $deleteData);
                 }
                 // Status
                 switch ($status) {
                     case 'success':
                         break;
                     default:
                         $flashMessage .= ' "' . $status . '"';
                         break;
                 }
             }
             // Create added relations
             foreach ($relationDataNew as $idNew) {
                 $createRelation = true;
                 $status = 'success';
                 foreach ($relationDataOld as $idOld) {
                     if ($idNew == $idOld) {
                         $createRelation = false;
                         break;
                     }
                 }
                 if ($createRelation) {
                     $createData = array();
                     $createData[$foreignKeyColumn]['value'] = $foreignKey;
                     if ($columnTypes[$foreignKeyColumn]['type'] != 'numeric' && $columnTypes[$foreignKeyColumn]['type'] != 'int' && $columnTypes[$foreignKeyColumn]['type'] != 'boolean') {
                         $createData[$foreignKeyColumn]['type'] = 'text';
                     } else {
                         $createData[$foreignKeyColumn]['type'] = 'numeric';
                     }
                     $createData[$foreignKeyRelationColumn]['value'] = $idNew;
                     if ($columnTypes[$foreignKeyRelationColumn]['type'] != 'numeric' && $columnTypes[$foreignKeyRelationColumn]['type'] != 'int' && $columnTypes[$foreignKeyRelationColumn]['type'] != 'boolean') {
                         $createData[$foreignKeyRelationColumn]['type'] = 'text';
                     } else {
                         $createData[$foreignKeyRelationColumn]['type'] = 'numeric';
                     }
                     $returnValues = $this->recordManagementRepository->createRecord($tables[0], $createData);
                     $status = $returnValues['status'];
                 }
                 // Status
                 switch ($status) {
                     case 'success':
                         break;
                     default:
                         $flashMessage .= ' "' . $status . '"';
                         break;
                 }
             }
         } else {
             // Update removed relations
             foreach ($relationDataOld as $idOld) {
                 $deleteRelation = true;
                 $status = 'success';
                 foreach ($relationDataNew as $idNew) {
                     if ($idOld == $idNew) {
                         $deleteRelation = false;
                         break;
                     }
                 }
                 if ($deleteRelation) {
                     $recordIdentifier = array();
                     $recordIdentifier[$foreignKeyColumn] = $foreignKey;
                     $recordIdentifier[$foreignKeyRelationColumn] = $idOld;
                     $updateData = array();
                     if ($columnTypes[$foreignKeyColumn]['type'] != 'numeric' && $columnTypes[$foreignKeyColumn]['type'] != 'int' && $columnTypes[$foreignKeyColumn]['type'] != 'boolean') {
                         $updateData[$foreignKeyColumn]['value'] = '';
                         $updateData[$foreignKeyColumn]['type'] = 'text';
                     } else {
                         if ($columnTypes[$foreignKeyColumn]['not_null']) {
                             $updateData[$foreignKeyColumn]['value'] = 0;
                         } else {
                             $updateData[$foreignKeyColumn]['value'] = NULL;
                         }
                         $updateData[$foreignKeyColumn]['type'] = 'numeric';
                     }
                     $status = $this->recordManagementRepository->updateRecord($tables[0], $recordIdentifier, $updateData);
                 }
                 // Status
                 switch ($status) {
                     case 'success':
                         break;
                     default:
                         $flashMessage .= ' "' . $status . '"';
                         break;
                 }
             }
             // Update added relations
             foreach ($relationDataNew as $idNew) {
                 $createRelation = true;
                 $status = 'success';
                 foreach ($relationDataOld as $idOld) {
                     if ($idNew == $idOld) {
                         $createRelation = false;
                         break;
                     }
                 }
                 if ($createRelation) {
                     $recordIdentifier = array();
                     $recordIdentifier[$foreignKeyRelationColumn] = $idNew;
                     $updateData = array();
                     $updateData[$foreignKeyColumn]['value'] = $foreignKey;
                     if ($columnTypes[$foreignKeyColumn]['type'] != 'numeric' && $columnTypes[$foreignKeyColumn]['type'] != 'int' && $columnTypes[$foreignKeyColumn]['type'] != 'boolean') {
                         $updateData[$foreignKeyColumn]['type'] = 'text';
                     } else {
                         $updateData[$foreignKeyColumn]['type'] = 'numeric';
                     }
                     $status = $this->recordManagementRepository->updateRecord($tables[0], $recordIdentifier, $updateData);
                 }
                 // Status
                 switch ($status) {
                     case 'success':
                         break;
                     default:
                         $flashMessage .= ' "' . $status . '"';
                         break;
                 }
             }
         }
         $this->redirect('relation', NULL, NULL, array('foreignKey' => $foreignKey, 'flashMessage' => $flashMessage));
     }
 }