Files
qt5-legatus-legacy/Lts/Services/EffectShowManagement/object_effect_show_actor_relocation.cpp
T
2026-08-13 18:33:10 +02:00

123 lines
4.8 KiB
C++
Executable File

/**
* Handler for the HMI language
* $Id$
* $HeadURL$
* $Author$
*/
#include "object_effect_show_actor_relocation.h"
#include "initialization.h"
namespace EffectShowManagement
{
ObjectEffectShowActorRelocation::ObjectEffectShowActorRelocation(Initialization *mainHandler)
: m_mainHandler(mainHandler)
, m_logger(getLogger("ObjectEffectShowActorRelocation"))
{
}
//=============================================================================
ObjectEffectShowActorRelocation::~ObjectEffectShowActorRelocation()
{
if (m_data.id > 0)
m_mainHandler->dds()->dts()->removeEffectShowActorRelocationByKey(m_data.id);
}
//=============================================================================
Core::FunctionReplyObject ObjectEffectShowActorRelocation::createObject(const Database::EsmEffectShowActorRelocation &data)
{
m_data = data;
if (m_data.id <= 0)
{
if (!m_mainHandler->db()->insert(m_data))
return Core::FunctionReplyObject(0, tr_lts("dds", "Error inserting Effect Show Actor Relocation into database."));
DEBUG_LOG(m_logger) << "New Effect Show Actor Relocation Id: " << m_data.id;
}
// Publish Data via DTS
onPublishData();
return Core::FunctionReplyObject(m_data.id);
}
//=============================================================================
Core::FunctionReplyObject ObjectEffectShowActorRelocation::updateObject(const Database::EsmEffectShowActorRelocation &data)
{
if (data.id <= 0)
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Object not valid/blocked"));
m_data = data;
if (!m_mainHandler->db()->update(m_data))
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "Error updating EffectShowActorRelocation into database"));
DEBUG_LOG(m_logger) << "Data changed for EffectShowActorRelocation Id: " << m_data.id;
// Publish Data via DTS
onPublishData();
return Core::FunctionReplyObject(m_data.id);
}
//=============================================================================
Core::FunctionReplyObject ObjectEffectShowActorRelocation::removeObject()
{
if (!m_mainHandler->db()->removeEsmEffectShowActorRelocation(m_data.id))
return Core::FunctionReplyObject(m_data.id, tr_lts("dds", "EffectShowActorRelocation %1 can not be removed")).arg(m_data.id);
return Core::FunctionReplyObject(m_data.id);
}
//=============================================================================
void ObjectEffectShowActorRelocation::onPublishData()
{
EffectShowManagement::EffectShowActorRelocation ddsData;
ddsData.id(m_data.id);
ddsData.esmParticipantId(m_data.esmParticipantId);
ddsData.arrival_time(m_data.arrivalTime);
ddsData.position(Core::GeoPosition2D(m_data.position.x(), m_data.position.y()));
ddsData.info(m_data.info.toStdString());
ddsData.orderConfirmation(EffectShowManagement::OrderConfirmation_e::inner_enum(m_data.orderConfirmation));
ddsData.answerText(m_data.answertText.toStdString());
ddsData.isDeleted(false);
ddsData.isUsed(false);
INFO_LOG(m_logger) << "Publish EsmEffectShowActorRelocation-data to dds (" << m_data.id << ") ...";
if (!m_mainHandler->dds()->dts()->publish(ddsData))
ERROR_LOG(m_logger) << "Error publishing EsmEffectShowActorRelocation-data to dds";
}
//=============================================================================
ConvertToTab::RelocationOrder_t ObjectEffectShowActorRelocation::getRelocationOrder() const
{
ConvertToTab::RelocationOrder_t order;
order.centerPosition = Core::GeoPosition2D(m_data.position.x(), m_data.position.y());
order.executionTime = m_data.arrivalTime / 1000; // ms -> seconds
order.infoText = m_data.info;
order.idRelocation = m_data.id;
return order;
}
//=============================================================================
ConvertToTab::RetractOrder_t ObjectEffectShowActorRelocation::getRetractOrder() const
{
ConvertToTab::RetractOrder_t order;
order.id = m_data.id; // ID effect show actor relocation
order.orderType = 0; // relocation order
return order;
}
//=============================================================================
Database::EsmEffectShowActorRelocation ObjectEffectShowActorRelocation::ddsToDb(const EffectShowManagement::EffectShowActorRelocation &ddsData)
{
Database::EsmEffectShowActorRelocation dbData;
dbData.id = ddsData.id();
dbData.esmParticipantId = ddsData.esmParticipantId();
dbData.arrivalTime = ddsData.arrival_time().get();
dbData.position = QPointF(ddsData.position().lon(), ddsData.position().lat());
dbData.info = QString::fromStdString(ddsData.info());
dbData.orderConfirmation = ddsData.orderConfirmation().underlying();
dbData.answertText = QString::fromStdString(ddsData.answerText());
return dbData;
}
//=============================================================================
} // Namespace EffectShowManagement