using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Vrh.XmlProcessing;
namespace Vrh.OneMessage
{
///
/// 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.
///
///
/// A Parameters gyűjtemény a OneMessage paraméter XML fájlban paraméterként
/// megadott hivatkozások feloldására való.
///
public class OneMessageParameters
{
#region PROPERTIES
///
/// OneMessage paraméterező XML fájl helyét meghatározó kapcsolati sztring.
///
public string XmlConnectionString { get; set; }
///
/// A relatív ("~") útvonal feloldásának mappája.
/// Példányosítás után külön kell neki értéket adni.
///
public string AppPath { get; set; }
///
/// A paraméterező fájból melyik üzenetleíró alapján kell a kézbesítést megvalósítani.
///
public string MessageId { get; set; }
///
/// 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.
///
public string LCID { get; set; }
///
/// 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.
///
public string Delivery { get; set; }
///
/// 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.
///
public string SendTo { get; set; }
///
/// 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).
///
public string SendAs { get; set; }
///
/// 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ó.
///
public string ConnectionString{ get; set; }
///
/// 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.
///
public string SendCopyTo { get; set; }
///
/// 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.
///
public string Attachments { get; set; }
///
/// 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.
///
public string Subject { get; set; }
///
/// 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.
///
public string MessageBody { get; set; }
///
/// Egyéb paraméterek az XmlParser számára.
///
public Dictionary Parameters = new Dictionary();
#endregion PROPERTIES
#region Constructors
///
/// Alapértelmezett kontruktor.
///
public OneMessageParameters() { }
///
/// Példány létrehozása a két szótár alapján.
///
/// Alap paraméterek szótára.
/// Egyéb paramáterek szótára.
///
/// Ha
///
public OneMessageParameters(Dictionary basicparameters, Dictionary extraparameters)
{
if (basicparameters != null && basicparameters.Count() > 0)
{
foreach (KeyValuePair item in basicparameters)
{
this.Add(item.Key, item.Value);
}
}
if (extraparameters != null && extraparameters.Count() > 0)
{
foreach (KeyValuePair item in extraparameters)
{
this.Add(item.Key, item.Value);
}
}
}
#endregion Constructors
#region Add public method
///
/// Érték hozzáadása az osztályhoz. Ha nevű
/// tulajdonság létezik, akkor az megkapja a
/// értékét, ha nem létezik, akkor a 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.
///
/// A tulajdonságra vagy paraméterre jellemző elnevezés.
/// A tulajdonság vagy paraméter értéke.
///
/// Ha key üres vagy null, akkor nem történik semmi.
///
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
}
}