using System;

namespace Wayne.ForecourtControl
{
    /// <summary>
    /// Event argument for a FuellingDataChanged event in the Pump object.
    /// </summary>
    public class FuellingDataChangeEventArgs : EventArgs
    {
        #region Fields
        private IFuelling fuelling;
        decimal amount;
        decimal quantity;
        #endregion

        #region Constructor
        /// <summary>
        /// Constructor
        /// </summary>

        public FuellingDataChangeEventArgs(IFuelling fuelling, decimal amount, decimal quantity)
        {
            this.fuelling = fuelling;
            this.amount = amount;
            this.quantity = quantity;
        }
        #endregion

        #region Properties
        /// <summary>
        /// Fuelling which change has changed
        /// </summary>
        public IFuelling Fuelling { get { return fuelling; } }

        /// <summary>
        /// New amount
        /// </summary>
        public decimal Amount { get { return amount; } }

        /// <summary>
        /// New Quantity
        /// </summary>
        public decimal Quantity { get { return quantity; } }
        #endregion

        #region Debug methods

        /// <summary>
        /// Presents the class as a string.
        /// </summary>
        /// <returns></returns>
        public virtual string ToString(string format, IFormatProvider provider)
        {
            return String.Format(System.Globalization.CultureInfo.InvariantCulture, "FuellingDataChange FuellingSq={0}, Amount={1}, Quantity={2}", fuelling.FuellingSequenceNumber, amount, quantity); ;
        }

        /// <summary>
        /// Presents the class as a string using the specified culture-specific format information.
        /// </summary>
        /// <returns></returns>
        public virtual string ToString(IFormatProvider provider)
        {
            return ToString("", provider);
        }

        /// <summary>
        /// Presents the class as a string using a format string.
        /// </summary>
        /// <returns></returns>
        public virtual string ToString(string format)
        {
            return ToString(format, System.Globalization.CultureInfo.InvariantCulture);
        }

        /// <summary>
        /// Presents the class as a string using a format string and the specified culture-specific format information.
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return ToString("", System.Globalization.CultureInfo.InvariantCulture);
        }

        #endregion
    }

}