Ejemplo n.º 1
0
        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("<", "&lt;").Replace(">", "&gt;")})",
                GotoLocation = meetingUrl
            };

            if (channelMembers.Count != sids.Count() + 1)
            {
                response.Text += $"\n{Langs.Warning}: {Langs.SomeUsersDontHaveSids} {Langs.SaveIdUsage}";
            }

            return(response);
        }
Ejemplo n.º 2
0
        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
                    )
            });
        }