#ifndef SYSUSERMGT_H
#define SYSUSERMGT_H

#include <tbaseutil/tdataresponse.h>
#include <tdatabaseutil/tsqlselectorv2.h>
#include <topcore/topclassabs.h>
#include "sysuser.h"

class TPageTool;
class TSearchEntry;
class TTableView;
class TSplitter;
class TopClassTableConf;

class SysUserMgt : public TopClassAbs
{
    Q_OBJECT
public:
    explicit SysUserMgt(const QString &iModuleNameStr = QString(""),
                        const QVariantMap iUrlPars = QVariantMap(),
                        QWidget *iParent = nullptr);
    ~SysUserMgt();

public slots:
    void refresh(bool iResetPageBol = true);
    void deleteItem(const QVariantList &iIdLst);
    QVariantList selectedItems();
    TopClassAbs *openItem(int iUserIdInt);
    void newItem();
    bool canModify();
    bool isPasswordValidityControl();
    void resetPassword();
    void resetPasswordValidityDate();

private slots:
    void onPageChanged();
    void onSelectionChanged();
    void onDetailSaved(const QVariant &iUidStr);
    void onDetailChanged();
    void onNaviReset();

private:
    TSqlSelectorV2 getSqlSelector(bool iResetPageBol = true);
    void initTableView();
    void initNaviView();
    void fillTableData(const TDataResponse &iDataRes);
    QStringList selectedNames();
    QString uiloaderWhere();

private:
    TSplitter *mBodySplitter = nullptr;
    QWidget *mBodyWidget = nullptr;
    TTableView *mTableView = nullptr;
    TSearchEntry *mSearchEntry = nullptr;
    TPageTool *mPageTool = nullptr;
    QVariantList mSelectedLst;
    SysUser *mDetailView = nullptr;
    QStringList mProductCategoryLst;
    TUiLoader *mNaviView = nullptr;
    TopClassTableConf *mTableConf;
};

#endif // SYSUSERMGT_H