using System.Linq; using Neo.Afx.ComponentModel; namespace Neo.Afx.WinService.Messages { /// /// The Crm database. /// public class MessageDatabase : Database { public MessageDatabase(string efConnectionString) : base(new MessageContext(efConnectionString)) { } #region MessageEntityID int _messageEntityID; public int MessageEntityID { get { if(_messageEntityID == 0) { _messageEntityID = Context.Database.SqlQuery("SELECT [System].[GetEntityID]('message')").FirstOrDefault(); } return _messageEntityID; } } #endregion #region GetMailSetting public MailSetting GetMailSetting() { return GetByID(1); } #endregion #region GetSmsSetting public SmsSetting GetSmsSetting() { return GetByID(1); } #endregion #region GetPendingMessages /// /// Gets a list of pending . /// /// The type of the message. /// /// A list of pending . /// public IQueryable GetPendingMessages(MessageTypeEnum messageType) { return from q in Context.Messages where !q.IsCancelled && q.MessageTypeID == (byte)messageType && q.SentDate == null orderby q.CreatedDate descending select q; } #endregion #region GetAttachments /// /// Gets a list of . /// /// The message for which attachments should be returned. /// /// A list of . /// public IQueryable GetAttachments(Message message) { return from d in Context.DocumentContents where !d.Document.IsCancelled && d.Document.EntityID == MessageEntityID && d.Document.ItemID == message.MessageID select d; } #endregion #region CreateTemplatedEmails public void CreateTemplatedEmails(int templateID) { Context.Pr_MessageCreateTemplatedEmails(templateID); } #endregion } }