using System; using System.Collections.Generic; using System.Linq; using System.Text; using Ease.CoreV35.Caching; using Ease.CoreV35.Model; namespace Payroll.BO { #region Notification [Serializable] public class Notification : BasicBaseObject { #region Cache Store private static Cache _cache = new Cache(typeof(Notification)); #endregion #region Constructor public Notification() { _sSubject = string.Empty; _sFooter = string.Empty; _sAttachment = string.Empty; _nTagOutputID = null; _nObjectID = null; _nOptionalObjectID = null; _sBody = string.Empty; _oNotificationParticipants = null; _oNotificationRules = null; _bIsMailNf = false; _bIsSMSNf = false; _bIsWebNf = false; _eStatus = EnumNotificationStatus.Closed; _eType = EnumNotificationType.Notification; _nObjectID = ID.FromInteger(0); _nOptionalObjectID = ID.FromInteger(0); } #endregion #region Properties #region Subject : string private string _sSubject; public string Subject { get { return _sSubject; } set { _sSubject = value; } } #endregion #region Body : string private string _sBody; public string Body { get { return _sBody; } set { _sBody = value; } } #endregion #region TagOutputID : ID private ID _nTagOutputID; public ID TagOutputID { get { return _nTagOutputID; } set { _nTagOutputID = value; } } #endregion #region ObjectID : ID private ID _nObjectID; public ID ObjectID { get { return _nObjectID; } set { _nObjectID = value; } } #endregion #region OptionalObjectID : ID private ID _nOptionalObjectID; public ID OptionalObjectID { get { return _nOptionalObjectID; } set { _nOptionalObjectID = value; } } #endregion #region Attachment : string private string _sAttachment; public string Attachment { get { return _sAttachment; } set { _sAttachment = value; } } #endregion #region Footer : string private string _sFooter; public string Footer { get { return _sFooter; } set { _sFooter = value; } } #endregion #region Type :EnumNotificationType private EnumNotificationType _eType; public EnumNotificationType Type { get { return _eType; } set { _eType = value; } } #endregion #region IsWebNf : bool private bool _bIsWebNf; public bool IsWebNf { get { return _bIsWebNf; } set {_bIsWebNf=value; } } #endregion #region IsMailNf : bool private bool _bIsMailNf; public bool IsMailNf { get { return _bIsMailNf; } set { _bIsMailNf = value; } } #endregion #region IsSMSNf : bool private bool _bIsSMSNf; public bool IsSMSNf { get { return _bIsSMSNf; } set { _bIsSMSNf = value; } } #endregion #region Status : EnumNotificationStatus private EnumNotificationStatus _eStatus; public EnumNotificationStatus Status { get { return _eStatus; } set { _eStatus = value; } } #endregion #region NotificationParticipants : ObjectsTemplate private ObjectsTemplate _oNotificationParticipants; public ObjectsTemplate NotificationParticipants { get { if (this.ID != null && _oNotificationParticipants==null) { _oNotificationParticipants = Notification.Service.GetNotificationParticipants(this.ID); } return _oNotificationParticipants; } set { _oNotificationParticipants = value; } } #endregion #region NotificationRules : ObjectsTemplate private ObjectsTemplate _oNotificationRules; public ObjectsTemplate NotificationRules { get { if (this.ID != null && _oNotificationRules == null) { _oNotificationRules = Notification.Service.GetNotificationRules(this.ID); } return _oNotificationRules; } set { _oNotificationRules = value; } } #endregion #region Service Factory internal static INotificationService Service { get { return Services.Factory.CreateService(typeof(INotificationService)); } } #endregion #endregion #region Functions public static int GetNewID() { return Notification.Service.GetNewID(); } public static Notification Get(ID notificationId) { Notification oNotification = null; #region Cache Header oNotification = (Notification)_cache["Get", notificationId]; if (oNotification != null) return oNotification; #endregion oNotification = Notification.Service.Get(notificationId); #region Cache Footer _cache.Add(oNotification, "Get", notificationId); #endregion return oNotification; } public ID Save() { if (User.CurrentUser!=null) this.SetAuditTrailProperties(); return Notification.Service.Save(this); } public static void SaveReply(NotificationParticipant oParticipant) { Notification.Service.SaveReply(oParticipant); } public void Delete() { Notification.Service.Delete(this.ID); } public static int GetNewBatchNumber() { int batchNo = 0; batchNo = Notification.Service.GetNewBatchNumber(); return batchNo; } public DateTime GetMinSendDateByID() { DateTime minDate = DateTime.MinValue; minDate = Notification.Service.GetMinSendDateByID(this.ID); return minDate; } public static void ChangeNotificationRuleStatus(NotificationRule notfRule, EnumSendStatus enumSendStatus, EnumNotificationMedium medium) { switch (medium) { case EnumNotificationMedium.Email: notfRule.EmailSendStatus = enumSendStatus; break; case EnumNotificationMedium.SMS: notfRule.SMSSendStatus = enumSendStatus; break; case EnumNotificationMedium.WEB: notfRule.WebSendStatus = enumSendStatus; break; } Notification.Service.UpdateNotificationRule(notfRule); } public static void ChangeNotificationRuleRemarks(NotificationRule notfRule,string Message, EnumNotificationMedium medium) { switch (medium) { case EnumNotificationMedium.Email: notfRule.Remarks = "Email Cannot Be sent Due To:" + Message; break; case EnumNotificationMedium.SMS: notfRule.Remarks = "SMS Cannot Be sent Due To:" + Message ; break; case EnumNotificationMedium.WEB: notfRule.Remarks = "Web Notification Cannot Be sent Due To:" + Message; break; } Notification.Service.UpdateNotificationRule(notfRule); } #endregion #region Collection Functions public static ObjectsTemplate Get() { #region Cache Header ObjectsTemplate notifications = _cache["Get"] as ObjectsTemplate; if (notifications != null) return notifications; #endregion notifications = Notification.Service.Get(); #region Cache Footer _cache.Add(notifications, "Get"); #endregion return notifications; } public static ObjectsTemplate Get(EnumNotificationStatus status) { #region Cache Header ObjectsTemplate notifications = _cache["Get"] as ObjectsTemplate; if (notifications != null) return notifications; #endregion notifications = Notification.Service.Get(status); #region Cache Footer _cache.Add(notifications, "Get"); #endregion return notifications; } public static ObjectsTemplate GetByDateRange(DateTime startDate, DateTime endDate) { ObjectsTemplate oNotifications = null; #region Cache Header oNotifications = (ObjectsTemplate)_cache["Get", startDate, endDate]; if (oNotifications != null) return oNotifications; #endregion oNotifications = Notification.Service.GetByDateRange(startDate, endDate); #region Cache Footer _cache.Add(oNotifications, "Get", startDate, endDate); #endregion return oNotifications; } public static ObjectsTemplate GetNotificationParticipants(ID notificationID) { ObjectsTemplate oNotificationParticipants = null; #region Cache Header oNotificationParticipants = (ObjectsTemplate)_cache["Get", notificationID]; if (oNotificationParticipants != null) return oNotificationParticipants; #endregion oNotificationParticipants = Notification.Service.GetNotificationParticipants(notificationID); #region Cache Footer _cache.Add(oNotificationParticipants, "Get", notificationID); #endregion return oNotificationParticipants; } #endregion //public static List GetMeetingMinutesForWeb() //{ // List notifcationList = new List(); // #region Cache Header // ObjectsTemplate notifications = _cache["Get"] as ObjectsTemplate; // if (notifications != null) // return notifications; // #endregion // notifications = Notification.Service.Get(); // notifcationList = notifications // .Where(obj => obj.Type == EnumNotificationType.Meeting_Minutes // && obj.Status == EnumNotificationStatus.InProcess // ) // .ToList(); // #region Cache Footer // _cache.Add(notifications, "Get"); // #endregion // return notifcationList; //} public static List GetMeetingMinutesForWeb(int webEmployeeID) { List notifcationList = new List(); #region Cache Header ObjectsTemplate notifications = _cache["Get"] as ObjectsTemplate; if (notifications != null) return notifications; #endregion notifications = Notification.Service.Get(); notifcationList = notifications .Where(obj => obj.Type == EnumNotificationType.Meeting_Minutes && obj.Status == EnumNotificationStatus.InProcess && obj.NotificationRules.Any(o => o.PerticipantID.Integer == webEmployeeID)) .ToList(); #region Cache Footer _cache.Add(notifications, "Get"); #endregion return notifcationList; } public static List GetNotificationsForWeb(int webEmployeeID) { List notifcationList = new List(); #region Cache Header ObjectsTemplate notifications = _cache["Get"] as ObjectsTemplate; if (notifications != null) return notifications; #endregion notifications = Notification.Service.Get(); notifcationList = notifications .Where(obj => obj.Type == EnumNotificationType.Notification && obj.Status == EnumNotificationStatus.InProcess && obj.NotificationRules.Any(o => o.PerticipantID.Integer == webEmployeeID && o.WebSendStatus==EnumSendStatus.NotSent)) .ToList(); #region Cache Footer _cache.Add(notifications, "Get"); #endregion return notifcationList; } } #endregion #region INotification Service public interface INotificationService { int GetNewID(); Notification Get(ID id); ObjectsTemplate Get(); ObjectsTemplate Get(EnumNotificationStatus status); ID Save(Notification oNotification); void SaveReply(NotificationParticipant oParticipant); void UpdateNotificationRule(NotificationRule notfRule); void Delete(ID id); ObjectsTemplate GetNotificationParticipants(ID id); ObjectsTemplate GetNotificationRules(ID id); int GetNewBatchNumber(); DateTime GetMinSendDateByID(ID iD); ObjectsTemplate GetByDateRange(DateTime startDate, DateTime endDate); } #endregion }