// resources\assets\ts\DataPage\permissionHooks.ts
import { RootState } from './rootReducer';
import { compareCommeStringsForOneEqual } from './helpers';
import { useSelector } from 'react-redux';

export function useHaveAccess(rowData) {
  // -- FORWARD CHECKBOX PERMISSION  (intval($comment->agb_lftid) & intval(Auth::user()->usr_berechtigung())   )
  // -- FORWARD USER PERMISSION   array_search(Auth::user()->usr_id(),explode(",",$comment->agb_rechte_usr1))
  // -- FORWARD CUSTOM GROUP PERMISSION \App\Http\Helpers\Myfunc::CompareCommeStringsForOneEqual($usr_grp,$comment->agb_rechte_usg1)
  // -- NO NEXT TASK  !$comment->agb_id1  )
  // -- SUPERUSER PERMISSION (Auth::user()->usr_berechtigung() & 1024))
  const auth = useSelector((s: RootState) => s.auth);

  const agb_lftid = rowData.agb_lftid;
  const agb_rechte_usr1: string = rowData.agb_rechte_usr1 ?? '';
  const a1_agb_rechte_usg = rowData.a1_agb_rechte_usg ?? '';

  const isOneTask = rowData.a1_agb_id === null;
  const depertmentPerm = (agb_lftid & auth.checkboxPerm) > 0;
  const customGroupPerm = compareCommeStringsForOneEqual(
    auth.checkedPerm,
    a1_agb_rechte_usg
  );
  const userPerm = agb_rechte_usr1.split(',').indexOf(auth.permID + '') != -1;
  const isSuperuser = auth.isAdmin;
  return (
    isSuperuser || isOneTask || depertmentPerm || userPerm || customGroupPerm
  );
}

export function useEditAndDeletePermission(): {
  canEdit: boolean;
  canDelete: boolean;
} {
  const auth = useSelector((s: RootState) => s.auth);
  const isSuperuser = auth.isAdmin;
  if (isSuperuser) {
    return { canEdit: true, canDelete: auth.canDelete || false };
  }

  return { canEdit: auth.canEdit, canDelete: auth.canDelete };
}
