using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

using Vrh.XmlProcessing;

namespace Vrh.OneMessage
{
    /// <summary>
    /// A "attachment" elem leképezése.
    /// </summary>
    public class AttachmentElement : XmlLinqBase
    {
        #region Built'in classes

        #region AttributeNames static class
        /// <summary>
        /// XML fájlokban ilyen attribútum nevek találhatóak egy DeliveryDefinition elemben.
        /// </summary>
        public static class AttributeNames
        {
            /// <summary>
            /// 'folder' attribútum név.
            /// </summary>
            public const string FOLDER = "Folder";

            /// <summary>
            /// 'file' attribútum név.
            /// </summary>
            public const string FILE = "File";
        }
        #endregion AttributeNames static class

        #endregion Built'in classes

        #region Properties

        /// <summary>
        /// A csatolmány mappája.
        /// </summary>
        public string Folder { get; set; }

        /// <summary>
        /// A csatolmány fájl neve.
        /// </summary>
        public string File { get; set; }

        #endregion Properties

        #region Constructor
        /// <summary>
        /// Példányosítás egy XElement alapján.
        /// Ha <paramref name="xelement"/> paraméter null, akkor nem történik értékadás
        /// de a példány létrejön.
        /// </summary>
        /// <param name="xelement">Egy "attachment" element objektum.</param>
        /// <param name="defaultFolder">Az alapértelmezett mappa neve.</param>
        public AttachmentElement(XElement xelement, string defaultFolder = null) 
        {
            if (xelement != null)
            {
                this.Folder = GetValue(AttributeNames.FOLDER, xelement, defaultFolder??"");
                this.File = GetValue(AttributeNames.FILE, xelement, "");
            }
        }
        #endregion Constructor
    }
}
