78 lines
1.8 KiB
C++
78 lines
1.8 KiB
C++
#ifndef DATABASE_H
|
|
#define DATABASE_H
|
|
|
|
#include <QSqlDatabase>
|
|
#include <QSqlQuery>
|
|
#include <QSqlError>
|
|
#include <QDebug>
|
|
#include <QFile>
|
|
#include <QCryptographicHash>
|
|
|
|
struct User {
|
|
int id;
|
|
QString username;
|
|
QString password;
|
|
QString role;
|
|
};
|
|
|
|
struct Route {
|
|
int id;
|
|
QString routeName;
|
|
QString departureTime;
|
|
double price;
|
|
int totalSeats;
|
|
int availableSeats;
|
|
};
|
|
|
|
struct Ticket {
|
|
int id;
|
|
int routeId;
|
|
QString routeName;
|
|
QString passengerName;
|
|
QString documentNumber;
|
|
int seatCount;
|
|
double totalPrice;
|
|
int sellerId;
|
|
QString sellerName;
|
|
QString saleDate;
|
|
};
|
|
|
|
class Database {
|
|
public:
|
|
static Database& instance();
|
|
bool initialize();
|
|
|
|
bool authenticate(const QString& username, const QString& password);
|
|
User getUser(const QString& username);
|
|
QVector<User> getAllUsers();
|
|
bool addUser(const QString& username, const QString& password, const QString& role);
|
|
bool deleteUser(int id);
|
|
|
|
QVector<Route> getAllRoutes();
|
|
Route getRoute(int id);
|
|
bool addRoute(const QString& routeName, const QString& departureTime,
|
|
double price, int totalSeats);
|
|
bool updateRoute(const Route& route);
|
|
bool deleteRoute(int id);
|
|
bool updateAvailableSeats(int routeId, int change);
|
|
|
|
QVector<Ticket> getTicketsByRoute(int routeId);
|
|
QVector<Ticket> getAllTickets();
|
|
bool addTicket(int routeId, const QString& passengerName,
|
|
const QString& documentNumber, int seatCount,
|
|
int sellerId);
|
|
bool deleteTicket(int id);
|
|
int getLastTicketId();
|
|
|
|
private:
|
|
Database() = default;
|
|
~Database() = default;
|
|
Database(const Database&) = delete;
|
|
Database& operator=(const Database&) = delete;
|
|
|
|
QSqlDatabase m_db;
|
|
QString hashPassword(const QString& password);
|
|
};
|
|
|
|
#endif
|