public function destroy($dic_id, $id, $check_ajax = true)
 {
     if ($check_ajax && !Request::ajax()) {
         App::abort(404);
     }
     $dic = Dictionary::where(is_numeric($dic_id) ? 'id' : 'slug', $dic_id)->first();
     if (!$this->checkDicPermission($dic)) {
         App::abort(404);
     }
     $this->dicval_permission($dic, 'dicval_delete');
     $json_request = array('status' => FALSE, 'responseText' => '');
     $element = DicVal::where('id', $id)->with('allfields', 'alltextfields', 'metas', 'seos', 'related_dicvals')->first();
     $this->callHook('before_all', $dic);
     $this->callHook('before_destroy', $dic, $element);
     if (is_object($element)) {
         #Helper::dd("UPDATE " . (new DicVal())->getTable() . " SET lft = lft - 1, rgt = rgt - 1 WHERE dic_id = '" . $element->dic_id . "' AND lft > " . $element->rgt . "");
         #Helper::tad($element);
         if (@count($element->allfields)) {
             #foreach ($element->allfields as $el)
             #    $el->delete();
             $temp_ids = Dic::makeLists($element->allfields, false, 'id');
             DicFieldVal::whereIn('id', $temp_ids)->delete();
         }
         if (@count($element->alltextfields)) {
             $temp_ids = Dic::makeLists($element->alltextfields, false, 'id');
             DicTextFieldVal::whereIn('id', $temp_ids)->delete();
         }
         if (@count($element->metas)) {
             #foreach ($element->metas as $el)
             #    $el->delete();
             $temp_ids = Dic::makeLists($element->metas, false, 'id');
             DicValMeta::whereIn('id', $temp_ids)->delete();
         }
         if (@count($element->seos)) {
             $temp_ids = Dic::makeLists($element->seos, false, 'id');
             Seo::whereIn('id', $temp_ids)->delete();
         }
         if (@count($element->related_dicvals)) {
             foreach ($element->related_dicvals as $el) {
                 if (is_object($el) && isset($el->pivot) && is_object($el->pivot)) {
                     $el->pivot->delete();
                 }
             }
         }
         if ((int) $element->rgt > 0) {
             DB::update(DB::raw("UPDATE " . (new DicVal())->getTable() . " SET lft = lft - 2, rgt = rgt - 2 WHERE dic_id = '" . $element->dic_id . "' AND lft > " . $element->rgt . ""));
         }
         $element->delete();
     }
     $this->callHook('after_destroy', $dic, $element);
     $this->callHook('after_store_update_destroy', $dic, $element);
     $this->callHook('after_store_update_destroy_order', $dic, $element);
     $json_request['responseText'] = 'Удалено';
     $json_request['status'] = TRUE;
     return Response::json($json_request, 200);
 }