using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using EQNetwork.Utility;
using EQNetwork.Aspects;

namespace EQNetwork.Objects
{
    public class PurchaseContext : PropertyChangeTracker
    {
        public enum PaymentTypeNames
        {
            AlreadyOwn,
            Apple,
            Simulator,
        };

        // OPTIONS (all one way... sent to backend)

        /// <summary>
        /// ProductCode of item purchased
        /// </summary>
        [TrackPropertyChanged()]
        public string ProductCode { get; set; }

        /// <summary>
        /// Unique identifier of device (possibly mac address)
        /// </summary>
        [TrackPropertyChanged()]
        public string UUID { get; set; }

        /// <summary>
        /// Name of Payment Provider (see PaymentTypeNames for predefined)
        /// </summary>
        [TrackPropertyChanged()]
        public string PaymentType { private get; set; }

        /// <summary>
        /// Receipt data to be validated by payment provider
        /// </summary>
        [TrackPropertyChanged()]
        public string ReceiptData { private get; set; }

        /// <summary>
        /// Price paid for purchase
        /// </summary>
        [TrackPropertyChanged()]
        public float Price { private get; set; }

        /// <summary>
        /// 
        /// </summary>
        [TrackPropertyChanged()]
        public string PriceLocale { private get; set; }

        /// <summary>
        /// 
        /// </summary>
        [TrackPropertyChanged()]
        public string CurrencyCode { private get; set; }

        /// <summary>
        /// 
        /// </summary>
        [TrackPropertyChanged()]
        public string CountryCode { private get; set; }

        /// <summary>
        /// 
        /// </summary>
        [TrackPropertyChanged()]
        public bool? IsSandbox { private get; set; }
    }
}
