/**
 * Tribufu API
 * REST API to access Tribufu services.
 *
 * The version of the OpenAPI document: 1.1.0
 * Contact: contact@tribufu.com
 *
 * NOTE: This class is auto generated by OpenAPI-Generator 7.14.0-SNAPSHOT.
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/*
 * ProfileGroup.h
 *
 *
 */

#ifndef TRIBUFU_MODELS_ProfileGroup_H_
#define TRIBUFU_MODELS_ProfileGroup_H_

#include <stdexcept>

#include "tribufu++/ModelBase.h"

#include "tribufu++/model/GroupRank.h"
#include <cpprest/details/basic_types.h>

namespace tribufu
{
    namespace models
    {

        class ProfileGroup : public ModelBase
        {
        public:
            ProfileGroup();
            virtual ~ProfileGroup();

            /////////////////////////////////////////////
            /// ModelBase overrides

            void validate() override;

            web::json::value toJson() const override;
            bool fromJson(const web::json::value &json) override;

            void toMultipart(std::shared_ptr<MultipartFormData> multipart,
                             const utility::string_t &namePrefix) const override;
            bool fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
                               const utility::string_t &namePrefix) override;

            /////////////////////////////////////////////
            /// ProfileGroup members

            utility::string_t getId() const;
            bool idIsSet() const;
            void unsetId();
            void setId(const utility::string_t &value);

            utility::string_t getUuid() const;
            bool uuidIsSet() const;
            void unsetUuid();
            void setUuid(const utility::string_t &value);

            utility::string_t getName() const;
            bool nameIsSet() const;
            void unsetName();
            void setName(const utility::string_t &value);

            utility::string_t getTag() const;
            bool tagIsSet() const;
            void unsetTag();
            void setTag(const utility::string_t &value);

            int32_t getPrivacy() const;
            bool privacyIsSet() const;
            void unsetPrivacy();
            void setPrivacy(int32_t value);

            bool isVerified() const;
            bool verifiedIsSet() const;
            void unsetVerified();
            void setVerified(bool value);

            utility::string_t getPhotoUrl() const;
            bool photoUrlIsSet() const;
            void unsetPhoto_url();
            void setPhotoUrl(const utility::string_t &value);

            int32_t getMemberCount() const;
            bool memberCountIsSet() const;
            void unsetMember_count();
            void setMemberCount(int32_t value);

            std::shared_ptr<GroupRank> getRank() const;
            bool rankIsSet() const;
            void unsetRank();
            void setRank(const std::shared_ptr<GroupRank> &value);

            utility::datetime getSince() const;
            bool sinceIsSet() const;
            void unsetSince();
            void setSince(const utility::datetime &value);

        protected:
            utility::string_t m_Id;
            bool m_IdIsSet;

            utility::string_t m_Uuid;
            bool m_UuidIsSet;

            utility::string_t m_Name;
            bool m_NameIsSet;

            utility::string_t m_Tag;
            bool m_TagIsSet;

            int32_t m_Privacy;
            bool m_PrivacyIsSet;

            bool m_Verified;
            bool m_VerifiedIsSet;

            utility::string_t m_Photo_url;
            bool m_Photo_urlIsSet;

            int32_t m_Member_count;
            bool m_Member_countIsSet;

            std::shared_ptr<GroupRank> m_Rank;
            bool m_RankIsSet;

            utility::datetime m_Since;
            bool m_SinceIsSet;
        };

    }
}

#endif /* TRIBUFU_MODELS_ProfileGroup_H_ */