/**
 * Nudr_DataRepository API OpenAPI file
 * Unified Data Repository Service. © 2020, 3GPP Organizational Partners (ARIB,
 * ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
 *
 * The version of the OpenAPI document: 2.1.2
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator
 * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
 * the class manually.
 */

#include "SubscriptionDataSets.h"

namespace org {
namespace openapitools {
namespace server {
namespace model {

SubscriptionDataSets::SubscriptionDataSets() {
  m_AmDataIsSet = false;
  m_SmfSelDataIsSet = false;
  m_UecAmfDataIsSet = false;
  m_UecSmfDataIsSet = false;
  m_UecSmsfDataIsSet = false;
  m_SmsSubsDataIsSet = false;
  m_SmDataIsSet = false;
  m_TraceDataIsSet = false;
  m_SmsMngDataIsSet = false;
  m_LcsPrivacyDataIsSet = false;
  m_LcsMoDataIsSet = false;
  m_V2xDataIsSet = false;
  m_LcsBroadcastAssistanceTypesDataIsSet = false;
}

SubscriptionDataSets::~SubscriptionDataSets() {}

void SubscriptionDataSets::validate() {
  // TODO: implement validation
}

void to_json(nlohmann::json &j, const SubscriptionDataSets &o) {
  j = nlohmann::json();
  if (o.amDataIsSet())
    j["amData"] = o.m_AmData;
  if (o.smfSelDataIsSet())
    j["smfSelData"] = o.m_SmfSelData;
  if (o.uecAmfDataIsSet())
    j["uecAmfData"] = o.m_UecAmfData;
  if (o.uecSmfDataIsSet())
    j["uecSmfData"] = o.m_UecSmfData;
  if (o.uecSmsfDataIsSet())
    j["uecSmsfData"] = o.m_UecSmsfData;
  if (o.smsSubsDataIsSet())
    j["smsSubsData"] = o.m_SmsSubsData;
  if (o.smDataIsSet() || !o.m_SmData.empty())
    j["smData"] = o.m_SmData;
  if (o.traceDataIsSet())
    j["traceData"] = o.m_TraceData;
  if (o.smsMngDataIsSet())
    j["smsMngData"] = o.m_SmsMngData;
  if (o.lcsPrivacyDataIsSet())
    j["lcsPrivacyData"] = o.m_LcsPrivacyData;
  if (o.lcsMoDataIsSet())
    j["lcsMoData"] = o.m_LcsMoData;
  if (o.v2xDataIsSet())
    j["v2xData"] = o.m_V2xData;
  if (o.lcsBroadcastAssistanceTypesDataIsSet())
    j["lcsBroadcastAssistanceTypesData"] = o.m_LcsBroadcastAssistanceTypesData;
}

void from_json(const nlohmann::json &j, SubscriptionDataSets &o) {
  if (j.find("amData") != j.end()) {
    j.at("amData").get_to(o.m_AmData);
    o.m_AmDataIsSet = true;
  }
  if (j.find("smfSelData") != j.end()) {
    j.at("smfSelData").get_to(o.m_SmfSelData);
    o.m_SmfSelDataIsSet = true;
  }
  if (j.find("uecAmfData") != j.end()) {
    j.at("uecAmfData").get_to(o.m_UecAmfData);
    o.m_UecAmfDataIsSet = true;
  }
  if (j.find("uecSmfData") != j.end()) {
    j.at("uecSmfData").get_to(o.m_UecSmfData);
    o.m_UecSmfDataIsSet = true;
  }
  if (j.find("uecSmsfData") != j.end()) {
    j.at("uecSmsfData").get_to(o.m_UecSmsfData);
    o.m_UecSmsfDataIsSet = true;
  }
  if (j.find("smsSubsData") != j.end()) {
    j.at("smsSubsData").get_to(o.m_SmsSubsData);
    o.m_SmsSubsDataIsSet = true;
  }
  if (j.find("smData") != j.end()) {
    j.at("smData").get_to(o.m_SmData);
    o.m_SmDataIsSet = true;
  }
  if (j.find("traceData") != j.end()) {
    j.at("traceData").get_to(o.m_TraceData);
    o.m_TraceDataIsSet = true;
  }
  if (j.find("smsMngData") != j.end()) {
    j.at("smsMngData").get_to(o.m_SmsMngData);
    o.m_SmsMngDataIsSet = true;
  }
  if (j.find("lcsPrivacyData") != j.end()) {
    j.at("lcsPrivacyData").get_to(o.m_LcsPrivacyData);
    o.m_LcsPrivacyDataIsSet = true;
  }
  if (j.find("lcsMoData") != j.end()) {
    j.at("lcsMoData").get_to(o.m_LcsMoData);
    o.m_LcsMoDataIsSet = true;
  }
  if (j.find("v2xData") != j.end()) {
    j.at("v2xData").get_to(o.m_V2xData);
    o.m_V2xDataIsSet = true;
  }
  if (j.find("lcsBroadcastAssistanceTypesData") != j.end()) {
    j.at("lcsBroadcastAssistanceTypesData")
        .get_to(o.m_LcsBroadcastAssistanceTypesData);
    o.m_LcsBroadcastAssistanceTypesDataIsSet = true;
  }
}

AccessAndMobilitySubscriptionData SubscriptionDataSets::getAmData() const {
  return m_AmData;
}
void SubscriptionDataSets::setAmData(
    AccessAndMobilitySubscriptionData const &value) {
  m_AmData = value;
  m_AmDataIsSet = true;
}
bool SubscriptionDataSets::amDataIsSet() const { return m_AmDataIsSet; }
void SubscriptionDataSets::unsetAmData() { m_AmDataIsSet = false; }
SmfSelectionSubscriptionData SubscriptionDataSets::getSmfSelData() const {
  return m_SmfSelData;
}
void SubscriptionDataSets::setSmfSelData(
    SmfSelectionSubscriptionData const &value) {
  m_SmfSelData = value;
  m_SmfSelDataIsSet = true;
}
bool SubscriptionDataSets::smfSelDataIsSet() const { return m_SmfSelDataIsSet; }
void SubscriptionDataSets::unsetSmfSelData() { m_SmfSelDataIsSet = false; }
UeContextInAmfData SubscriptionDataSets::getUecAmfData() const {
  return m_UecAmfData;
}
void SubscriptionDataSets::setUecAmfData(UeContextInAmfData const &value) {
  m_UecAmfData = value;
  m_UecAmfDataIsSet = true;
}
bool SubscriptionDataSets::uecAmfDataIsSet() const { return m_UecAmfDataIsSet; }
void SubscriptionDataSets::unsetUecAmfData() { m_UecAmfDataIsSet = false; }
UeContextInSmfData SubscriptionDataSets::getUecSmfData() const {
  return m_UecSmfData;
}
void SubscriptionDataSets::setUecSmfData(UeContextInSmfData const &value) {
  m_UecSmfData = value;
  m_UecSmfDataIsSet = true;
}
bool SubscriptionDataSets::uecSmfDataIsSet() const { return m_UecSmfDataIsSet; }
void SubscriptionDataSets::unsetUecSmfData() { m_UecSmfDataIsSet = false; }
UeContextInSmsfData SubscriptionDataSets::getUecSmsfData() const {
  return m_UecSmsfData;
}
void SubscriptionDataSets::setUecSmsfData(UeContextInSmsfData const &value) {
  m_UecSmsfData = value;
  m_UecSmsfDataIsSet = true;
}
bool SubscriptionDataSets::uecSmsfDataIsSet() const {
  return m_UecSmsfDataIsSet;
}
void SubscriptionDataSets::unsetUecSmsfData() { m_UecSmsfDataIsSet = false; }
SmsSubscriptionData SubscriptionDataSets::getSmsSubsData() const {
  return m_SmsSubsData;
}
void SubscriptionDataSets::setSmsSubsData(SmsSubscriptionData const &value) {
  m_SmsSubsData = value;
  m_SmsSubsDataIsSet = true;
}
bool SubscriptionDataSets::smsSubsDataIsSet() const {
  return m_SmsSubsDataIsSet;
}
void SubscriptionDataSets::unsetSmsSubsData() { m_SmsSubsDataIsSet = false; }
std::vector<SessionManagementSubscriptionData> &
SubscriptionDataSets::getSmData() {
  return m_SmData;
}
void SubscriptionDataSets::setSmData(
    std::vector<SessionManagementSubscriptionData> const &value) {
  m_SmData = value;
  m_SmDataIsSet = true;
}
bool SubscriptionDataSets::smDataIsSet() const { return m_SmDataIsSet; }
void SubscriptionDataSets::unsetSmData() { m_SmDataIsSet = false; }
TraceData SubscriptionDataSets::getTraceData() const { return m_TraceData; }
void SubscriptionDataSets::setTraceData(TraceData const &value) {
  m_TraceData = value;
  m_TraceDataIsSet = true;
}
bool SubscriptionDataSets::traceDataIsSet() const { return m_TraceDataIsSet; }
void SubscriptionDataSets::unsetTraceData() { m_TraceDataIsSet = false; }
SmsManagementSubscriptionData SubscriptionDataSets::getSmsMngData() const {
  return m_SmsMngData;
}
void SubscriptionDataSets::setSmsMngData(
    SmsManagementSubscriptionData const &value) {
  m_SmsMngData = value;
  m_SmsMngDataIsSet = true;
}
bool SubscriptionDataSets::smsMngDataIsSet() const { return m_SmsMngDataIsSet; }
void SubscriptionDataSets::unsetSmsMngData() { m_SmsMngDataIsSet = false; }
LcsPrivacyData SubscriptionDataSets::getLcsPrivacyData() const {
  return m_LcsPrivacyData;
}
void SubscriptionDataSets::setLcsPrivacyData(LcsPrivacyData const &value) {
  m_LcsPrivacyData = value;
  m_LcsPrivacyDataIsSet = true;
}
bool SubscriptionDataSets::lcsPrivacyDataIsSet() const {
  return m_LcsPrivacyDataIsSet;
}
void SubscriptionDataSets::unsetLcsPrivacyData() {
  m_LcsPrivacyDataIsSet = false;
}
LcsMoData SubscriptionDataSets::getLcsMoData() const { return m_LcsMoData; }
void SubscriptionDataSets::setLcsMoData(LcsMoData const &value) {
  m_LcsMoData = value;
  m_LcsMoDataIsSet = true;
}
bool SubscriptionDataSets::lcsMoDataIsSet() const { return m_LcsMoDataIsSet; }
void SubscriptionDataSets::unsetLcsMoData() { m_LcsMoDataIsSet = false; }
V2xSubscriptionData SubscriptionDataSets::getV2xData() const {
  return m_V2xData;
}
void SubscriptionDataSets::setV2xData(V2xSubscriptionData const &value) {
  m_V2xData = value;
  m_V2xDataIsSet = true;
}
bool SubscriptionDataSets::v2xDataIsSet() const { return m_V2xDataIsSet; }
void SubscriptionDataSets::unsetV2xData() { m_V2xDataIsSet = false; }
LcsBroadcastAssistanceTypesData
SubscriptionDataSets::getLcsBroadcastAssistanceTypesData() const {
  return m_LcsBroadcastAssistanceTypesData;
}
void SubscriptionDataSets::setLcsBroadcastAssistanceTypesData(
    LcsBroadcastAssistanceTypesData const &value) {
  m_LcsBroadcastAssistanceTypesData = value;
  m_LcsBroadcastAssistanceTypesDataIsSet = true;
}
bool SubscriptionDataSets::lcsBroadcastAssistanceTypesDataIsSet() const {
  return m_LcsBroadcastAssistanceTypesDataIsSet;
}
void SubscriptionDataSets::unsetLcsBroadcastAssistanceTypesData() {
  m_LcsBroadcastAssistanceTypesDataIsSet = false;
}

} // namespace model
} // namespace server
} // namespace openapitools
} // namespace org
