Initial commit
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
#include "refunds_repository.h"
|
||||
|
||||
#include "create_refund_request.h"
|
||||
#include "refund_dto.h"
|
||||
#include "repository_result.h"
|
||||
#include "update_refund_request.h"
|
||||
#include <QSqlError>
|
||||
#include <QSqlQuery>
|
||||
|
||||
RefundsRepository::RefundsRepository(QSqlDatabase &database, QObject *parent)
|
||||
: BaseSqlTableRepository(database, parent) {}
|
||||
|
||||
RepositoryResult
|
||||
RefundsRepository::createRefund(const CreateRefundRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("INSERT INTO refunds (ticket_id, refund_at, refund_amount) "
|
||||
"VALUES (:ticket_id, :refund_at, :refund_amount)");
|
||||
query.bindValue(":ticket_id", request.ticketId());
|
||||
query.bindValue(":refund_at", request.refundAt());
|
||||
query.bindValue(":refund_amount", request.refundAmount());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataCreated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RefundsRepository::getRefundById(qint32 id,
|
||||
RefundDTO &refund) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("SELECT refund_id, ticket_id, refund_at, refund_amount FROM "
|
||||
"refunds WHERE refund_id = :id");
|
||||
query.bindValue(":id", id);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
if (!query.next()) {
|
||||
return RepositoryResult::failureResult("Refund not found");
|
||||
}
|
||||
|
||||
RefundDTO refundDTO;
|
||||
refundDTO.setRefundAmount(query.value("refund_amount").toDouble());
|
||||
refundDTO.setRefundAt(query.value("refund_at").toDateTime());
|
||||
refundDTO.setRefundId(query.value("refund_id").toInt());
|
||||
refundDTO.setTicketId(query.value("ticket_id").toInt());
|
||||
|
||||
refund = mapQueryToDTO(query);
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult
|
||||
RefundsRepository::getAllRefunds(QVector<RefundDTO> &refunds) const {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare(
|
||||
"SELECT refund_id, ticket_id, refund_at, refund_amount FROM refunds");
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
while (query.next()) {
|
||||
refunds.append(mapQueryToDTO(query));
|
||||
}
|
||||
|
||||
emit dataRetrieved();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult
|
||||
RefundsRepository::updateRefund(const UpdateRefundRequest &request) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare(
|
||||
"UPDATE refunds SET ticket_id = :ticket_id, refund_at = :refund_at, "
|
||||
"refund_amount = :refund_amount WHERE refund_id = :refund_id");
|
||||
query.bindValue(":refund_amount", request.refundAmount());
|
||||
query.bindValue(":refund_at", request.refundAt());
|
||||
query.bindValue(":refund_id", request.refundId());
|
||||
query.bindValue(":ticket_id", request.ticketId());
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataUpdated();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RepositoryResult RefundsRepository::deleteRefundById(qint32 refundId) {
|
||||
QSqlQuery query = foreignKeysOnQuery();
|
||||
query.prepare("DELETE FROM refunds WHERE refund_id = :refund_id");
|
||||
query.bindValue(":refund_id", refundId);
|
||||
|
||||
if (!query.exec()) {
|
||||
return RepositoryResult::failureResult(query.lastError().text());
|
||||
}
|
||||
|
||||
emit dataDeleted();
|
||||
return RepositoryResult::successResult();
|
||||
}
|
||||
|
||||
RefundDTO RefundsRepository::mapQueryToDTO(const QSqlQuery &query) const {
|
||||
RefundDTO refundDTO;
|
||||
refundDTO.setRefundAmount(query.value("refund_amount").toDouble());
|
||||
refundDTO.setRefundAt(query.value("refund_at").toDateTime());
|
||||
refundDTO.setRefundId(query.value("refund_id").toInt());
|
||||
refundDTO.setTicketId(query.value("ticket_id").toInt());
|
||||
|
||||
return refundDTO;
|
||||
}
|
||||
Reference in New Issue
Block a user