Example #1
0
        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);
        }
Example #2
0
        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");
            }
        }