#ifndef INSTRUCTORSANDTRAINEESWIDGET_H
#define INSTRUCTORSANDTRAINEESWIDGET_H

#include <QWidget>
#include <QTranslator>
#include "instructorsAndTrainees_global.h"
#include "viewertrainees.h"
#include "viewerinstructors.h"
#include "interfacedatabaselms.h"

namespace Ui {
class InstructorsAndTraineesWidget;
}

class INSTRUCTORSANDTRAINEES_EXPORT InstructorsAndTraineesWidget : public QWidget
{
    Q_OBJECT

public:
    explicit InstructorsAndTraineesWidget(QWidget *parent = nullptr);
    ~InstructorsAndTraineesWidget();

private:
    void changeEvent(QEvent * event) override;

public Q_SLOTS:
    //Слот обработки смены языка
    void slot_LanguageChanged(QString language);

Q_SIGNALS:
    //сигнал об изменении языка интерфейса
    void signal_LanguageChanged(QString language);

    //сигнал о необходимости обновления интерфейса
    void signal_NeedUpdateUI(bool treeInstructor, bool treeTrainee);

    //сигнал о блокировке авторизации
    void signal_BlockAutorization(bool block);

    //сигнал о выборе обучаемого (в списке)
    void signal_traineeSelected(QString login);

    //сигнал об изменении вкладки диалога (в мессенджере)
    void signal_tabMessengerChanged(QString login);

    //сигнал об инициализации мессенджера
    void signal_InitMessanger(QList<Trainee> listTrainees);

public:
    QString getMainInstructorName();
    //QList<Trainee> getListTrainees();

    //Авторизация обучаемого на клиенте
    bool authorizationTrainee(QString login, QString password, QString classroom_name = QStringLiteral(""), QString computer_name = QStringLiteral(""));
    bool deAuthorizationTrainee(QString login);
    QString getNameTraineeByLogin(QString login);

    //Авторизация инструктора на клиенте
    bool authorizationInstructor(QString login, QString password);
    bool deAuthorizationInstructor(QString login);
    QString getNameInstructorByLogin(QString login);

private Q_SLOTS:
    void on_btnConnectionToDB_clicked();
    void on_btnAuthorizationInstructor_clicked();

    void on_btnDocTasks_clicked();

    void on_toolButton_clicked();

private:
    void updateLabelLoggedInInstructor();

    //Авторизация инструктора локальная
    bool authorizationInstructorLocal(QWidget* parent = nullptr);
    bool authorizationIsCompleted();

private:
    Ui::InstructorsAndTraineesWidget *ui;

    InterfaceDataBaseLMS* dbLMS;

    ViewerTrainees* viewerTrainees;
    ViewerInstructors* viewerInstructors;

    bool adminMode;
    QString loginInstructorLoggedInLocal;

    QTranslator qtLanguageTranslator;

    QMutex mtxAccess;
};

#endif // INSTRUCTORSANDTRAINEESWIDGET_H
