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

#ifndef VsmfUpdatedData_H_
#define VsmfUpdatedData_H_

#include "SecondaryRatUsageInfo.h"
#include "EbiArpMapping.h"
#include "RefToBinaryData.h"
#include <string>
#include "UserLocation.h"
#include "QosFlowItem.h"
#include "SecondaryRatUsageReport.h"
#include <vector>
#include <nlohmann/json.hpp>

namespace oai {
namespace smf_server {
namespace model {

/// <summary>
///
/// </summary>
class VsmfUpdatedData {
 public:
  VsmfUpdatedData();
  virtual ~VsmfUpdatedData();

  void validate();

  /////////////////////////////////////////////
  /// VsmfUpdatedData members

  /// <summary>
  ///
  /// </summary>
  std::vector<QosFlowItem>& getQosFlowsAddModList();
  bool qosFlowsAddModListIsSet() const;
  void unsetQosFlowsAddModList();
  /// <summary>
  ///
  /// </summary>
  std::vector<QosFlowItem>& getQosFlowsRelList();
  bool qosFlowsRelListIsSet() const;
  void unsetQosFlowsRelList();
  /// <summary>
  ///
  /// </summary>
  std::vector<QosFlowItem>& getQosFlowsFailedtoAddModList();
  bool qosFlowsFailedtoAddModListIsSet() const;
  void unsetQosFlowsFailedtoAddModList();
  /// <summary>
  ///
  /// </summary>
  std::vector<QosFlowItem>& getQosFlowsFailedtoRelList();
  bool qosFlowsFailedtoRelListIsSet() const;
  void unsetQosFlowsFailedtoRelList();
  /// <summary>
  ///
  /// </summary>
  RefToBinaryData getN1SmInfoFromUe() const;
  void setN1SmInfoFromUe(RefToBinaryData const& value);
  bool n1SmInfoFromUeIsSet() const;
  void unsetN1SmInfoFromUe();
  /// <summary>
  ///
  /// </summary>
  RefToBinaryData getUnknownN1SmInfo() const;
  void setUnknownN1SmInfo(RefToBinaryData const& value);
  bool unknownN1SmInfoIsSet() const;
  void unsetUnknownN1SmInfo();
  /// <summary>
  ///
  /// </summary>
  UserLocation getUeLocation() const;
  void setUeLocation(UserLocation const& value);
  bool ueLocationIsSet() const;
  void unsetUeLocation();
  /// <summary>
  ///
  /// </summary>
  std::string getUeTimeZone() const;
  void setUeTimeZone(std::string const& value);
  bool ueTimeZoneIsSet() const;
  void unsetUeTimeZone();
  /// <summary>
  ///
  /// </summary>
  UserLocation getAddUeLocation() const;
  void setAddUeLocation(UserLocation const& value);
  bool addUeLocationIsSet() const;
  void unsetAddUeLocation();
  /// <summary>
  ///
  /// </summary>
  std::vector<EbiArpMapping>& getAssignedEbiList();
  bool assignedEbiListIsSet() const;
  void unsetAssignedEbiList();
  /// <summary>
  ///
  /// </summary>
  std::vector<int32_t>& getFailedToAssignEbiList();
  bool failedToAssignEbiListIsSet() const;
  void unsetFailedToAssignEbiList();
  /// <summary>
  ///
  /// </summary>
  std::vector<int32_t>& getReleasedEbiList();
  bool releasedEbiListIsSet() const;
  void unsetReleasedEbiList();
  /// <summary>
  ///
  /// </summary>
  std::vector<SecondaryRatUsageReport>& getSecondaryRatUsageReport();
  bool secondaryRatUsageReportIsSet() const;
  void unsetSecondaryRatUsageReport();
  /// <summary>
  ///
  /// </summary>
  std::vector<SecondaryRatUsageInfo>& getSecondaryRatUsageInfo();
  bool secondaryRatUsageInfoIsSet() const;
  void unsetSecondaryRatUsageInfo();

  friend void to_json(nlohmann::json& j, const VsmfUpdatedData& o);
  friend void from_json(const nlohmann::json& j, VsmfUpdatedData& o);

 protected:
  std::vector<QosFlowItem> m_QosFlowsAddModList;
  bool m_QosFlowsAddModListIsSet;
  std::vector<QosFlowItem> m_QosFlowsRelList;
  bool m_QosFlowsRelListIsSet;
  std::vector<QosFlowItem> m_QosFlowsFailedtoAddModList;
  bool m_QosFlowsFailedtoAddModListIsSet;
  std::vector<QosFlowItem> m_QosFlowsFailedtoRelList;
  bool m_QosFlowsFailedtoRelListIsSet;
  RefToBinaryData m_N1SmInfoFromUe;
  bool m_N1SmInfoFromUeIsSet;
  RefToBinaryData m_UnknownN1SmInfo;
  bool m_UnknownN1SmInfoIsSet;
  UserLocation m_UeLocation;
  bool m_UeLocationIsSet;
  std::string m_UeTimeZone;
  bool m_UeTimeZoneIsSet;
  UserLocation m_AddUeLocation;
  bool m_AddUeLocationIsSet;
  std::vector<EbiArpMapping> m_AssignedEbiList;
  bool m_AssignedEbiListIsSet;
  std::vector<int32_t> m_FailedToAssignEbiList;
  bool m_FailedToAssignEbiListIsSet;
  std::vector<int32_t> m_ReleasedEbiList;
  bool m_ReleasedEbiListIsSet;
  std::vector<SecondaryRatUsageReport> m_SecondaryRatUsageReport;
  bool m_SecondaryRatUsageReportIsSet;
  std::vector<SecondaryRatUsageInfo> m_SecondaryRatUsageInfo;
  bool m_SecondaryRatUsageInfoIsSet;
};

}  // namespace model
}  // namespace smf_server
}  // namespace oai

#endif /* VsmfUpdatedData_H_ */
