OneMessageParameters.cs 7.68 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Vrh.XmlProcessing;

namespace Vrh.OneMessage
{
    /// <summary>
    /// OneMessage üzenet kézbesítő komponens számára 
    /// szükséges paramétereket tartalmazza.
    /// !FIGYELEM: A név szerinti tulajdonságokat, nem a Parameters tulajdonságban kell átadni.
    /// </summary>
    /// <remarks>
    /// A Parameters gyűjtemény a OneMessage paraméter XML fájlban paraméterként
    /// megadott hivatkozások feloldására való.
    /// </remarks>
    public class OneMessageParameters
    {
        #region PROPERTIES
        /// <summary>
        /// OneMessage paraméterező XML fájl helyét meghatározó kapcsolati sztring.
        /// </summary>
        public string XmlConnectionString { get; set; }

        /// <summary>
        /// A relatív ("~") útvonal feloldásának mappája.
        /// Példányosítás után külön kell neki értéket adni.
        /// </summary>
        public string AppPath { get; set; }

        /// <summary>
        /// A paraméterező fájból melyik üzenetleíró alapján kell a kézbesítést megvalósítani.
        /// </summary>
        public string MessageId { get; set; }

        /// <summary>
        /// A paraméterező fájlban, ezt a nyelvű üzenetleírót kell alkalmazni.
        /// Ha üres, akkor az XmlParser nyelvi beállítása határozza meg.
        /// </summary>
        public string LCID { get; set; }

        /// <summary>
        /// A paraméterező fájlban megadott továbbítás leírók közül melyiket használja
        /// a kézbesítés végrehajtásához.
        /// </summary>        
        public string Delivery { get; set; }

        /// <summary>
        /// A paraméterező fájlban megadott címzettek felülírása.
        /// Ha ez a paraméter értéket tartalmaz, akkor ezen címzettek részére történik a kézbesítés.
        /// </summary>
        public string SendTo { get; set; }

        /// <summary>
        /// Kinek a nevében kell feladni az üzenetet.
        /// A paraméterező fájlban megadott feladók felülírása.
        /// Ha ebben van érték, akkor ez(ek) lesz(nek) a feladó(k).
        /// </summary>
        public string SendAs { get; set; }

		/// <summary>
		/// Az  e-mail serverre mutató kapcsolat leríró.
		/// A paraméterező fájlban megadott kapcsolat leíró felülírása.
		/// Ha ebben van érték, akkor ez lesz a kapcsolat leíró.
		/// </summary>
		public string ConnectionString{ get; set; }

		/// <summary>
		/// Másolatot kapó címzettek vesszővel (",") elválasztott listája.
		/// A paraméterező fájlban megadott másolatot kapók felülírása.
		/// Ha ebben van érték, akkor ezek a címzettek kapnak másolatot.
		/// </summary>
		public string SendCopyTo { get; set; }

        /// <summary>
        /// A paraméterező fájlban megadott csatolmányok felülírása.
        /// A csatolmányokat vesszővel (",") kell elválasztani egymástól.
        /// Ha ez a gyűjtemény tartalmaz csatolmányokat, akkor ezen csatolmányok lesznek a kézbesítendő
        /// üzenetben.
        /// </summary>
        public string Attachments { get; set; }

        /// <summary>
        /// A paraméterező fájlban megadott üzenet tárgyának felülírása.
        /// Ha ez a paraméter értéket tartalmaz, akkor ez lesz az üzenet tárgya.
        /// </summary>
        public string Subject { get; set; }

        /// <summary>
        /// A paraméterező fájlban megadott üzenet tartalom felülírása.
        /// Ha ez a paraméter értéket tartalmaz, akkor ez lesz az üzenet tartalma.
        /// </summary>
        public string MessageBody { get; set; }

        /// <summary>
        /// Egyéb paraméterek az XmlParser számára.
        /// </summary>
        public Dictionary<string, string> Parameters = new Dictionary<string, string>();

        #endregion PROPERTIES

        #region Constructors
        /// <summary>
        /// Alapértelmezett kontruktor.
        /// </summary>
        public OneMessageParameters() { }

        /// <summary>
        /// Példány létrehozása a két szótár alapján.
        /// </summary>
        /// <param name="basicparameters">Alap paraméterek szótára.</param>
        /// <param name="extraparameters">Egyéb paramáterek szótára.</param>
        /// <exception cref="System.ApplicationException">
        /// Ha 
        /// </exception>
        public OneMessageParameters(Dictionary<string,string> basicparameters, Dictionary<string, string> extraparameters)
        {
            if (basicparameters != null && basicparameters.Count() > 0)
            {
                foreach (KeyValuePair<string, string> item in basicparameters)
                {
                    this.Add(item.Key, item.Value);
                }
            }
            if (extraparameters != null && extraparameters.Count() > 0)
            {
                foreach (KeyValuePair<string, string> item in extraparameters)
                {
                    this.Add(item.Key, item.Value);
                }
            }
        }
        #endregion Constructors

        #region Add public method
        /// <summary>
        /// Érték hozzáadása az osztályhoz. Ha <paramref name="key"/> nevű
        /// tulajdonság létezik, akkor az megkapja a <paramref name="value"/>
        /// értékét, ha nem létezik, akkor a <paramref name="key"/> névvel együtt
        /// bekerül a Parameters gyűjteménybe, mely egy string,string típusú Dictionary.
        /// Már létező paraméter vagy korábban értéket kapott tulajdonság értéke felülíródik.
        /// </summary>
        /// <param name="key">A tulajdonságra vagy paraméterre jellemző elnevezés.</param>
        /// <param name="value">A tulajdonság vagy paraméter értéke.</param>
        /// <remarks>
        /// Ha key üres vagy null, akkor nem történik semmi.
        /// </remarks>
        public void Add(string key, string value)
        {
            if (string.IsNullOrWhiteSpace(key)) return;

            switch (key)
            {
                case Constants.UParam.XML:
                    this.XmlConnectionString = value;
                    break;
                case Constants.UParam.LCID:
                    this.LCID = value;
                    break;
                case Constants.UParam.MSGID:
                    this.MessageId= value;
                    break;
                case Constants.UParam.DELIVERY:
                    this.Delivery = value;
                    break;
                case Constants.UParam.SENDAS:
                    this.SendAs= value;
                    break;
				case Constants.UParam.CONNSTR:
					this.ConnectionString= value;
					break;
				case Constants.UParam.SENDCOPYTO:
                    this.SendCopyTo = value;
                    break;
                case Constants.UParam.SENDTO:
                    this.SendTo= value;
                    break;
                case Constants.UParam.SUBJECT:
                    this.Subject= value;
                    break;
                case Constants.UParam.MSGBODY:
                    this.MessageBody = value;
                    break;
                case Constants.UParam.ATTACHMENTS:
                    this.Attachments= value;
                    break;
                default:
                    if (Parameters.ContainsKey(key))
                    {
                        this.Parameters[key] = value;
                    }
                    else
                    {
                        Parameters.Add(key, value);
                    }
                    break;
            }
        }
        #endregion Add public method
    }
}