Program Listing for File Payment.h

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

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

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

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

namespace axr {
namespace sdk {
namespace models {

class Payment : public EntityBase
{
public:
    class Status : public StringEnum<Status>
    {
    public:

        static const Status* CREATED;
        static const Status* CANCELED;
        static const Status* ACTION_NEEDED;
        static const Status* PENDING;
        static const Status* VOIDED;
        static const Status* CONFIRMED;
        static const Status* DENIED;
        static const Status* REFUNDED;
        static const Status* ERROR;

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

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

    // Object overrides

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

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

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

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

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

    // EntityBase overrides

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

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

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

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

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

    void Validate() override;

    // Payment members

    float GetAmount() const;

    Payment& SetAmount(float value);

    const Currency* GetCurrency() const;

    Payment& SetCurrency(const Currency* value);

    utility::string_t GetConfirmation() const;
#ifdef AXR_COMPILE_SERVER
    Payment& SetConfirmation(const utility::string_t& value);
#endif // AXR_COMPILE_SERVER
    std::shared_ptr<Object> GetData() const;

    Payment& SetData(std::shared_ptr<Object> value);

    bool IsOffline() const;

    Payment& SetOffline(bool value);

    utility::string_t GetOrderUid() const;

    Payment& SetOrderUid(const utility::string_t& value);

    const ProviderType* GetProvider() const;

    Payment& SetProvider(const ProviderType* value);

    const Status* GetStatus() const;
#ifdef AXR_COMPILE_SERVER
    Payment& SetStatus(const Status* value);
#endif // AXR_COMPILE_SERVER
    utility::string_t GetWalletUid() const;

    Payment& SetWalletUid(const utility::string_t& value);
};

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