public async Task <Player> RegisterPlayer(string input, string discordName, string discordId, string guildId) { input = input.Trim(); var splitindex = Helpers.FindBindingInString(input, '-'); var name = input.Substring(0, splitindex).Trim(); input = input.Substring(splitindex + 1, input.Length - splitindex - 1).TrimStart(); var role = new List <Role>(); splitindex = Helpers.FindBindingInString(input, '-'); var stringRole = input.Substring(0, splitindex).Trim(); if (Helpers.FindBindingInString(stringRole, ',') != -1) { do { splitindex = Helpers.FindBindingInString(input, ','); if (splitindex == -1) { break; } stringRole = input.Substring(0, splitindex).Trim(); role.Add(GetPlayerRoleFromString(stringRole)); input = input.Substring(splitindex + 1, input.Length - splitindex - 1).TrimStart(); } while (splitindex != -1); } splitindex = Helpers.FindBindingInString(input, '-'); stringRole = input.Substring(0, splitindex).Trim(); role.Add(GetPlayerRoleFromString(stringRole)); input = input.Substring(splitindex + 1, input.Length - splitindex - 1).TrimStart(); var realm = input.Trim(); var pcheck = db.GetPlayerFromCharAndRealmName(name, realm); if (pcheck != null) { throw new FormatException("Player already exists"); } var p = await bService.GetCharacter(realm.ToLower(), name.ToLower()); if (p.gear == null || p.Class == null) { throw new FormatException("Character not found on Raider.io"); } var player = new Player { UserId = discordId, GuildId = guildId, MythicScore = p.mythic_plus_scores.All, Realm = realm, CloakLevel = p.gear.corruption.cloakRank, PClass = GetPlayerClassFromString(p.Class), DiscordName = discordName, Ilvl = p.gear.item_level_equipped, IngameName = name, Roles = role, Main = false }; db.Create(player); player.Roles.ForEach(o => { var roleLine = new RoleLine { PlayerId = player.Id, RoleId = (int)o }; db.Create(roleLine); }); return(player); }
public void AddRole(string input, string discUser, string guildId) { var player = new Player(); input = input.Trim(); if (Helpers.FindBindingInString(input, '-') != -1) { var index = Helpers.FindBindingInString(input, '-'); var playerName = input.Substring(0, index).Trim(); player = db.GetPlayerFromCharName(playerName, guildId); input = input.Substring(index + 1, input.Length - index - 1).Trim(); } else { player = db.GetSpecicPlayer(discUser, guildId); } var splitIndex = Helpers.FindBindingInString(input, ','); var streng = ""; if (splitIndex == -1) { player.Roles.Add(GetPlayerRoleFromString(input)); } else { do { streng = input.Substring(0, splitIndex).Trim(); player.Roles.Add(GetPlayerRoleFromString(streng)); input = input.Substring(splitIndex + 1, input.Length - splitIndex - 1).TrimStart(); splitIndex = Helpers.FindBindingInString(input, ','); } while (splitIndex != -1); player.Roles.Add(GetPlayerRoleFromString(input)); } if (player.Roles.Count > 0) { var roleLines = db.GetAllRoleLines(player.Id); player.Roles.ForEach(o => { if (o == Role.RaidLeader) { var playerList = db.GetAllPlayers(player.UserId.ToString(), player.GuildId.ToString()); playerList.ForEach(o => { var roleLines = db.GetAllRoleLines(o.Id); if (!roleLines.Any(l => l.RoleId == (int)Role.RaidLeader)) { db.Create(new RoleLine { PlayerId = o.Id, RoleId = (int)Role.RaidLeader }); } }); } else { var line = roleLines.Where(x => x.RoleId == (int)o).FirstOrDefault(); if (line == null) { var linje = new RoleLine { PlayerId = player.Id, RoleId = (int)o }; db.Create(linje); } } }); } else { throw new FormatException("Empty list"); } }