private bool AddUser(string raidId, User user, string role, Constants.Availability availability, out string resultMessage) { if (!Raids.ContainsKey(raidId)) { resultMessage = "raid not found"; return(false); } Raid raid = Raids[raidId]; if (!raid.CheckRoleAvailability(user.DiscordId, role, availability, out resultMessage)) { return(false); } if (availability.Equals(Constants.Availability.Flex)) { raid.FlexRoles.Add(user); } else { raid.Users.Add(user.DiscordId, user); } SaveRaids(); resultMessage = "Added to raid roster"; return(true); }
//case insensitive protected override async Task ProcessUncanceledMessage(string message) { switch (_state) { case State.role: if (_raid.CheckRoleAvailability(_user.Id, message, _availability, out string resultMessage)) { _role = message; if (_userService.GetAccounts(_raid.GuildId, _user.Id, _raid.AccountType).Count() > 1) { await UserExtensions.SendMessageAsync(_user, CreateAccountSelectionMessage()); _state = State.account; } else { _usedAccount = _userService.GetAccounts(_raid.GuildId, _user.Id, _raid.AccountType).FirstOrDefault().AccountName; AddUser(); } } else { resultMessage += $"\n\n{CreateSignUpMessage(_raid)}"; await UserExtensions.SendMessageAsync(_user, resultMessage); } break; case State.account: if (int.TryParse(message, out int i) && _userService.GetAccounts(_raid.GuildId, _user.Id, _raid.AccountType).Count >= i && i > 0) { _usedAccount = _userService.GetAccounts(_raid.GuildId, _user.Id, _raid.AccountType)[i - 1].AccountName; AddUser(); } else { await UserExtensions.SendMessageAsync(_user, "Invalid numer, please select the account index."); } break; } }