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

namespace oai {
namespace amf {
namespace model {

SeafData::SeafData() {
  m_Nh                        = "";
  m_NhIsSet                   = false;
  m_Ncc                       = 0;
  m_NccIsSet                  = false;
  m_KeyAmfChangeInd           = false;
  m_KeyAmfChangeIndIsSet      = false;
  m_KeyAmfHDerivationInd      = false;
  m_KeyAmfHDerivationIndIsSet = false;
}

SeafData::~SeafData() {}

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

void to_json(nlohmann::json& j, const SeafData& o) {
  j           = nlohmann::json();
  j["ngKsi"]  = o.m_NgKsi;
  j["keyAmf"] = o.m_KeyAmf;
  if (o.nhIsSet()) j["nh"] = o.m_Nh;
  if (o.nccIsSet()) j["ncc"] = o.m_Ncc;
  if (o.keyAmfChangeIndIsSet()) j["keyAmfChangeInd"] = o.m_KeyAmfChangeInd;
  if (o.keyAmfHDerivationIndIsSet())
    j["keyAmfHDerivationInd"] = o.m_KeyAmfHDerivationInd;
}

void from_json(const nlohmann::json& j, SeafData& o) {
  j.at("ngKsi").get_to(o.m_NgKsi);
  j.at("keyAmf").get_to(o.m_KeyAmf);
  if (j.find("nh") != j.end()) {
    j.at("nh").get_to(o.m_Nh);
    o.m_NhIsSet = true;
  }
  if (j.find("ncc") != j.end()) {
    j.at("ncc").get_to(o.m_Ncc);
    o.m_NccIsSet = true;
  }
  if (j.find("keyAmfChangeInd") != j.end()) {
    j.at("keyAmfChangeInd").get_to(o.m_KeyAmfChangeInd);
    o.m_KeyAmfChangeIndIsSet = true;
  }
  if (j.find("keyAmfHDerivationInd") != j.end()) {
    j.at("keyAmfHDerivationInd").get_to(o.m_KeyAmfHDerivationInd);
    o.m_KeyAmfHDerivationIndIsSet = true;
  }
}

NgKsi SeafData::getNgKsi() const {
  return m_NgKsi;
}
void SeafData::setNgKsi(NgKsi const& value) {
  m_NgKsi = value;
}
KeyAmf SeafData::getKeyAmf() const {
  return m_KeyAmf;
}
void SeafData::setKeyAmf(KeyAmf const& value) {
  m_KeyAmf = value;
}
std::string SeafData::getNh() const {
  return m_Nh;
}
void SeafData::setNh(std::string const& value) {
  m_Nh      = value;
  m_NhIsSet = true;
}
bool SeafData::nhIsSet() const {
  return m_NhIsSet;
}
void SeafData::unsetNh() {
  m_NhIsSet = false;
}
int32_t SeafData::getNcc() const {
  return m_Ncc;
}
void SeafData::setNcc(int32_t const value) {
  m_Ncc      = value;
  m_NccIsSet = true;
}
bool SeafData::nccIsSet() const {
  return m_NccIsSet;
}
void SeafData::unsetNcc() {
  m_NccIsSet = false;
}
bool SeafData::isKeyAmfChangeInd() const {
  return m_KeyAmfChangeInd;
}
void SeafData::setKeyAmfChangeInd(bool const value) {
  m_KeyAmfChangeInd      = value;
  m_KeyAmfChangeIndIsSet = true;
}
bool SeafData::keyAmfChangeIndIsSet() const {
  return m_KeyAmfChangeIndIsSet;
}
void SeafData::unsetKeyAmfChangeInd() {
  m_KeyAmfChangeIndIsSet = false;
}
bool SeafData::isKeyAmfHDerivationInd() const {
  return m_KeyAmfHDerivationInd;
}
void SeafData::setKeyAmfHDerivationInd(bool const value) {
  m_KeyAmfHDerivationInd      = value;
  m_KeyAmfHDerivationIndIsSet = true;
}
bool SeafData::keyAmfHDerivationIndIsSet() const {
  return m_KeyAmfHDerivationIndIsSet;
}
void SeafData::unsetKeyAmfHDerivationInd() {
  m_KeyAmfHDerivationIndIsSet = false;
}

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