Program Listing for File Product.h

Return to documentation for file (axr.sdk/models/Product.h)

// Copyright (C) AcceleratXR, Inc. All rights reserved.
#pragma once

#include "axr.sdk/EntityBase.h"
#include "axr.sdk/StringEnum.h"
#include "./Currency.h"

#include <cpprest/details/basic_types.h>
#include <vector>

namespace axr {
namespace sdk {
namespace models {

class Product : public EntityBase
{
public:
    class License : public StringEnum<License>
    {
    public:
        static const License* ANNUAL;
        static const License* MONTH;
        static const License* PERPETUAL;

    private:
        License(const utility::char_t* value)
            : StringEnum(value)
        {
        }
    };

    Product() : EntityBase() {}
    Product(const Product& value) : EntityBase(value) {}
    Product(Product&& value) : EntityBase(value) {}
    virtual ~Product() {}

    // Object overrides

    virtual Product& SetProperties(const std::map<utility::string_t, Variant>& value) override
    {
        Object::SetProperties(value);
        return *this;
    }

    virtual Product& SetProperties(std::map<utility::string_t, Variant>&& value) override
    {
        Object::SetProperties(value);
        return *this;
    }

    virtual Product& SetProperty(const utility::char_t* name, const Variant& value) override
    {
        Object::SetProperty(name, value);
        return*this;
    }

    virtual Product& SetProperty(const utility::string_t& name, const Variant& value) override
    {
        Object::SetProperty(name, value);
        return*this;
    }

    virtual Product& SetRemoteUrl(const utility::string_t& url) override
    {
        Object::SetRemoteUrl(url);
        return *this;
    }

    // EntityBase overrides

    virtual Product& SetUid(const utility::string_t& value) override
    {
        EntityBase::SetUid(value);
        return *this;
    }

    virtual Product& SetDateCreated(const datetime& value) override
    {
        EntityBase::SetDateCreated(value);
        return *this;
    }

    virtual Product& SetDateModified(const datetime& value) override
    {
        EntityBase::SetDateModified(value);
        return *this;
    }

    virtual Product& SetVersion(const uint64_t value) override
    {
        EntityBase::SetVersion(value);
        return *this;
    }

    static const utility::char_t* ClassName()
    {
        return _XPLATSTR("axr::sdk::models::Product");
    }

    void Validate() override;

    // Product members

    utility::string_t GetName() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetName(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetTitle() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetTitle(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetBackground() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetBackground(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    std::vector<utility::string_t> GetCategories() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetCategories(std::vector<utility::string_t> value);
#endif // AXR_COMPILE_SERVER
    std::shared_ptr<Object> GetCover() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetCover(std::shared_ptr<Object> value);
#endif // AXR_COMPILE_SERVER
    const Currency* GetCurrency() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetCurrency(const Currency* value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetDescription() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetDescription(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    std::shared_ptr<Object> GetFeatures() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetFeatures(std::shared_ptr<Object> value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetIcon() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetIcon(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetLogo() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetLogo(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    const License* GetLicense() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetLicense(const License* value);
#endif // AXR_COMPILE_SERVER
    float GetMSRP() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetMSRP(float value);
#endif // AXR_COMPILE_SERVER
    float GetPrice() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetPrice(float value);
#endif // AXR_COMPILE_SERVER
    std::vector<utility::string_t> GetRequires() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetRequires(std::vector<utility::string_t> value);
#endif // AXR_COMPILE_SERVER
    uint64_t GetReserved() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetReserved(uint64_t value);
#endif // AXR_COMPILE_SERVER
    std::vector<utility::string_t> GetRoles() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetRoles(std::vector<utility::string_t> value);
#endif // AXR_COMPILE_SERVER
    std::vector<utility::string_t> GetSlideshow() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetSlideshow(std::vector<utility::string_t> value);
#endif // AXR_COMPILE_SERVER
    uint64_t GetSold() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetSold(uint64_t value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetSummary() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetSummary(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    std::vector<utility::string_t> GetTags() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetTags(std::vector<utility::string_t> value);
#endif // AXR_COMPILE_SERVER
    int64_t GetUnits() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetUnits(int64_t value);
#endif // AXR_COMPILE_SERVER
    std::shared_ptr<Object> GetData() const;
#ifdef AXR_COMPILE_SERVER
    Product& SetData(std::shared_ptr<Object> value);
#endif // AXR_COMPILE_SERVER
};

} // namespace models
} // namespace axr
} // namespace sdk