/**
 * Namf_Communication
 * AMF Communication Service © 2019, 3GPP Organizational Partners (ARIB, ATIS,
 * CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
 *
 * The version of the OpenAPI document: 1.1.0.alpha-1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator
 * (https://openapi-generator.tech). https://openapi-generator.tech Do not edit
 * the class manually.
 */

#include "N1N2MessageTransferReqData.h"

namespace oai {
namespace amf {
namespace model {

N1N2MessageTransferReqData::N1N2MessageTransferReqData() {
  m_N1MessageContainerIsSet     = false;
  m_N2InfoContainerIsSet        = false;
  m_SkipInd                     = false;
  m_SkipIndIsSet                = false;
  m_LastMsgIndication           = false;
  m_LastMsgIndicationIsSet      = false;
  m_PduSessionId                = 0;
  m_PduSessionIdIsSet           = false;
  m_LcsCorrelationId            = "";
  m_LcsCorrelationIdIsSet       = false;
  m_Ppi                         = 0;
  m_PpiIsSet                    = false;
  m_ArpIsSet                    = false;
  m__5qi                        = 0;
  m__5qiIsSet                   = false;
  m_N1n2FailureTxfNotifURI      = "";
  m_N1n2FailureTxfNotifURIIsSet = false;
  m_SmfReallocationInd          = false;
  m_SmfReallocationIndIsSet     = false;
  m_AreaOfValidityIsSet         = false;
  m_SupportedFeatures           = "";
  m_SupportedFeaturesIsSet      = false;
}

N1N2MessageTransferReqData::~N1N2MessageTransferReqData() {}

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

void to_json(nlohmann::json& j, const N1N2MessageTransferReqData& o) {
  j = nlohmann::json();
  if (o.n1MessageContainerIsSet())
    j["n1MessageContainer"] = o.m_N1MessageContainer;
  if (o.n2InfoContainerIsSet()) j["n2InfoContainer"] = o.m_N2InfoContainer;
  if (o.skipIndIsSet()) j["skipInd"] = o.m_SkipInd;
  if (o.lastMsgIndicationIsSet())
    j["lastMsgIndication"] = o.m_LastMsgIndication;
  if (o.pduSessionIdIsSet()) j["pduSessionId"] = o.m_PduSessionId;
  if (o.lcsCorrelationIdIsSet()) j["lcsCorrelationId"] = o.m_LcsCorrelationId;
  if (o.ppiIsSet()) j["ppi"] = o.m_Ppi;
  if (o.arpIsSet()) j["arp"] = o.m_Arp;
  if (o._5qiIsSet()) j["5qi"] = o.m__5qi;
  if (o.n1n2FailureTxfNotifURIIsSet())
    j["n1n2FailureTxfNotifURI"] = o.m_N1n2FailureTxfNotifURI;
  if (o.smfReallocationIndIsSet())
    j["smfReallocationInd"] = o.m_SmfReallocationInd;
  if (o.areaOfValidityIsSet()) j["areaOfValidity"] = o.m_AreaOfValidity;
  if (o.supportedFeaturesIsSet())
    j["supportedFeatures"] = o.m_SupportedFeatures;
}

void from_json(const nlohmann::json& j, N1N2MessageTransferReqData& o) {
  if (j.find("n1MessageContainer") != j.end()) {
    // j.at("n1MessageContainer").get_to(o.m_N1MessageContainer);
    // o.m_N1MessageContainerIsSet = true;
  }
  if (j.find("n2InfoContainer") != j.end()) {
    // j.at("n2InfoContainer").get_to(o.m_N2InfoContainer);
    // o.m_N2InfoContainerIsSet = true;
  }
  if (j.find("skipInd") != j.end()) {
    j.at("skipInd").get_to(o.m_SkipInd);
    o.m_SkipIndIsSet = true;
  }
  if (j.find("lastMsgIndication") != j.end()) {
    j.at("lastMsgIndication").get_to(o.m_LastMsgIndication);
    o.m_LastMsgIndicationIsSet = true;
  }
  if (j.find("pduSessionId") != j.end()) {
    j.at("pduSessionId").get_to(o.m_PduSessionId);
    o.m_PduSessionIdIsSet = true;
  }
  if (j.find("lcsCorrelationId") != j.end()) {
    j.at("lcsCorrelationId").get_to(o.m_LcsCorrelationId);
    o.m_LcsCorrelationIdIsSet = true;
  }
  if (j.find("ppi") != j.end()) {
    j.at("ppi").get_to(o.m_Ppi);
    o.m_PpiIsSet = true;
  }
  if (j.find("arp") != j.end()) {
    j.at("arp").get_to(o.m_Arp);
    o.m_ArpIsSet = true;
  }
  if (j.find("5qi") != j.end()) {
    j.at("5qi").get_to(o.m__5qi);
    o.m__5qiIsSet = true;
  }
  if (j.find("n1n2FailureTxfNotifURI") != j.end()) {
    j.at("n1n2FailureTxfNotifURI").get_to(o.m_N1n2FailureTxfNotifURI);
    o.m_N1n2FailureTxfNotifURIIsSet = true;
  }
  if (j.find("smfReallocationInd") != j.end()) {
    j.at("smfReallocationInd").get_to(o.m_SmfReallocationInd);
    o.m_SmfReallocationIndIsSet = true;
  }
  if (j.find("areaOfValidity") != j.end()) {
    j.at("areaOfValidity").get_to(o.m_AreaOfValidity);
    o.m_AreaOfValidityIsSet = true;
  }
  if (j.find("supportedFeatures") != j.end()) {
    j.at("supportedFeatures").get_to(o.m_SupportedFeatures);
    o.m_SupportedFeaturesIsSet = true;
  }
}

N1MessageContainer N1N2MessageTransferReqData::getN1MessageContainer() const {
  return m_N1MessageContainer;
}
void N1N2MessageTransferReqData::setN1MessageContainer(
    N1MessageContainer const& value) {
  m_N1MessageContainer      = value;
  m_N1MessageContainerIsSet = true;
}
bool N1N2MessageTransferReqData::n1MessageContainerIsSet() const {
  return m_N1MessageContainerIsSet;
}
void N1N2MessageTransferReqData::unsetN1MessageContainer() {
  m_N1MessageContainerIsSet = false;
}
N2InfoContainer N1N2MessageTransferReqData::getN2InfoContainer() const {
  return m_N2InfoContainer;
}
void N1N2MessageTransferReqData::setN2InfoContainer(
    N2InfoContainer const& value) {
  m_N2InfoContainer      = value;
  m_N2InfoContainerIsSet = true;
}
bool N1N2MessageTransferReqData::n2InfoContainerIsSet() const {
  return m_N2InfoContainerIsSet;
}
void N1N2MessageTransferReqData::unsetN2InfoContainer() {
  m_N2InfoContainerIsSet = false;
}
bool N1N2MessageTransferReqData::isSkipInd() const {
  return m_SkipInd;
}
void N1N2MessageTransferReqData::setSkipInd(bool const value) {
  m_SkipInd      = value;
  m_SkipIndIsSet = true;
}
bool N1N2MessageTransferReqData::skipIndIsSet() const {
  return m_SkipIndIsSet;
}
void N1N2MessageTransferReqData::unsetSkipInd() {
  m_SkipIndIsSet = false;
}
bool N1N2MessageTransferReqData::isLastMsgIndication() const {
  return m_LastMsgIndication;
}
void N1N2MessageTransferReqData::setLastMsgIndication(bool const value) {
  m_LastMsgIndication      = value;
  m_LastMsgIndicationIsSet = true;
}
bool N1N2MessageTransferReqData::lastMsgIndicationIsSet() const {
  return m_LastMsgIndicationIsSet;
}
void N1N2MessageTransferReqData::unsetLastMsgIndication() {
  m_LastMsgIndicationIsSet = false;
}
int32_t N1N2MessageTransferReqData::getPduSessionId() const {
  return m_PduSessionId;
}
void N1N2MessageTransferReqData::setPduSessionId(int32_t const value) {
  m_PduSessionId      = value;
  m_PduSessionIdIsSet = true;
}
bool N1N2MessageTransferReqData::pduSessionIdIsSet() const {
  return m_PduSessionIdIsSet;
}
void N1N2MessageTransferReqData::unsetPduSessionId() {
  m_PduSessionIdIsSet = false;
}
std::string N1N2MessageTransferReqData::getLcsCorrelationId() const {
  return m_LcsCorrelationId;
}
void N1N2MessageTransferReqData::setLcsCorrelationId(std::string const& value) {
  m_LcsCorrelationId      = value;
  m_LcsCorrelationIdIsSet = true;
}
bool N1N2MessageTransferReqData::lcsCorrelationIdIsSet() const {
  return m_LcsCorrelationIdIsSet;
}
void N1N2MessageTransferReqData::unsetLcsCorrelationId() {
  m_LcsCorrelationIdIsSet = false;
}
int32_t N1N2MessageTransferReqData::getPpi() const {
  return m_Ppi;
}
void N1N2MessageTransferReqData::setPpi(int32_t const value) {
  m_Ppi      = value;
  m_PpiIsSet = true;
}
bool N1N2MessageTransferReqData::ppiIsSet() const {
  return m_PpiIsSet;
}
void N1N2MessageTransferReqData::unsetPpi() {
  m_PpiIsSet = false;
}
Arp N1N2MessageTransferReqData::getArp() const {
  return m_Arp;
}
void N1N2MessageTransferReqData::setArp(Arp const& value) {
  m_Arp      = value;
  m_ArpIsSet = true;
}
bool N1N2MessageTransferReqData::arpIsSet() const {
  return m_ArpIsSet;
}
void N1N2MessageTransferReqData::unsetArp() {
  m_ArpIsSet = false;
}
int32_t N1N2MessageTransferReqData::get5qi() const {
  return m__5qi;
}
void N1N2MessageTransferReqData::set5qi(int32_t const value) {
  m__5qi      = value;
  m__5qiIsSet = true;
}
bool N1N2MessageTransferReqData::_5qiIsSet() const {
  return m__5qiIsSet;
}
void N1N2MessageTransferReqData::unset_5qi() {
  m__5qiIsSet = false;
}
std::string N1N2MessageTransferReqData::getN1n2FailureTxfNotifURI() const {
  return m_N1n2FailureTxfNotifURI;
}
void N1N2MessageTransferReqData::setN1n2FailureTxfNotifURI(
    std::string const& value) {
  m_N1n2FailureTxfNotifURI      = value;
  m_N1n2FailureTxfNotifURIIsSet = true;
}
bool N1N2MessageTransferReqData::n1n2FailureTxfNotifURIIsSet() const {
  return m_N1n2FailureTxfNotifURIIsSet;
}
void N1N2MessageTransferReqData::unsetN1n2FailureTxfNotifURI() {
  m_N1n2FailureTxfNotifURIIsSet = false;
}
bool N1N2MessageTransferReqData::isSmfReallocationInd() const {
  return m_SmfReallocationInd;
}
void N1N2MessageTransferReqData::setSmfReallocationInd(bool const value) {
  m_SmfReallocationInd      = value;
  m_SmfReallocationIndIsSet = true;
}
bool N1N2MessageTransferReqData::smfReallocationIndIsSet() const {
  return m_SmfReallocationIndIsSet;
}
void N1N2MessageTransferReqData::unsetSmfReallocationInd() {
  m_SmfReallocationIndIsSet = false;
}
AreaOfValidity N1N2MessageTransferReqData::getAreaOfValidity() const {
  return m_AreaOfValidity;
}
void N1N2MessageTransferReqData::setAreaOfValidity(
    AreaOfValidity const& value) {
  m_AreaOfValidity      = value;
  m_AreaOfValidityIsSet = true;
}
bool N1N2MessageTransferReqData::areaOfValidityIsSet() const {
  return m_AreaOfValidityIsSet;
}
void N1N2MessageTransferReqData::unsetAreaOfValidity() {
  m_AreaOfValidityIsSet = false;
}
std::string N1N2MessageTransferReqData::getSupportedFeatures() const {
  return m_SupportedFeatures;
}
void N1N2MessageTransferReqData::setSupportedFeatures(
    std::string const& value) {
  m_SupportedFeatures      = value;
  m_SupportedFeaturesIsSet = true;
}
bool N1N2MessageTransferReqData::supportedFeaturesIsSet() const {
  return m_SupportedFeaturesIsSet;
}
void N1N2MessageTransferReqData::unsetSupportedFeatures() {
  m_SupportedFeaturesIsSet = false;
}

}  // namespace model
}  // namespace amf
}  // namespace oai
