public function UndoAction($syllabaryId)
 {
     $undo = UndoRecord::where('syllabary_id', '=', $syllabaryId)->orderBy('created_at', 'desc')->first();
     if ($undo == NULL) {
         return response()->json(['success' => false]);
     }
     $undoData = json_decode($undo->json_data, true);
     if ($undoData['action'] == "add_row") {
         $rowId = $undoData['row_id'];
         $this->RemoveRow($syllabaryId, $rowId, true);
     } else {
         if ($undoData['action'] == 'remove_row') {
             if ($undoData['direction'] == 'up') {
                 $rowId = $undoData['row_id'] * -1;
             } else {
                 $rowId = $undoData['row_id'];
             }
             $ipa = $undoData['ipa'];
             $symbol_id = $undoData['symbol_id'];
             $audio_sample = $undoData['audio_sample'];
             $this->AddRow($syllabaryId, $rowId, true, $ipa, $symbol_id, $audio_sample);
         } else {
             if ($undoData['action'] == 'add_column') {
                 $colId = $undoData['col_id'];
                 $this->RemoveColumn($syllabaryId, $colId, true);
             } else {
                 if ($undoData['action'] == 'remove_column') {
                     if ($undoData['direction'] == 'left') {
                         $colId = $undoData['col_id'] * -1;
                     } else {
                         $colId = $undoData['col_id'];
                     }
                     $ipa = $undoData['ipa'];
                     $symbol_id = $undoData['symbol_id'];
                     $audio_sample = $undoData['audio_sample'];
                     $this->AddColumn($syllabaryId, $colId, true, $ipa, $symbol_id, $audio_sample);
                 } else {
                     if ($undoData['action'] == 'remove_cell') {
                         $rowId = $undoData['row_id'];
                         $colId = $undoData['col_id'];
                         $this->RestoreCell($syllabaryId, $rowId, $colId, true);
                     } else {
                         if ($undoData['action'] == 'restore_cell') {
                             $rowId = $undoData['row_id'];
                             $colId = $undoData['col_id'];
                             $this->RemoveCell($syllabaryId, $rowId, $colId, true);
                         } else {
                             if ($undoData['action'] == 'update_symbol') {
                                 $symbolId = $undoData['symbol_id'];
                                 $symbolData = $undoData['old_symbol_data'];
                                 $symbol = Symbol::find($symbolId);
                                 if ($symbol != NULL) {
                                     $symbol->symbol_data = $symbolData;
                                     $symbol->save();
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     $undo->delete();
     return response()->json(['success' => true]);
 }