public static UpdateTopicInfoRange ( IServiceProvider provider, IDataContext db, IEnumerable |
||
provider | IServiceProvider | |
db | IDataContext | |
tids | IEnumerable |
|
return | void |
private static void SetMarkers( IServiceProvider provider, IEnumerable <int> mids, IEnumerable <int> tids, int maxMsgId, bool clearOther) { if (mids == null) { throw new ArgumentNullException("mids"); } using (var db = provider.CreateDBContext()) using (var tx = db.BeginTransaction()) { if (clearOther) { ClearMarkers(db, maxMsgId); } foreach (var series in mids.SplitForInClause(provider)) { var locSeries = series; db .Messages(m => locSeries.Contains(m.ID)) .Set(_ => _.IsMarked, true) .Update(); } DatabaseManager.UpdateTopicInfoRange(provider, db, tids); tx.Commit(); } }
// ReSharper restore FunctionNeverReturns private static void MarkMsgsRead( IServiceProvider provider, IEnumerable <ForumEntryIds> msgIds, bool isRead) { var msgIdsArray = msgIds.ToArray(); if (msgIdsArray.Any(ids => ids.GetEntryType() != ForumEntryType.Message)) { throw new ArgumentException(@"Элемент последовательности не является сообщением.", "msgIds"); } using (var db = provider.CreateDBContext()) using (var tx = db.BeginTransaction()) { foreach (var series in msgIds .Select(ids => ids.MessageId) .SplitForInClause(provider)) { var locSeries = series; db .Messages(m => locSeries.Contains(m.ID)) .Set(_ => _.IsRead, isRead) .Update(); } DatabaseManager.UpdateTopicInfoRange( provider, db, msgIdsArray .Select(ids => ids.TopicId.GetValueOrDefault()) .Distinct()); tx.Commit(); } }