public async Task <double> GetJournalistRatingAsync(UserJournalistRating userJournalistRating) { if (_context.UserJournalistRating.Any(x => x.JournalistId == userJournalistRating.JournalistId)) { if (userJournalistRating.TopicId <= 0) { return(await _context.UserJournalistRating.Where(m => m.JournalistId == userJournalistRating.JournalistId).AverageAsync(x => x.Rating)); } return(await _context.UserJournalistRating.Where(m => m.JournalistId == userJournalistRating.JournalistId && m.TopicId == userJournalistRating.TopicId).AverageAsync(x => x.Rating)); } else { return(await Task.FromResult(0.0d)); } }
public async Task <bool> RateJournalistAsync(UserJournalistRating userJournalistRating) { var userJournalistRatingLocal = await _context.UserJournalistRating.AsNoTracking().FirstOrDefaultAsync(x => x.JournalistId == userJournalistRating.JournalistId && x.TopicId == userJournalistRating.TopicId && x.UserId == userJournalistRating.UserId); if (userJournalistRatingLocal != null) { userJournalistRating.UserJournalistRatingId = userJournalistRatingLocal.UserJournalistRatingId; _context.UserJournalistRating.Update(userJournalistRating); } else { await _context.UserJournalistRating.AddAsync(userJournalistRating); } return(await _context.SaveChangesAsync() > 0 ? true : false); }