|
@@ -1,3 +1,5 @@
|
|
|
+using System;
|
|
|
+using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
|
using MafiaTelegramBot.DataBase.EntityDao;
|
|
|
using MafiaTelegramBot.Resources;
|
|
@@ -12,13 +14,39 @@ namespace MafiaTelegramBot.Models.Commands
|
|
|
protected override async Task<Message> Execute(Update update)
|
|
|
{
|
|
|
var user = await UserDao.GetPlayerById(UserId);
|
|
|
- if(!user.Statistics.Contains(Roles.All)) user.Statistics.AddNew(Roles.All, UserId);
|
|
|
- var result = user.Statistics[Roles.All];
|
|
|
+
|
|
|
+ var rolesList = Enum.GetValues(typeof(Roles)).Cast<Roles>().ToList();
|
|
|
+
|
|
|
+ rolesList.Remove(Roles.None);
|
|
|
+ rolesList.Remove(Roles.All);
|
|
|
+
|
|
|
+ if (!user.Statistics.Contains(Roles.All))
|
|
|
+ await UserDao.ActiveUsers[UserId].LoadStatistics();
|
|
|
+
|
|
|
+ var allStatsRow = user.Statistics[Roles.All];
|
|
|
+
|
|
|
var message =
|
|
|
$"__*{strings.statistics_for} _{user.NickName}_*__\n" +
|
|
|
- $"{strings.games_count} {result.Games}\n" +
|
|
|
- $"{strings.wins_count} {result.Wins}\n" +
|
|
|
- $"{strings.winrate} {result.GetWinrate()}%\n";
|
|
|
+ $"{strings.games_count} {allStatsRow.Games}\n" +
|
|
|
+ $"{strings.wins_count} {allStatsRow.Wins}\n" +
|
|
|
+ $"{strings.winrate} {(int)(allStatsRow.GetWinrate()*100)}%\n \n";
|
|
|
+
|
|
|
+ user = await UserDao.GetPlayerById(UserId);
|
|
|
+
|
|
|
+ if (allStatsRow.Games > 0)
|
|
|
+ foreach (var role in rolesList)
|
|
|
+ {
|
|
|
+ if (user.Statistics.Contains(role) && user.Statistics[role].Games > 0)
|
|
|
+ {
|
|
|
+ var statsRow = user.Statistics[role];
|
|
|
+ message += String.Format(strings.role_string, roles.ResourceManager.GetString(role.ToString()), statsRow.Wins, statsRow.Games, (int) (statsRow.GetWinrate()*100)) + '\n';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ message += strings.no_stats_by_roles;
|
|
|
+ }
|
|
|
+
|
|
|
return await Bot.SendWithMarkdown2(ChatId, message, Keyboard.ProfileKeyboard(UserId));
|
|
|
|
|
|
}
|