public async Task <IPostingJournalResult> CalculateAsync(DateTime statusDate) { if (statusDate.Date == StatusDate) { while (_isCalculating) { await Task.Delay(250); } return(this); } StatusDate = statusDate.Date; _isCalculating = true; try { PostingLineCollection = await PostingLineCollection.CalculateAsync(StatusDate); PostingWarningCollection = await _postingWarningCalculator.CalculateAsync(PostingLineCollection); return(this); } finally { _isCalculating = false; } }
public IPostingLineCollection Top(int numberOfPostingLines) { IPostingLineCollection postingLineCollection = new PostingLineCollection { Ordered().Take(numberOfPostingLines) }; return(postingLineCollection); }
public IPostingLineCollection Ordered() { IPostingLineCollection postingLineCollection = new PostingLineCollection { this.AsParallel().OrderByDescending(postingLine => postingLine.PostingDate.Date).ThenByDescending(postingLine => postingLine.SortOrder) }; return(postingLineCollection); }