/**
 * OpenAPI Generated Petstore Client
 *
 * This is a sample of Petstore application.
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/*
 * pet.h
 *
 * A pet for sale in the pet store
 */

#ifndef PET_H
#define PET_H

#include "cmakegeneratedclientexports.h"
#include "qoaiobject.h"


#include "category.h"
#include "petstatus.h"
#include "tag.h"
#include <QList>
#include <QString>

namespace QtOpenAPI {
class Category;
class Tag;

class CMAKEGENERATEDCLIENT_EXPORT Pet : public QtOpenApiCommon::QOAIObject {
    Q_GADGET

    Q_PROPERTY(qint64 id READ getId WRITE setId)
    Q_PROPERTY(Category category READ getCategory WRITE setCategory)
    Q_PROPERTY(QString name READ getName WRITE setName)
    Q_PROPERTY(QList<QString> photoUrls READ getPhotoUrls WRITE setPhotoUrls)
    Q_PROPERTY(QList<Tag> tags READ getTags WRITE setTags)
    Q_PROPERTY(PetStatus status READ getStatus WRITE setStatus)
    Q_PROPERTY(qint32 age READ getAge WRITE setAge)
    Q_PROPERTY(qint32 patience READ getPatience WRITE setPatience)
public:
    Pet();
    Q_IMPLICIT Pet(const QString &json);
    ~Pet() override;

    QString asJson() const override;
    QJsonValue asJsonValue() const override;
    void fromJsonValue(const QJsonValue &json) override;
    void fromJson(const QString &jsonString) override;

    qint64 getId() const;
    void setId(const qint64 &id);
    bool isIdValueSet() const;
    bool isIdValueValid() const;

    Category getCategory() const;
    void setCategory(const Category &category);
    bool isCategoryValueSet() const;
    bool isCategoryValueValid() const;

    QString getName() const;
    void setName(const QString &name);
    bool isNameValueSet() const;
    bool isNameValueValid() const;

    QList<QString> getPhotoUrls() const;
    void setPhotoUrls(const QList<QString> &photoUrls);
    bool isPhotoUrlsValueSet() const;
    bool isPhotoUrlsValueValid() const;

    QList<Tag> getTags() const;
    void setTags(const QList<Tag> &tags);
    bool isTagsValueSet() const;
    bool isTagsValueValid() const;

    Q_DECL_DEPRECATED PetStatus getStatus() const;
    Q_DECL_DEPRECATED void setStatus(const PetStatus &status);
    Q_DECL_DEPRECATED bool isStatusValueSet() const;
    Q_DECL_DEPRECATED bool isStatusValueValid() const;

    qint32 getAge() const;
    void setAge(const qint32 &age);
    bool isAgeValueSet() const;
    bool isAgeValueValid() const;

    qint32 getPatience() const;
    void setPatience(const qint32 &patience);
    bool isPatienceValueSet() const;
    bool isPatienceValueValid() const;

    bool isSet() const override;
    bool isValid() const override;

private:
    void initializeModel();
    qint64 m_id;
    bool m_idIsSet;
    bool m_idIsValid;
    Category m_category;
    bool m_categoryIsSet;
    bool m_categoryIsValid;
    QString m_name;
    bool m_nameIsSet;
    bool m_nameIsValid;
    QList<QString> m_photoUrls;
    bool m_photoUrlsIsSet;
    bool m_photoUrlsIsValid;
    QList<Tag> m_tags;
    bool m_tagsIsSet;
    bool m_tagsIsValid;
    PetStatus m_status;
    bool m_statusIsSet;
    bool m_statusIsValid;
    qint32 m_age;
    bool m_ageIsSet;
    bool m_ageIsValid;
    qint32 m_patience;
    bool m_patienceIsSet;
    bool m_patienceIsValid;
};

} // namespace QtOpenAPI

Q_DECLARE_METATYPE(QtOpenAPI::Pet)

#endif // PET_H
