public virtual IEnumerable <int> GetWillUpdateBulkEmailRIds() { var select = new Select(UserConnection) .Column("RId") .From("BulkEmail") .Where("StatusId").In(Column.Parameters(new object[] { TSConfiguration.MarketingConsts.BulkEmailStatusFinishedId, TSConfiguration.MarketingConsts.BulkEmailStatusStoppedId, TSConfiguration.MarketingConsts.BulkEmailStatusActiveId })).And().Exists( new Select(UserConnection) .Column(Column.SqlText("NULL")) .From("MandrillRecipient") .Where("BulkEmailRId").IsEqual("RId") ) as Select; HintsHelper.SpecifyNoLockHints(select, true); var result = new List <int>(); using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection()) { using (IDataReader reader = select.ExecuteReader(dbExecutor)) { int rIdColumnIndex = reader.GetOrdinal("RId"); while (reader.Read()) { int bulkEmailRId = reader.GetInt32(rIdColumnIndex); result.Add(bulkEmailRId); } } } return(result); }
/// <summary> /// Returns query for count of recipients in queue of bulk email. /// </summary> /// <param name="bulkEmailId">Unique id of bulk email.</param> /// <param name="userConnection">User connection instance.</param> /// <returns>Query for count of recipients in queue of bulk email.</returns> private static Select GetRecipientsInQueueCountSelect(Guid bulkEmailId, UserConnection userConnection) { var countSelect = new Select(userConnection) .Column(Func.Count("Id")) .From("VwMandrillRecipient") .Where("BulkEmailId").IsEqual(Column.Parameter(bulkEmailId)) as Select; HintsHelper.SpecifyNoLockHints(countSelect, true); return(countSelect); }