/**
 * 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 "N2InformationNotification.h"

namespace oai {
namespace amf {
namespace model {

N2InformationNotification::N2InformationNotification() {
  m_N2NotifySubscriptionId    = "";
  m_N2InfoContainerIsSet      = false;
  m_ToReleaseSessionListIsSet = false;
  m_LcsCorrelationId          = "";
  m_LcsCorrelationIdIsSet     = false;
  m_NotifyReasonIsSet         = false;
  m_SmfChangeIndIsSet         = false;
}

N2InformationNotification::~N2InformationNotification() {}

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

void to_json(nlohmann::json& j, const N2InformationNotification& o) {
  j                           = nlohmann::json();
  j["n2NotifySubscriptionId"] = o.m_N2NotifySubscriptionId;
  if (o.n2InfoContainerIsSet()) j["n2InfoContainer"] = o.m_N2InfoContainer;
  if (o.toReleaseSessionListIsSet())
    j["toReleaseSessionList"] = o.m_ToReleaseSessionList;
  if (o.lcsCorrelationIdIsSet()) j["lcsCorrelationId"] = o.m_LcsCorrelationId;
  if (o.notifyReasonIsSet()) j["notifyReason"] = o.m_NotifyReason;
  if (o.smfChangeIndIsSet()) j["smfChangeInd"] = o.m_SmfChangeInd;
}

void from_json(const nlohmann::json& j, N2InformationNotification& o) {
  j.at("n2NotifySubscriptionId").get_to(o.m_N2NotifySubscriptionId);
  if (j.find("n2InfoContainer") != j.end()) {
    j.at("n2InfoContainer").get_to(o.m_N2InfoContainer);
    o.m_N2InfoContainerIsSet = true;
  }
  if (j.find("toReleaseSessionList") != j.end()) {
    j.at("toReleaseSessionList").get_to(o.m_ToReleaseSessionList);
    o.m_ToReleaseSessionListIsSet = true;
  }
  if (j.find("lcsCorrelationId") != j.end()) {
    j.at("lcsCorrelationId").get_to(o.m_LcsCorrelationId);
    o.m_LcsCorrelationIdIsSet = true;
  }
  if (j.find("notifyReason") != j.end()) {
    j.at("notifyReason").get_to(o.m_NotifyReason);
    o.m_NotifyReasonIsSet = true;
  }
  if (j.find("smfChangeInd") != j.end()) {
    j.at("smfChangeInd").get_to(o.m_SmfChangeInd);
    o.m_SmfChangeIndIsSet = true;
  }
}

std::string N2InformationNotification::getN2NotifySubscriptionId() const {
  return m_N2NotifySubscriptionId;
}
void N2InformationNotification::setN2NotifySubscriptionId(
    std::string const& value) {
  m_N2NotifySubscriptionId = value;
}
N2InfoContainer N2InformationNotification::getN2InfoContainer() const {
  return m_N2InfoContainer;
}
void N2InformationNotification::setN2InfoContainer(
    N2InfoContainer const& value) {
  m_N2InfoContainer      = value;
  m_N2InfoContainerIsSet = true;
}
bool N2InformationNotification::n2InfoContainerIsSet() const {
  return m_N2InfoContainerIsSet;
}
void N2InformationNotification::unsetN2InfoContainer() {
  m_N2InfoContainerIsSet = false;
}
std::vector<int32_t>& N2InformationNotification::getToReleaseSessionList() {
  return m_ToReleaseSessionList;
}
bool N2InformationNotification::toReleaseSessionListIsSet() const {
  return m_ToReleaseSessionListIsSet;
}
void N2InformationNotification::unsetToReleaseSessionList() {
  m_ToReleaseSessionListIsSet = false;
}
std::string N2InformationNotification::getLcsCorrelationId() const {
  return m_LcsCorrelationId;
}
void N2InformationNotification::setLcsCorrelationId(std::string const& value) {
  m_LcsCorrelationId      = value;
  m_LcsCorrelationIdIsSet = true;
}
bool N2InformationNotification::lcsCorrelationIdIsSet() const {
  return m_LcsCorrelationIdIsSet;
}
void N2InformationNotification::unsetLcsCorrelationId() {
  m_LcsCorrelationIdIsSet = false;
}
N2InfoNotifyReason N2InformationNotification::getNotifyReason() const {
  return m_NotifyReason;
}
void N2InformationNotification::setNotifyReason(
    N2InfoNotifyReason const& value) {
  m_NotifyReason      = value;
  m_NotifyReasonIsSet = true;
}
bool N2InformationNotification::notifyReasonIsSet() const {
  return m_NotifyReasonIsSet;
}
void N2InformationNotification::unsetNotifyReason() {
  m_NotifyReasonIsSet = false;
}
SmfChangeIndication N2InformationNotification::getSmfChangeInd() const {
  return m_SmfChangeInd;
}
void N2InformationNotification::setSmfChangeInd(
    SmfChangeIndication const& value) {
  m_SmfChangeInd      = value;
  m_SmfChangeIndIsSet = true;
}
bool N2InformationNotification::smfChangeIndIsSet() const {
  return m_SmfChangeIndIsSet;
}
void N2InformationNotification::unsetSmfChangeInd() {
  m_SmfChangeIndIsSet = false;
}

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