private async Task calculateRank() { RANK_TIER tier = RANK_TIER.F; RANK_DOMINANT dominant = RANK_DOMINANT.BALANCED; GAMITUDE_STYLE style = GAMITUDE_STYLE.DEFAULT; var statsList = new List <int> { stats.Strength, stats.Intelligence, stats.Fluency, stats.Creativity }; var sum = statsList.Sum(); var max = statsList.Max(); if (statsList.All(o => o == statsList.First())) { dominant = RANK_DOMINANT.BALANCED; } else if (max == stats.Strength) { dominant = RANK_DOMINANT.STRENGHT; } else if (max == stats.Intelligence) { dominant = RANK_DOMINANT.INTELLIGENCE; } else if (max == stats.Fluency) { dominant = RANK_DOMINANT.FLUENCY; } else if (max == stats.Creativity) { dominant = RANK_DOMINANT.CREATIVITY; } if (sum < 40) { tier = RANK_TIER.F; } else if (sum >= 40 && sum < 90) { tier = RANK_TIER.D; } else if (sum >= 90 && sum < 150) { tier = RANK_TIER.C; } else if (sum >= 150 && sum < 230) { tier = RANK_TIER.B; } else if (sum >= 230 && sum < 320) { tier = RANK_TIER.A; } else if (sum >= 320) { tier = RANK_TIER.S; } userRank = new UserRank { UserId = userId, RankId = await _ranksService.GetIdByTierDominantAsync(tier, dominant, style) }; }
public async Task <String> GetIdByTierDominantAsync(RANK_TIER tier, RANK_DOMINANT dominant, GAMITUDE_STYLE style) { var rank = await _Rank.Find <Rank>(o => o.Tier == tier && o.Dominant == dominant && o.Style == style).FirstOrDefaultAsync(); return(rank.Id); }