private async Task <MattermostResponse> GenerateMeetingLink(MattermostRequest req) { var cmdParams = req.text.Split(" ").Select(x => x.Trim()).ToList(); var group = cmdParams.Count > 1 ? cmdParams[1] : null; var channelMembers = await _matermostSrv.GetChannelMembers(req.channel_id); var idsExceptCurrent = channelMembers .Where(x => x.UserId != req.user_id) .Select(m => m.UserId) .ToList(); var userInfoQuery = _dbContext.UserInfos .Where(x => idsExceptCurrent.Contains(x.UserId)); if (group != null) { userInfoQuery = from userInfo in userInfoQuery from userGroup in _dbContext.UserGroups.Where(x => x.UserId == userInfo.UserId).DefaultIfEmpty() from groupInfo in _dbContext.Groups.Where(x => x.Id == userGroup.GroupId).DefaultIfEmpty() where groupInfo.Name.ToLower() == @group.ToLower() select userInfo; } var sids = userInfoQuery .Select(x => x.SkypeSID); if (!sids.Any()) { return(new MattermostResponse() { ResponseType = ResponseType.Ephemeral, Text = Langs.NoSidsInChannel }); } string meetingUrl = "im:" + string.Join( "", sids.Select(sid => $"<sip:{sid}>") ); var response = new MattermostResponse() { ResponseType = ResponseType.Ephemeral, Text = $"[{Langs.ClickHereToStartMeeting}]({meetingUrl.Replace("<", "<").Replace(">", ">")})", GotoLocation = meetingUrl }; if (channelMembers.Count != sids.Count() + 1) { response.Text += $"\n{Langs.Warning}: {Langs.SomeUsersDontHaveSids} {Langs.SaveIdUsage}"; } return(response); }
public async Task <MattermostResponse> GetRandomMember(MattermostRequest req) { //-get channel members with matermostSrv //-pick random guy and send an InChannel message var members = await _mattermostSrv.GetChannelMembers(req.channel_id); var randomMember = members[new Random().Next(members.Count)]; var randomMemberDetails = await _mattermostSrv.GetUser(randomMember.UserId); return(new MattermostResponse() { ResponseType = Common.Consts.ResponseType.InChannel, Text = string.Format( Langs.RandomMemberSelected, req.user_name, randomMemberDetails.username ) }); }