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(List> firstlist, List> secondlist=null, string apppath="")
{
this.AppPath = apppath; if (string.IsNullOrEmpty(this.AppPath)) { this.AppPath = ""; }
var EMPTYLIST = new List>();
var allparameters = (firstlist ?? EMPTYLIST).Concat(secondlist ?? EMPTYLIST);
foreach (var item in allparameters)
{
if (string.IsNullOrWhiteSpace(item.Key)) continue;
var value = item.Value;
switch (item.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(item.Key)) { this.Parameters[item.Key] = value; } else { Parameters.Add(item.Key, value); } break;
}
}
}
#endregion Constructors
}
}