Initial commit
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
#include "tickets_repository.h"
|
||||
|
||||
#include "create_ticket_request.h"
|
||||
#include "repository_result.h"
|
||||
#include "ticket_dto.h"
|
||||
#include "update_ticket_request.h"
|
||||
#include <QSqlError>
|
||||
#include <QSqlQuery>
|
||||
|
||||
TicketsRepository::TicketsRepository(QSqlDatabase &database, QObject *parent)
|
||||
: BaseSqlTableRepository(database, parent) {}
|
||||
|
||||
RepositoryResult
|
||||
TicketsRepository::createTicket(const CreateTicketRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("INSERT INTO tickets (session_id, seat_number, sold_at) VALUES "
|
||||
"(:session_id, :seat_number, :sold_at)");
|
||||
query.bindValue(":seat_number", request.seatNumber());
|
||||
query.bindValue(":session_id", request.sessionId());
|
||||
query.bindValue(":sold_at", request.soldAt());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataCreated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult TicketsRepository::getTicketById(qint32 id,
|
||||
TicketDTO &ticket) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("SELECT ticket_id, session_id, seat_number, sold_at FROM "
|
||||
"tickets WHERE ticket_id = :id");
|
||||
query.bindValue(":id", id);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
if (!query.next()) {
|
||||
return RepositoryResult::failureResult("Ticket not found");
|
||||
}
|
||||
|
||||
ticket = mapQueryToDTO(query);
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult
|
||||
TicketsRepository::getAllTickets(QVector<TicketDTO> &tickets) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare(
|
||||
"SELECT ticket_id, session_id, seat_number, sold_at FROM tickets");
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
while (query.next()) {
|
||||
tickets.append(mapQueryToDTO(query));
|
||||
}
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult
|
||||
TicketsRepository::updateTicket(const UpdateTicketRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare(
|
||||
"UPDATE tickets SET session_id = :session_id, seat_number = "
|
||||
":seat_number, sold_at = :sold_at WHERE ticket_id = :ticket_id");
|
||||
query.bindValue(":seat_number", request.seatNumber());
|
||||
query.bindValue(":session_id", request.sessionId());
|
||||
query.bindValue(":sold_at", request.soldAt());
|
||||
query.bindValue(":ticket_id", request.ticketId());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataUpdated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult TicketsRepository::deleteTicketById(qint32 ticketId) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("DELETE FROM tickets WHERE ticket_id = :ticket_id");
|
||||
query.bindValue(":ticket_id", ticketId);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataDeleted();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
TicketDTO TicketsRepository::mapQueryToDTO(const QSqlQuery &query) const {
|
||||
TicketDTO ticketDTO;
|
||||
ticketDTO.setSeatNumber(query.value("seat_number").toInt());
|
||||
ticketDTO.setSessionId(query.value("session_id").toInt());
|
||||
ticketDTO.setSoldAt(query.value("sold_at").toDateTime());
|
||||
ticketDTO.setTicketId(query.value("ticket_id").toInt());
|
||||
|
||||
return ticketDTO;
|
||||
}
|
||||
Reference in New Issue
Block a user