#include "Login.h"
#include "OriginalWnd/OriginalWnd.h"
#include "ui_Login.h"
#include <QStackedWidget>
#include <qDebug>
#include <QSettings>
#include "Src/common/JMessageTip.h"
#include "Src/common/UserManagementShared.h"

Login* Login::m_instance = nullptr;

Login::Login(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Login)
{
    ui->setupUi(this);
    initForm();

}

Login::~Login()
{
    delete ui;
}

void Login::initForm()
{
    QPixmap pixmap(":/images/logo.png");
    QPixmap scaledPixmap = pixmap.scaled(283, 40, Qt::KeepAspectRatio);
    ui->label_logo->setPixmap(scaledPixmap);
     
    ui->userNameLineEdit->setPlaceholderText(tr("Please enter the account number"));
    ui->passLineEdit->setPlaceholderText(tr("Please enter your password"));

    connect(ui->userNameLineEdit, &QLineEdit::textChanged, this, &Login::onUserNameChanged);
}


void Login::onUserNameChanged(const QString &userName) 
{
    QSettings settings("YourCompany_2", "YourAppName_2");
    settings.setValue("userName", userName);
}

void Login::on_SinginButton_clicked()
{
    //emit SendSwitchOriginalWndSignals();
    //return;

    QString strTip;

    QString strUser = ui->userNameLineEdit->text().trimmed();
    if (!strUser.isEmpty())
    {
        QString strPass = ui->passLineEdit->text().trimmed();
        if (!strPass.isEmpty())
        {
            //JEncryption::Encryption();
            int privilege = queryUserPrivilege(strUser, strPass);
            if (privilege != -1) {
                setPrivilege(privilege);
                emit SendSwitchOriginalWndSignals();
            }
            /*if (QStackedWidget* parent = qobject_cast<QStackedWidget*>(this->parentWidget()))
            {
                OriginalWnd* originalWnd = new OriginalWnd(this);
                parent->addWidget(originalWnd);
                parent->setCurrentIndex(parent->indexOf(originalWnd));

            }*/

            return;
        }
        else
        {
            strTip = tr("Please enter your password", "请输入密码");
        }
    }
    else
    {
        strTip = tr("Please enter your username", "请输入用户名称");
    }
    
    JMessageTip::Message_warning(strTip);
}

void Login::on_ExitButton_clicked()
{
    emit CloseMainWndSig();
}

Login* Login::instance(QWidget* parent)
{
    if (!m_instance) {
        m_instance = new Login(parent);
    }
    return m_instance;
}

int Login::getPrivilege() const
{
    return m_privilege;
}

void Login::setPrivilege(int privilege)
{
    m_privilege = privilege;
}

int Login::queryUserPrivilege(const QString& strUser, const QString& strPass)
{
    QSqlDatabase db = QSqlDatabase::database();
    if (!db.isOpen()) {
        qDebug() << "Database is not open.";
        return -1;
    }

    QSqlQuery query(db);
    query.prepare("SELECT Privilege FROM User WHERE UserName = :username AND PassWord = :password");
    query.bindValue(":username", strUser);
    query.bindValue(":password", strPass);

    if (!query.exec()) {
        qDebug() << "Query execution failed:" << query.lastError().text();
        return -1;
    }

    if (query.next()) {
        return query.value(0).toInt();
    }

    return -1; // 未找到用户
}