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]); }