public async Task <int> SaveSerieRatingAsync(SerieRatingDTO serieRatingDTO) { var rating = await _dbContext.SeriesRatings .FirstOrDefaultAsync(mr => mr.SerieId == serieRatingDTO.SerieId && mr.UserId == serieRatingDTO.UserId); if (rating != null) { rating.Rate = serieRatingDTO.Rate; } else { rating = new SeriesRating { SerieId = serieRatingDTO.SerieId, UserId = serieRatingDTO.UserId, Rate = serieRatingDTO.Rate }; await _dbContext.SeriesRatings.AddAsync(rating); } try { await _dbContext.SaveChangesAsync(); _logger.LogInfo($"Successfully saved SeriesRating with rating {serieRatingDTO.Rate} from user {serieRatingDTO.UserId} to serie {serieRatingDTO.SerieId}"); return(1); } catch (Exception ex) { _logger.LogWarn($"Failed to save MoviesRating with rating {serieRatingDTO.Rate} from user {serieRatingDTO.UserId} to serie {serieRatingDTO.SerieId}. Exception: {ex}"); return(-1); } }
public static void DbUpdate(ObservableCollection <PlayerEntry> players, bool isBestWay, bool redWin, bool blackWin, bool techRedWin, bool techBlackWin, ObservableCollection <int?> ugadaykaContainer, bool ugadaykaOn, bool threeZv, int prohBal, int?falseCom) { var gap = GetGap(); using (var context = new SaluteDbContext()) { foreach (var player in players) { var fc = falseCom != null && falseCom == players.IndexOf(player) + 1; var currentNick = player.Nick; IRating inSeason = context.SeasonRatingDbSet.FirstOrDefault(t => t.Nick == currentNick); IRating inSeries = context.SeriesRatingDbSet.FirstOrDefault(t => t.Nick == currentNick); IRating inWeek = context.WeekRatingDbSet.FirstOrDefault(t => t.Nick == currentNick); IRating inAll = context.AllTimeRatingDbSet.FirstOrDefault(t => t.Nick == currentNick); if (inSeason != null) { GeneralDbUpdate(player, inSeason, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, gap.SeasonMinGames, true, fc); } else { var newPlayer = new SeasonRating(player, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, fc); context.SeasonRatingDbSet.Add(newPlayer); } if (inSeries != null) { GeneralDbUpdate(player, inSeries, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, gap.SeriesMinGames, false, fc); } else { var newPlayer = new SeriesRating(player, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, fc); context.SeriesRatingDbSet.Add(newPlayer); } if (inWeek != null) { GeneralDbUpdate(player, inWeek, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, 1, false, fc); } else { var newPlayer = new WeekRating(player, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, fc); context.WeekRatingDbSet.Add(newPlayer); } if (inAll != null) { GeneralDbUpdate(player, inAll, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, gap.AllTimeMinGames, false, fc); } else { var newPlayer = new AllTimeRating(player, players, isBestWay, redWin, blackWin, techRedWin, techBlackWin, ugadaykaContainer, ugadaykaOn, threeZv, fc); context.AllTimeRatingDbSet.Add(newPlayer); } } context.SaveChanges(); } }