#region  --------------- Copyright Dresser Wayne Pignone -------------
/*
 * $Log: /Wrk/Support/ForecourtControl/Wrk/ForecourtControl/AuthorizeParameters.cs $
 *
 * 4     07-03-14 7:49 roger.m�nsson
 * Removed unnessecary empty public constuctor.
 *
 * 3     07-02-26 14:05 roger.m�nsson
 * Published for COM interop.
 *
 * 2     07-01-05 8:58 roger.m�nsson
 * Created an interface for COM
 */
#endregion

using System.Runtime.InteropServices;

namespace Wayne.ForecourtControl
{
    /// <summary>
    /// The AuthorizeParameters is a data structure that contains the
    /// parameters that is used when authorizing a fuelling.
    /// </summary>
    [ComVisible(true)]
    //[ComDefaultInterface(typeof(IAuthorizeParameters))]
    [ClassInterface(ClassInterfaceType.None)]
    public class AuthorizeParameters : Wayne.ForecourtControl.IAuthorizeParameters
    {
        #region Fields

        decimal presetValue;
        Wayne.ForecourtControl.PresetType presetType;
        Wayne.ForecourtControl.PriceGroup priceGroup;
        AllowedFuelGrades allowedFuelGrades = new AllowedFuelGrades();
        bool lockToReleaseClient;
        bool prepay;


        //FG, OCT-13-10, Add PayType to show outdoor payment type on FM
        string payType;

        #endregion

        #region Properties

        /// <summary>
        /// Maximum fuelling amount in domestic currency or volume.
        /// May be overridden by the configured maximum volume or
        /// amount in the pump controller. The lowest value will be used.
        /// </summary>
        public decimal PresetValue
        {
            get
            {
                return presetValue;
            }
            set
            {
                presetValue = value;
            }
        }

        /// <summary>
        /// Specifies if the PresetValue should be regarded as a volume or an amount.
        /// </summary>
        /// <see cref="PresetType"/>
        public Wayne.ForecourtControl.PresetType PresetType
        {
            get
            {
                return presetType;
            }
            set
            {
                presetType = value;
            }
        }

        /// <summary>
        /// Fuel grades allowed to use for the fuelling are set to true.
        /// </summary>
        public AllowedFuelGrades AllowedFuelGrade
        {
            get
            {
                return allowedFuelGrades;
            }
        }

        /// <summary>
        /// Specifies the price group that should be used for the price calculation.
        /// </summary>
        public int PriceGroup
        {
            get
            {
                return priceGroup;
            }
            set
            {
                priceGroup = value;
            }
        }

        /// <summary>
        /// The fuelling can only be reserved and set as paid by the releasing client if this
        /// property is set to true.
        /// </summary>
        public bool LockToReleaseClient
        {
            get
            {
                return lockToReleaseClient;
            }
            set
            {
                lockToReleaseClient = value;
            }
        }

        /// <summary>
        /// Prepay flag is true for bank note sale
        /// </summary>
        public bool Prepay
        {
            get
            {
                return prepay;
            }
            set
            {
                prepay = value;
            }
        }

        //FG, OCT-13-10, Add PayType to show outdoor payment type on FM
        /// <summary>
        /// Payment type: e.g. "ST" for speedpass tag; "FC" for fleet card; "PC" for payment card;
        /// </summary>
        public string PayType
        {
            get
            {
                return payType;
            }
            set
            {
                payType = value;
            }
        }

        #endregion


        #region IAuthorizeParameters Members

        IAllowedFuelGrades IAuthorizeParameters.AllowedFuelGrade
        {
            get { return allowedFuelGrades as IAllowedFuelGrades; }
        }

        #endregion

    }
}