/**
 * 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.12.0.
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

/*
 * Package.h
 *
 * 
 */

#ifndef TRIBUFU_MODELS_Package_H_
#define TRIBUFU_MODELS_Package_H_


#include "tribufu++/ModelBase.h"

#include <cpprest/details/basic_types.h>

namespace tribufu {
namespace models {



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

    /////////////////////////////////////////////
    /// 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;


    /////////////////////////////////////////////
    /// Package members


    utility::string_t getId() const;
    bool idIsSet() const;
    void unsetId();
    void setId(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 getDescription() const;
    bool descriptionIsSet() const;
    void unsetDescription();
    void setDescription(const utility::string_t& value);

    utility::string_t getImageUrl() const;
    bool imageUrlIsSet() const;
    void unsetImage_url();
    void setImageUrl(const utility::string_t& value);

    utility::string_t getAuthorId() const;
    bool authorIdIsSet() const;
    void unsetAuthor_id();
    void setAuthorId(const utility::string_t& value);

    utility::string_t getVersion() const;
    bool versionIsSet() const;
    void unsetVersion();
    void setVersion(const utility::string_t& value);

    utility::string_t getFileUrl() const;
    bool fileUrlIsSet() const;
    void unsetFile_url();
    void setFileUrl(const utility::string_t& value);

    double getRawSize() const;
    bool rawSizeIsSet() const;
    void unsetRaw_size();
    void setRawSize(double value);

    int32_t getDownloadCount() const;
    bool downloadCountIsSet() const;
    void unsetDownload_count();
    void setDownloadCount(int32_t value);

    utility::datetime getLastDownload() const;
    bool lastDownloadIsSet() const;
    void unsetLast_download();
    void setLastDownload(const utility::datetime& value);

    utility::datetime getCreated() const;
    bool createdIsSet() const;
    void unsetCreated();
    void setCreated(const utility::datetime& value);

    utility::datetime getUpdated() const;
    bool updatedIsSet() const;
    void unsetUpdated();
    void setUpdated(const utility::datetime& value);


protected:
    utility::string_t m_Id;
    bool m_IdIsSet;

    utility::string_t m_Name;
    bool m_NameIsSet;

    utility::string_t m_Description;
    bool m_DescriptionIsSet;

    utility::string_t m_Image_url;
    bool m_Image_urlIsSet;

    utility::string_t m_Author_id;
    bool m_Author_idIsSet;

    utility::string_t m_Version;
    bool m_VersionIsSet;

    utility::string_t m_File_url;
    bool m_File_urlIsSet;

    double m_Raw_size;
    bool m_Raw_sizeIsSet;

    int32_t m_Download_count;
    bool m_Download_countIsSet;

    utility::datetime m_Last_download;
    bool m_Last_downloadIsSet;

    utility::datetime m_Created;
    bool m_CreatedIsSet;

    utility::datetime m_Updated;
    bool m_UpdatedIsSet;

};


}
}

#endif /* TRIBUFU_MODELS_Package_H_ */