/**
* Nsmf_PDUSession
* SMF PDU Session 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 "HsmfUpdateData.h"

namespace oai {
namespace smf_server {
namespace model {

HsmfUpdateData::HsmfUpdateData()
{
    m_Pei = "";
    m_PeiIsSet = false;
    m_VcnTunnelInfoIsSet = false;
    m_ServingNetworkIsSet = false;
    m_AnTypeIsSet = false;
    m_SecondAnTypeIsSet = false;
    m_RatTypeIsSet = false;
    m_UeLocationIsSet = false;
    m_UeTimeZone = "";
    m_UeTimeZoneIsSet = false;
    m_AddUeLocationIsSet = false;
    m_PauseCharging = false;
    m_PauseChargingIsSet = false;
    m_Pti = 0;
    m_PtiIsSet = false;
    m_N1SmInfoFromUeIsSet = false;
    m_UnknownN1SmInfoIsSet = false;
    m_QosFlowsRelNotifyListIsSet = false;
    m_QosFlowsNotifyListIsSet = false;
    m_NotifyListIsSet = false;
    m_EpsBearerIdIsSet = false;
    m_HoPreparationIndication = false;
    m_HoPreparationIndicationIsSet = false;
    m_RevokeEbiListIsSet = false;
    m_CauseIsSet = false;
    m_NgApCauseIsSet = false;
    m__5gMmCauseValue = 0;
    m__5gMmCauseValueIsSet = false;
    m_AlwaysOnRequested = false;
    m_AlwaysOnRequestedIsSet = false;
    m_EpsInterworkingIndIsSet = false;
    m_SecondaryRatUsageReportIsSet = false;
    m_SecondaryRatUsageInfoIsSet = false;
    m_AnTypeCanBeChanged = false;
    m_AnTypeCanBeChangedIsSet = false;
    m_MaReleaseIndIsSet = false;
    
}

HsmfUpdateData::~HsmfUpdateData()
{
}

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

void to_json(nlohmann::json& j, const HsmfUpdateData& o)
{
    j = nlohmann::json();
    j["requestIndication"] = o.m_RequestIndication;
    if(o.peiIsSet())
        j["pei"] = o.m_Pei;
    if(o.vcnTunnelInfoIsSet())
        j["vcnTunnelInfo"] = o.m_VcnTunnelInfo;
    if(o.servingNetworkIsSet())
        j["servingNetwork"] = o.m_ServingNetwork;
    if(o.anTypeIsSet())
        j["anType"] = o.m_AnType;
    if(o.secondAnTypeIsSet())
        j["secondAnType"] = o.m_SecondAnType;
    if(o.ratTypeIsSet())
        j["ratType"] = o.m_RatType;
    if(o.ueLocationIsSet())
        j["ueLocation"] = o.m_UeLocation;
    if(o.ueTimeZoneIsSet())
        j["ueTimeZone"] = o.m_UeTimeZone;
    if(o.addUeLocationIsSet())
        j["addUeLocation"] = o.m_AddUeLocation;
    if(o.pauseChargingIsSet())
        j["pauseCharging"] = o.m_PauseCharging;
    if(o.ptiIsSet())
        j["pti"] = o.m_Pti;
    if(o.n1SmInfoFromUeIsSet())
        j["n1SmInfoFromUe"] = o.m_N1SmInfoFromUe;
    if(o.unknownN1SmInfoIsSet())
        j["unknownN1SmInfo"] = o.m_UnknownN1SmInfo;
    if(o.qosFlowsRelNotifyListIsSet())
        j["qosFlowsRelNotifyList"] = o.m_QosFlowsRelNotifyList;
    if(o.qosFlowsNotifyListIsSet())
        j["qosFlowsNotifyList"] = o.m_QosFlowsNotifyList;
    if(o.notifyListIsSet())
        j["NotifyList"] = o.m_NotifyList;
    if(o.epsBearerIdIsSet())
        j["epsBearerId"] = o.m_EpsBearerId;
    if(o.hoPreparationIndicationIsSet())
        j["hoPreparationIndication"] = o.m_HoPreparationIndication;
    if(o.revokeEbiListIsSet())
        j["revokeEbiList"] = o.m_RevokeEbiList;
    if(o.causeIsSet())
        j["cause"] = o.m_Cause;
    if(o.ngApCauseIsSet())
        j["ngApCause"] = o.m_NgApCause;
    if(o._5gMmCauseValueIsSet())
        j["5gMmCauseValue"] = o.m__5gMmCauseValue;
    if(o.alwaysOnRequestedIsSet())
        j["alwaysOnRequested"] = o.m_AlwaysOnRequested;
    if(o.epsInterworkingIndIsSet())
        j["epsInterworkingInd"] = o.m_EpsInterworkingInd;
    if(o.secondaryRatUsageReportIsSet())
        j["secondaryRatUsageReport"] = o.m_SecondaryRatUsageReport;
    if(o.secondaryRatUsageInfoIsSet())
        j["secondaryRatUsageInfo"] = o.m_SecondaryRatUsageInfo;
    if(o.anTypeCanBeChangedIsSet())
        j["anTypeCanBeChanged"] = o.m_AnTypeCanBeChanged;
    if(o.maReleaseIndIsSet())
        j["maReleaseInd"] = o.m_MaReleaseInd;
}

void from_json(const nlohmann::json& j, HsmfUpdateData& o)
{
    j.at("requestIndication").get_to(o.m_RequestIndication);
    if(j.find("pei") != j.end())
    {
        j.at("pei").get_to(o.m_Pei);
        o.m_PeiIsSet = true;
    } 
    if(j.find("vcnTunnelInfo") != j.end())
    {
        j.at("vcnTunnelInfo").get_to(o.m_VcnTunnelInfo);
        o.m_VcnTunnelInfoIsSet = true;
    } 
    if(j.find("servingNetwork") != j.end())
    {
        j.at("servingNetwork").get_to(o.m_ServingNetwork);
        o.m_ServingNetworkIsSet = true;
    } 
    if(j.find("anType") != j.end())
    {
        j.at("anType").get_to(o.m_AnType);
        o.m_AnTypeIsSet = true;
    } 
    if(j.find("secondAnType") != j.end())
    {
        j.at("secondAnType").get_to(o.m_SecondAnType);
        o.m_SecondAnTypeIsSet = true;
    } 
    if(j.find("ratType") != j.end())
    {
        j.at("ratType").get_to(o.m_RatType);
        o.m_RatTypeIsSet = true;
    } 
    if(j.find("ueLocation") != j.end())
    {
        j.at("ueLocation").get_to(o.m_UeLocation);
        o.m_UeLocationIsSet = true;
    } 
    if(j.find("ueTimeZone") != j.end())
    {
        j.at("ueTimeZone").get_to(o.m_UeTimeZone);
        o.m_UeTimeZoneIsSet = true;
    } 
    if(j.find("addUeLocation") != j.end())
    {
        j.at("addUeLocation").get_to(o.m_AddUeLocation);
        o.m_AddUeLocationIsSet = true;
    } 
    if(j.find("pauseCharging") != j.end())
    {
        j.at("pauseCharging").get_to(o.m_PauseCharging);
        o.m_PauseChargingIsSet = true;
    } 
    if(j.find("pti") != j.end())
    {
        j.at("pti").get_to(o.m_Pti);
        o.m_PtiIsSet = true;
    } 
    if(j.find("n1SmInfoFromUe") != j.end())
    {
        j.at("n1SmInfoFromUe").get_to(o.m_N1SmInfoFromUe);
        o.m_N1SmInfoFromUeIsSet = true;
    } 
    if(j.find("unknownN1SmInfo") != j.end())
    {
        j.at("unknownN1SmInfo").get_to(o.m_UnknownN1SmInfo);
        o.m_UnknownN1SmInfoIsSet = true;
    } 
    if(j.find("qosFlowsRelNotifyList") != j.end())
    {
        j.at("qosFlowsRelNotifyList").get_to(o.m_QosFlowsRelNotifyList);
        o.m_QosFlowsRelNotifyListIsSet = true;
    } 
    if(j.find("qosFlowsNotifyList") != j.end())
    {
        j.at("qosFlowsNotifyList").get_to(o.m_QosFlowsNotifyList);
        o.m_QosFlowsNotifyListIsSet = true;
    } 
    if(j.find("NotifyList") != j.end())
    {
        j.at("NotifyList").get_to(o.m_NotifyList);
        o.m_NotifyListIsSet = true;
    } 
    if(j.find("epsBearerId") != j.end())
    {
        j.at("epsBearerId").get_to(o.m_EpsBearerId);
        o.m_EpsBearerIdIsSet = true;
    } 
    if(j.find("hoPreparationIndication") != j.end())
    {
        j.at("hoPreparationIndication").get_to(o.m_HoPreparationIndication);
        o.m_HoPreparationIndicationIsSet = true;
    } 
    if(j.find("revokeEbiList") != j.end())
    {
        j.at("revokeEbiList").get_to(o.m_RevokeEbiList);
        o.m_RevokeEbiListIsSet = true;
    } 
    if(j.find("cause") != j.end())
    {
        j.at("cause").get_to(o.m_Cause);
        o.m_CauseIsSet = true;
    } 
    if(j.find("ngApCause") != j.end())
    {
        j.at("ngApCause").get_to(o.m_NgApCause);
        o.m_NgApCauseIsSet = true;
    } 
    if(j.find("5gMmCauseValue") != j.end())
    {
        j.at("5gMmCauseValue").get_to(o.m__5gMmCauseValue);
        o.m__5gMmCauseValueIsSet = true;
    } 
    if(j.find("alwaysOnRequested") != j.end())
    {
        j.at("alwaysOnRequested").get_to(o.m_AlwaysOnRequested);
        o.m_AlwaysOnRequestedIsSet = true;
    } 
    if(j.find("epsInterworkingInd") != j.end())
    {
        j.at("epsInterworkingInd").get_to(o.m_EpsInterworkingInd);
        o.m_EpsInterworkingIndIsSet = true;
    } 
    if(j.find("secondaryRatUsageReport") != j.end())
    {
        j.at("secondaryRatUsageReport").get_to(o.m_SecondaryRatUsageReport);
        o.m_SecondaryRatUsageReportIsSet = true;
    } 
    if(j.find("secondaryRatUsageInfo") != j.end())
    {
        j.at("secondaryRatUsageInfo").get_to(o.m_SecondaryRatUsageInfo);
        o.m_SecondaryRatUsageInfoIsSet = true;
    } 
    if(j.find("anTypeCanBeChanged") != j.end())
    {
        j.at("anTypeCanBeChanged").get_to(o.m_AnTypeCanBeChanged);
        o.m_AnTypeCanBeChangedIsSet = true;
    } 
    if(j.find("maReleaseInd") != j.end())
    {
        j.at("maReleaseInd").get_to(o.m_MaReleaseInd);
        o.m_MaReleaseIndIsSet = true;
    } 
}

RequestIndication HsmfUpdateData::getRequestIndication() const
{
    return m_RequestIndication;
}
void HsmfUpdateData::setRequestIndication(RequestIndication const& value)
{
    m_RequestIndication = value;
    
}
std::string HsmfUpdateData::getPei() const
{
    return m_Pei;
}
void HsmfUpdateData::setPei(std::string const& value)
{
    m_Pei = value;
    m_PeiIsSet = true;
}
bool HsmfUpdateData::peiIsSet() const
{
    return m_PeiIsSet;
}
void HsmfUpdateData::unsetPei()
{
    m_PeiIsSet = false;
}
TunnelInfo HsmfUpdateData::getVcnTunnelInfo() const
{
    return m_VcnTunnelInfo;
}
void HsmfUpdateData::setVcnTunnelInfo(TunnelInfo const& value)
{
    m_VcnTunnelInfo = value;
    m_VcnTunnelInfoIsSet = true;
}
bool HsmfUpdateData::vcnTunnelInfoIsSet() const
{
    return m_VcnTunnelInfoIsSet;
}
void HsmfUpdateData::unsetVcnTunnelInfo()
{
    m_VcnTunnelInfoIsSet = false;
}
PlmnId HsmfUpdateData::getServingNetwork() const
{
    return m_ServingNetwork;
}
void HsmfUpdateData::setServingNetwork(PlmnId const& value)
{
    m_ServingNetwork = value;
    m_ServingNetworkIsSet = true;
}
bool HsmfUpdateData::servingNetworkIsSet() const
{
    return m_ServingNetworkIsSet;
}
void HsmfUpdateData::unsetServingNetwork()
{
    m_ServingNetworkIsSet = false;
}
AccessType HsmfUpdateData::getAnType() const
{
    return m_AnType;
}
void HsmfUpdateData::setAnType(AccessType const& value)
{
    m_AnType = value;
    m_AnTypeIsSet = true;
}
bool HsmfUpdateData::anTypeIsSet() const
{
    return m_AnTypeIsSet;
}
void HsmfUpdateData::unsetAnType()
{
    m_AnTypeIsSet = false;
}
AccessType HsmfUpdateData::getSecondAnType() const
{
    return m_SecondAnType;
}
void HsmfUpdateData::setSecondAnType(AccessType const& value)
{
    m_SecondAnType = value;
    m_SecondAnTypeIsSet = true;
}
bool HsmfUpdateData::secondAnTypeIsSet() const
{
    return m_SecondAnTypeIsSet;
}
void HsmfUpdateData::unsetSecondAnType()
{
    m_SecondAnTypeIsSet = false;
}
RatType HsmfUpdateData::getRatType() const
{
    return m_RatType;
}
void HsmfUpdateData::setRatType(RatType const& value)
{
    m_RatType = value;
    m_RatTypeIsSet = true;
}
bool HsmfUpdateData::ratTypeIsSet() const
{
    return m_RatTypeIsSet;
}
void HsmfUpdateData::unsetRatType()
{
    m_RatTypeIsSet = false;
}
UserLocation HsmfUpdateData::getUeLocation() const
{
    return m_UeLocation;
}
void HsmfUpdateData::setUeLocation(UserLocation const& value)
{
    m_UeLocation = value;
    m_UeLocationIsSet = true;
}
bool HsmfUpdateData::ueLocationIsSet() const
{
    return m_UeLocationIsSet;
}
void HsmfUpdateData::unsetUeLocation()
{
    m_UeLocationIsSet = false;
}
std::string HsmfUpdateData::getUeTimeZone() const
{
    return m_UeTimeZone;
}
void HsmfUpdateData::setUeTimeZone(std::string const& value)
{
    m_UeTimeZone = value;
    m_UeTimeZoneIsSet = true;
}
bool HsmfUpdateData::ueTimeZoneIsSet() const
{
    return m_UeTimeZoneIsSet;
}
void HsmfUpdateData::unsetUeTimeZone()
{
    m_UeTimeZoneIsSet = false;
}
UserLocation HsmfUpdateData::getAddUeLocation() const
{
    return m_AddUeLocation;
}
void HsmfUpdateData::setAddUeLocation(UserLocation const& value)
{
    m_AddUeLocation = value;
    m_AddUeLocationIsSet = true;
}
bool HsmfUpdateData::addUeLocationIsSet() const
{
    return m_AddUeLocationIsSet;
}
void HsmfUpdateData::unsetAddUeLocation()
{
    m_AddUeLocationIsSet = false;
}
bool HsmfUpdateData::isPauseCharging() const
{
    return m_PauseCharging;
}
void HsmfUpdateData::setPauseCharging(bool const value)
{
    m_PauseCharging = value;
    m_PauseChargingIsSet = true;
}
bool HsmfUpdateData::pauseChargingIsSet() const
{
    return m_PauseChargingIsSet;
}
void HsmfUpdateData::unsetPauseCharging()
{
    m_PauseChargingIsSet = false;
}
int32_t HsmfUpdateData::getPti() const
{
    return m_Pti;
}
void HsmfUpdateData::setPti(int32_t const value)
{
    m_Pti = value;
    m_PtiIsSet = true;
}
bool HsmfUpdateData::ptiIsSet() const
{
    return m_PtiIsSet;
}
void HsmfUpdateData::unsetPti()
{
    m_PtiIsSet = false;
}
RefToBinaryData HsmfUpdateData::getN1SmInfoFromUe() const
{
    return m_N1SmInfoFromUe;
}
void HsmfUpdateData::setN1SmInfoFromUe(RefToBinaryData const& value)
{
    m_N1SmInfoFromUe = value;
    m_N1SmInfoFromUeIsSet = true;
}
bool HsmfUpdateData::n1SmInfoFromUeIsSet() const
{
    return m_N1SmInfoFromUeIsSet;
}
void HsmfUpdateData::unsetN1SmInfoFromUe()
{
    m_N1SmInfoFromUeIsSet = false;
}
RefToBinaryData HsmfUpdateData::getUnknownN1SmInfo() const
{
    return m_UnknownN1SmInfo;
}
void HsmfUpdateData::setUnknownN1SmInfo(RefToBinaryData const& value)
{
    m_UnknownN1SmInfo = value;
    m_UnknownN1SmInfoIsSet = true;
}
bool HsmfUpdateData::unknownN1SmInfoIsSet() const
{
    return m_UnknownN1SmInfoIsSet;
}
void HsmfUpdateData::unsetUnknownN1SmInfo()
{
    m_UnknownN1SmInfoIsSet = false;
}
std::vector<QosFlowItem>& HsmfUpdateData::getQosFlowsRelNotifyList()
{
    return m_QosFlowsRelNotifyList;
}
bool HsmfUpdateData::qosFlowsRelNotifyListIsSet() const
{
    return m_QosFlowsRelNotifyListIsSet;
}
void HsmfUpdateData::unsetQosFlowsRelNotifyList()
{
    m_QosFlowsRelNotifyListIsSet = false;
}
std::vector<QosFlowNotifyItem>& HsmfUpdateData::getQosFlowsNotifyList()
{
    return m_QosFlowsNotifyList;
}
bool HsmfUpdateData::qosFlowsNotifyListIsSet() const
{
    return m_QosFlowsNotifyListIsSet;
}
void HsmfUpdateData::unsetQosFlowsNotifyList()
{
    m_QosFlowsNotifyListIsSet = false;
}
std::vector<PduSessionNotifyItem>& HsmfUpdateData::getNotifyList()
{
    return m_NotifyList;
}
bool HsmfUpdateData::notifyListIsSet() const
{
    return m_NotifyListIsSet;
}
void HsmfUpdateData::unsetNotifyList()
{
    m_NotifyListIsSet = false;
}
std::vector<int32_t>& HsmfUpdateData::getEpsBearerId()
{
    return m_EpsBearerId;
}
bool HsmfUpdateData::epsBearerIdIsSet() const
{
    return m_EpsBearerIdIsSet;
}
void HsmfUpdateData::unsetEpsBearerId()
{
    m_EpsBearerIdIsSet = false;
}
bool HsmfUpdateData::isHoPreparationIndication() const
{
    return m_HoPreparationIndication;
}
void HsmfUpdateData::setHoPreparationIndication(bool const value)
{
    m_HoPreparationIndication = value;
    m_HoPreparationIndicationIsSet = true;
}
bool HsmfUpdateData::hoPreparationIndicationIsSet() const
{
    return m_HoPreparationIndicationIsSet;
}
void HsmfUpdateData::unsetHoPreparationIndication()
{
    m_HoPreparationIndicationIsSet = false;
}
std::vector<int32_t>& HsmfUpdateData::getRevokeEbiList()
{
    return m_RevokeEbiList;
}
bool HsmfUpdateData::revokeEbiListIsSet() const
{
    return m_RevokeEbiListIsSet;
}
void HsmfUpdateData::unsetRevokeEbiList()
{
    m_RevokeEbiListIsSet = false;
}
Cause HsmfUpdateData::getCause() const
{
    return m_Cause;
}
void HsmfUpdateData::setCause(Cause const& value)
{
    m_Cause = value;
    m_CauseIsSet = true;
}
bool HsmfUpdateData::causeIsSet() const
{
    return m_CauseIsSet;
}
void HsmfUpdateData::unsetCause()
{
    m_CauseIsSet = false;
}
NgApCause HsmfUpdateData::getNgApCause() const
{
    return m_NgApCause;
}
void HsmfUpdateData::setNgApCause(NgApCause const& value)
{
    m_NgApCause = value;
    m_NgApCauseIsSet = true;
}
bool HsmfUpdateData::ngApCauseIsSet() const
{
    return m_NgApCauseIsSet;
}
void HsmfUpdateData::unsetNgApCause()
{
    m_NgApCauseIsSet = false;
}
int32_t HsmfUpdateData::get5gMmCauseValue() const
{
    return m__5gMmCauseValue;
}
void HsmfUpdateData::set5gMmCauseValue(int32_t const value)
{
    m__5gMmCauseValue = value;
    m__5gMmCauseValueIsSet = true;
}
bool HsmfUpdateData::_5gMmCauseValueIsSet() const
{
    return m__5gMmCauseValueIsSet;
}
void HsmfUpdateData::unset_5gMmCauseValue()
{
    m__5gMmCauseValueIsSet = false;
}
bool HsmfUpdateData::isAlwaysOnRequested() const
{
    return m_AlwaysOnRequested;
}
void HsmfUpdateData::setAlwaysOnRequested(bool const value)
{
    m_AlwaysOnRequested = value;
    m_AlwaysOnRequestedIsSet = true;
}
bool HsmfUpdateData::alwaysOnRequestedIsSet() const
{
    return m_AlwaysOnRequestedIsSet;
}
void HsmfUpdateData::unsetAlwaysOnRequested()
{
    m_AlwaysOnRequestedIsSet = false;
}
EpsInterworkingIndication HsmfUpdateData::getEpsInterworkingInd() const
{
    return m_EpsInterworkingInd;
}
void HsmfUpdateData::setEpsInterworkingInd(EpsInterworkingIndication const& value)
{
    m_EpsInterworkingInd = value;
    m_EpsInterworkingIndIsSet = true;
}
bool HsmfUpdateData::epsInterworkingIndIsSet() const
{
    return m_EpsInterworkingIndIsSet;
}
void HsmfUpdateData::unsetEpsInterworkingInd()
{
    m_EpsInterworkingIndIsSet = false;
}
std::vector<SecondaryRatUsageReport>& HsmfUpdateData::getSecondaryRatUsageReport()
{
    return m_SecondaryRatUsageReport;
}
bool HsmfUpdateData::secondaryRatUsageReportIsSet() const
{
    return m_SecondaryRatUsageReportIsSet;
}
void HsmfUpdateData::unsetSecondaryRatUsageReport()
{
    m_SecondaryRatUsageReportIsSet = false;
}
std::vector<SecondaryRatUsageInfo>& HsmfUpdateData::getSecondaryRatUsageInfo()
{
    return m_SecondaryRatUsageInfo;
}
bool HsmfUpdateData::secondaryRatUsageInfoIsSet() const
{
    return m_SecondaryRatUsageInfoIsSet;
}
void HsmfUpdateData::unsetSecondaryRatUsageInfo()
{
    m_SecondaryRatUsageInfoIsSet = false;
}
bool HsmfUpdateData::isAnTypeCanBeChanged() const
{
    return m_AnTypeCanBeChanged;
}
void HsmfUpdateData::setAnTypeCanBeChanged(bool const value)
{
    m_AnTypeCanBeChanged = value;
    m_AnTypeCanBeChangedIsSet = true;
}
bool HsmfUpdateData::anTypeCanBeChangedIsSet() const
{
    return m_AnTypeCanBeChangedIsSet;
}
void HsmfUpdateData::unsetAnTypeCanBeChanged()
{
    m_AnTypeCanBeChangedIsSet = false;
}
MaReleaseIndication HsmfUpdateData::getMaReleaseInd() const
{
    return m_MaReleaseInd;
}
void HsmfUpdateData::setMaReleaseInd(MaReleaseIndication const& value)
{
    m_MaReleaseInd = value;
    m_MaReleaseIndIsSet = true;
}
bool HsmfUpdateData::maReleaseIndIsSet() const
{
    return m_MaReleaseIndIsSet;
}
void HsmfUpdateData::unsetMaReleaseInd()
{
    m_MaReleaseIndIsSet = false;
}

}
}
}

