﻿namespace Stove.StoveSDK
{
    using System.Collections.Generic;
    using MiniJSON;


    public class IAPOptional
    {
        public string UserLimitCode { get; }
        public string Reserved { get; set; }

        public IAPOptional(string userLimitCode, string reserved = null)
        {
            UserLimitCode = userLimitCode;
            Reserved = reserved;
        }

        public IAPOptional(Dictionary<string, object> dictionary)
        {
            if(dictionary.ContainsKey("userLimitCode"))
            {
                UserLimitCode = dictionary["userLimitCode"] as string;
            }
            if (dictionary.ContainsKey("reserved"))
            {
                Reserved = dictionary["reserved"] as string;
            }
        }

        public Dictionary<string, object> ToDictionary()
        {
            Dictionary<string, object> dictionary = new Dictionary<string, object>();
            if (UserLimitCode != null)
            {
                dictionary.Add("userLimitCode", UserLimitCode);
            }
            if (Reserved != null)
            {
                dictionary.Add("reserved", Reserved);
            }
            return dictionary;
        }

        public string ToJSONString()
        {
            Dictionary<string, object> dictionary = ToDictionary();

            return Json.Serialize(dictionary);
        }

        public override string ToString()
        {
            return "IAPOptional(UserLimitCode='" + UserLimitCode
                + "', Reserved=" + Reserved
                + ")";
        }
    }
}

