Initial commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
#include "session_management_widget.h"
|
||||
|
||||
#include "create_session_request.h"
|
||||
#include "error_dialog.h"
|
||||
#include "model_manager.h"
|
||||
#include "repository_manager.h"
|
||||
#include "repository_result.h"
|
||||
#include "schema_metadata.h"
|
||||
#include "sessions_model.h"
|
||||
#include "sessions_repository.h"
|
||||
#include <qnamespace.h>
|
||||
|
||||
SessionManagementWidget::SessionManagementWidget(QWidget *parent)
|
||||
: QWidget(parent) {
|
||||
setupUi(this);
|
||||
|
||||
initializeRepositories(); // First of second
|
||||
initializeModels(); // First of second
|
||||
setupTableView(); // After initialization of repositories
|
||||
setupHallFinder();
|
||||
setupMovieFinder();
|
||||
setupConnections();
|
||||
}
|
||||
|
||||
void SessionManagementWidget::initializeRepositories() {
|
||||
RepositoryManager &repositoryManager = RepositoryManager::instance();
|
||||
SchemaMetadata metadata = SchemaMetadata::defaultSchema();
|
||||
|
||||
sessionsRepository_ = repositoryManager.getRepositoryAs<SessionsRepository>(
|
||||
metadata.repositoryTableName("sessions"));
|
||||
|
||||
if (!sessionsRepository_) {
|
||||
qFatal() << "SessionManagementWidget::initializeRepositories: Failed to "
|
||||
"initialize repositories";
|
||||
}
|
||||
}
|
||||
|
||||
void SessionManagementWidget::initializeModels() {
|
||||
ModelManager &modelManager = ModelManager::instance();
|
||||
SchemaMetadata metadata = SchemaMetadata::defaultSchema();
|
||||
|
||||
sessionsModel_ = modelManager.getModelAs<SessionsModel>(
|
||||
metadata.modelTableName("sessions"));
|
||||
|
||||
if (!bool(sessionsModel_)) {
|
||||
qFatal() << "SessionManagementWidget::initializeModels: Failed to "
|
||||
"initialize models";
|
||||
}
|
||||
}
|
||||
|
||||
void SessionManagementWidget::setupTableView() {
|
||||
tableSessions->setModel(sessionsModel_);
|
||||
}
|
||||
|
||||
void SessionManagementWidget::setupConnections() {
|
||||
connect(btnAddSession, &QPushButton::clicked, this,
|
||||
&SessionManagementWidget::onPushButtonAddSessionClicked);
|
||||
|
||||
connect(hallFinder, &EntityFinderWidget::fieldRetrieved, this,
|
||||
&SessionManagementWidget::onHallFieldRetrieved);
|
||||
|
||||
connect(movieFinder, &EntityFinderWidget::fieldRetrieved, this,
|
||||
&SessionManagementWidget::onMovieFieldRetrieved);
|
||||
}
|
||||
|
||||
void SessionManagementWidget::setupHallFinder() {
|
||||
hallFinder->setDefaultRelation("halls");
|
||||
hallFinder->setLabelText(EntityFinderWidget::tr("Select hall"));
|
||||
hallFinder->setLineEditPlaceholder(
|
||||
EntityFinderWidget::tr("Here will be information about selected hall"));
|
||||
}
|
||||
|
||||
void SessionManagementWidget::setupMovieFinder() {
|
||||
movieFinder->setDefaultRelation("movies");
|
||||
movieFinder->setLabelText(EntityFinderWidget::tr("Select movie"));
|
||||
movieFinder->setLineEditPlaceholder(
|
||||
EntityFinderWidget::tr("Here will be information about selected movie"));
|
||||
}
|
||||
|
||||
void SessionManagementWidget::onPushButtonAddSessionClicked() {
|
||||
QDateTime beginAt = dateTimeEditBeginAt->dateTime();
|
||||
double ticketPrice = spinBoxTicketPrice->value();
|
||||
|
||||
CreateSessionRequest request;
|
||||
request.setBeginAt(beginAt);
|
||||
request.setHallId(selectedHallId_);
|
||||
request.setMovieId(selectedMovieId_);
|
||||
request.setTicketPrice(ticketPrice);
|
||||
|
||||
RepositoryResult result = sessionsRepository_->createSession(request);
|
||||
if (!result.success) {
|
||||
qWarning() << "Failed to create session:" << result.errorMessage;
|
||||
ErrorDialog::displayError(this, result.errorMessage);
|
||||
}
|
||||
};
|
||||
|
||||
void SessionManagementWidget::onHallFieldRetrieved(const QSqlField &field) {
|
||||
selectedHallId_ = field.value().toInt();
|
||||
}
|
||||
|
||||
void SessionManagementWidget::onMovieFieldRetrieved(const QSqlField &field) {
|
||||
selectedMovieId_ = field.value().toInt();
|
||||
}
|
||||
Reference in New Issue
Block a user