diff --git a/basket.cpp b/basket.cpp index ba2595670c82a1f269eea96186b2ba2fd42e880d..b6692f7023c7a26d9a6bdcd5f24333ad155f582c 100644 --- a/basket.cpp +++ b/basket.cpp @@ -6,9 +6,8 @@ basket::basket(QWidget *parent) : ui(new Ui::basket) { ui->setupUi(this); - this->setWindowTitle("Окно клиента"); this->setWindowTitle("Корзина"); - this -> show(); + this->show(); if (!m_db.open()) qDebug()<<"Error: DB not connectred"; else qDebug()<<"DB connected succesfully"; m_query = new QSqlQuery(m_db); diff --git a/blondinkawindow.cpp b/blondinkawindow.cpp index 4c3e5f8a886edd8258a016107d189e42f23770f3..95cf924235ab8eaf90934f7627900dd75fec1ab7 100644 --- a/blondinkawindow.cpp +++ b/blondinkawindow.cpp @@ -33,6 +33,7 @@ void BlondinkaWindow::on_hallIncomeButton_clicked() interval = new intervalDialog(); interval->setInfoLabelText("Вывести прибыль зала за интервал времени"); interval->m_db = m_db; + interval->mode = "hallIncome"; } void BlondinkaWindow::on_filmIncomeButton_clicked() @@ -40,12 +41,14 @@ void BlondinkaWindow::on_filmIncomeButton_clicked() interval = new intervalDialog(); interval->setInfoLabelText("Вывести прибыль фильма за интервал времени"); interval->m_db = m_db; + interval->mode = "filmIncome"; } void BlondinkaWindow::on_ticketsButton_clicked() { interval = new intervalDialog(); interval->setInfoLabelText("Вывести билеты, купленные за интервал времени"); interval->m_db = m_db; + interval->mode = "tickets"; } void BlondinkaWindow::on_filmRatingButton_clicked() @@ -64,5 +67,4 @@ void BlondinkaWindow::on_editFilmButton_clicked() { editFilm = new editFilmDialog(); editFilm->m_db = m_db; - } diff --git a/intervaldialog.cpp b/intervaldialog.cpp index 2df58a9db8b3836d8659511bb48563dc57f3284e..41f4ed1a7eeb29314a84494450d53fb6e12ef7e3 100644 --- a/intervaldialog.cpp +++ b/intervaldialog.cpp @@ -7,7 +7,7 @@ intervalDialog::intervalDialog(QWidget *parent) : { ui->setupUi(this); this->show(); - + m_query = new QSqlQuery(m_db); } intervalDialog::~intervalDialog() @@ -18,3 +18,67 @@ intervalDialog::~intervalDialog() void intervalDialog::setInfoLabelText(QString string){ ui->infoLabel->setText(string); } + +void intervalDialog::tableView() +{ + QSqlQueryModel* result_model = new QSqlQueryModel(this); + m_query->exec("SELECT film_id AS Number, title, duration, year FROM films;"); + result_model->setQuery(*m_query); + ui->tableView->setModel(result_model); +} + +void intervalDialog::on_pushButton_clicked() +{ + qDebug()<dateFrom->date() >= ui->dateTo->date()){ + ui->errorLabel->setText("Неверно заданы интервалы!"); + } + else { + if (mode == "") qDebug()<<"Не задан ключ!!!!"; + if (mode == "tickets") + ticketsMode(ui->dateFrom->date(), ui->dateTo->date()); + + if (mode == "hallIncome") + hallIncomeMode(ui->dateFrom->date(), ui->dateTo->date()); + + if (mode == "filmIncome") + filmIncomeMode(ui->dateFrom->date(), ui->dateTo->date()); + } +} + +void intervalDialog::ticketsMode(QDate from, QDate to){ + m_query->prepare("SELECT Films.title, Tickets.purchase_date, Tickets.customer, Halls.hall_id, Sessions.price FROM Tickets JOIN Sessions ON Tickets.session_id = Sessions.session_id JOIN Films ON Sessions.film_id = Films.film_id JOIN Halls ON Sessions.hall_id = Halls.hall_id WHERE Tickets.purchase_date BETWEEN :from AND :to ORDER BY purchase_date;"); + m_query->bindValue(":from", from.toString("yyyy-MM-dd")); + m_query->bindValue(":to", to.toString("yyyy-MM-dd")); + + if (!m_query->exec() && !m_query->next()) + qDebug() << "Error executing query: " << m_query->lastError().text(); + + QSqlQueryModel* result_model = new QSqlQueryModel(this); + result_model->setQuery(*m_query); + ui->tableView->setModel(result_model); +} +void intervalDialog::hallIncomeMode(QDate from, QDate to){ + m_query->prepare("SELECT Halls.hall_id, SUM(Sessions.price) AS profit FROM Halls JOIN Sessions ON Halls.hall_id = Sessions.hall_id JOIN Tickets ON Sessions.session_id = Tickets.session_id WHERE Tickets.purchase_date BETWEEN :from AND :to GROUP BY Halls.hall_id;"); + m_query->bindValue(":from", from.toString("yyyy-MM-dd")); + m_query->bindValue(":to", to.toString("yyyy-MM-dd")); + + if (!m_query->exec() && !m_query->next()) + qDebug() << "Error executing query: " << m_query->lastError().text(); + + QSqlQueryModel* result_model = new QSqlQueryModel(this); + result_model->setQuery(*m_query); + ui->tableView->setModel(result_model); +} +void intervalDialog::filmIncomeMode(QDate from, QDate to){ + m_query->prepare("SELECT Films.title, SUM(Sessions.price) AS profit FROM Films LEFT JOIN Sessions ON Films.film_id = Sessions.film_id LEFT JOIN Tickets ON Sessions.session_id = Tickets.session_id WHERE Tickets.purchase_date BETWEEN :from AND :to GROUP BY Films.title;"); + m_query->bindValue(":from", from.toString("yyyy-MM-dd")); + m_query->bindValue(":to", to.toString("yyyy-MM-dd")); + qDebug()<exec() && !m_query->next()) + qDebug() << "Error executing query: " << m_query->lastError().text(); + + QSqlQueryModel* result_model = new QSqlQueryModel(this); + result_model->setQuery(*m_query); + ui->tableView->setModel(result_model); +} diff --git a/intervaldialog.h b/intervaldialog.h index e29a46ad12971882d9bc2424dac7ec64c6d3a09b..d1003b6ac9b779c82efe0b8131d9a9b017bcbc80 100644 --- a/intervaldialog.h +++ b/intervaldialog.h @@ -19,10 +19,20 @@ public: void setInfoLabelText(QString string); QSqlDatabase m_db; + QString mode; +private slots: + void on_pushButton_clicked(); + private: Ui::intervalDialog *ui; + QSqlTableModel *m_table_model ; + QSqlQuery *m_query ; + void tableView(); + void ticketsMode(QDate from, QDate to); + void hallIncomeMode(QDate from, QDate to); + void filmIncomeMode(QDate from, QDate to); }; #endif // INTERVALDIALOG_H diff --git a/intervaldialog.ui b/intervaldialog.ui index 82bb0ccc319d59145fbc902385e2a0143efe6edf..aec3ddcea87c42b3910548c01c6d7bcde05db6da 100644 --- a/intervaldialog.ui +++ b/intervaldialog.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 529 + 307 @@ -17,7 +17,7 @@ 10 - 260 + 270 91 32 @@ -32,7 +32,7 @@ - 10 + 40 30 391 20 @@ -49,13 +49,13 @@ 110 - 270 - 141 - 16 + 280 + 301 + 20 - errorLabel + ... Qt::AlignCenter @@ -64,8 +64,8 @@ - 270 - 260 + 410 + 270 114 32 @@ -77,10 +77,10 @@ - 90 + 120 60 - 234 - 26 + 292 + 28 @@ -92,7 +92,21 @@ - + + + + 0 + 0 + 0 + 2024 + 4 + 1 + + + + true + + @@ -102,7 +116,21 @@ - + + + + 0 + 0 + 0 + 2024 + 4 + 2 + + + + true + + @@ -111,7 +139,7 @@ 10 100 - 381 + 501 141