Exemplo n.º 1
0
        /// <summary>
        /// Method to update slack user table when there is any changes in slack
        /// </summary>
        /// <param name="slackEvent"></param>
        public void SlackEventUpdate(SlackEventApiAC slackEvent)
        {
            var user = _slackUserDetails.FirstOrDefault(x => x.UserId == slackEvent.Event.User.UserId);

            if (user == null)
            {
                _slackUserRepository.AddSlackUser(slackEvent.Event.User);
            }
        }
        /// <summary>
        /// Method to update slack user table when there is any changes in slack
        /// </summary>
        /// <param name="slackEvent"></param>
        public async Task SlackEventUpdateAsync(SlackEventApiAC slackEvent)
        {
            SlackUserDetails user = await _slackUserDetailsRepository.FirstOrDefaultAsync(x => x.UserId == slackEvent.Event.User.UserId);

            if (user == null)
            {
                await _slackUserRepository.AddSlackUserAsync(slackEvent.Event.User);
            }
        }
 public IHttpActionResult SlackEvent(SlackEventApiAC slackEvent)
 {
     try
     {
         if (slackEvent.Type == _stringConstant.VerificationUrl)
         {
             return(Ok(slackEvent.Challenge));
         }
         eventQueue.Enqueue(slackEvent);
         foreach (var events in eventQueue)
         {
             string eventType = slackEvent.Event.Type;
             if (eventType == _stringConstant.TeamJoin)
             {
                 //if (!slackEvent.Event.User.IsBot)
                 _oAuthLoginRepository.SlackEventUpdate(events);
                 eventQueue.Dequeue();
                 return(Ok());
             }
             else if (eventType == _stringConstant.UserChange)
             {
                 //if (!slackEvent.Event.User.IsBot)
                 _slackUserRepository.UpdateSlackUser(events.Event.User);
                 eventQueue.Dequeue();
                 return(Ok());
             }
             else if (eventType == _stringConstant.ChannelCreated || eventType == _stringConstant.ChannelRename || eventType == _stringConstant.GroupRename)
             {
                 _oAuthLoginRepository.SlackChannelAdd(events);
                 eventQueue.Dequeue();
                 return(Ok());
             }
             else
             {
                 eventQueue.Dequeue();
                 return(BadRequest());
             }
         }
         return(null);
     }
     catch (SlackUserNotFoundException userEx)
     {
         var errorMessage = string.Format("{0}. Error -> {1}", _stringConstant.LoggerErrorMessageOAuthControllerSlackEvent, userEx.ToString());
         _logger.Error(errorMessage, userEx);
         throw userEx;
     }
     catch (Exception ex)
     {
         var errorMessage = string.Format("{0}. Error -> {1}", _stringConstant.LoggerErrorMessageOAuthControllerSlackEvent, ex.ToString());
         _logger.Error(errorMessage, ex);
         throw ex;
     }
 }
Exemplo n.º 4
0
        public async Task <IHttpActionResult> SlackEventAsync(SlackEventApiAC slackEvent)
        {
            //slack verification
            if (slackEvent.Type == _stringConstantRepository.VerificationUrl)
            {
                return(Ok(slackEvent.Challenge));
            }
            eventQueue.Enqueue(slackEvent);
            foreach (var events in eventQueue)
            {
                string eventType = slackEvent.Event.Type;
                //when a user is added to the slack team
                if (eventType == _stringConstantRepository.TeamJoin)
                {
                    await _oAuthLoginRepository.SlackEventUpdateAsync(events);

                    eventQueue.Dequeue();
                    return(Ok());
                }
                //when a user's details are changed
                else if (eventType == _stringConstantRepository.UserChange)
                {
                    await _slackUserRepository.UpdateSlackUserAsync(events.Event.User);

                    eventQueue.Dequeue();
                    return(Ok());
                }
                //when a public channel is created or renamed or a private channel is renamed
                else if (eventType == _stringConstantRepository.ChannelCreated || eventType == _stringConstantRepository.ChannelRename || eventType == _stringConstantRepository.GroupRename)
                {
                    await _oAuthLoginRepository.SlackChannelAddAsync(events);

                    eventQueue.Dequeue();
                    return(Ok());
                }
                //when a channel or a group is archived
                else if (eventType == _stringConstantRepository.ChannelArchive || eventType == _stringConstantRepository.GroupArchive)
                {
                    await _slackChannelRepository.DeleteChannelAsync(events.Event.Channel.ChannelId);

                    eventQueue.Dequeue();
                    return(Ok());
                }
                else
                {
                    eventQueue.Dequeue();
                    return(Ok());
                }
            }
            return(Ok());
        }
Exemplo n.º 5
0
        /// <summary>
        /// Method to update slack channel table when a channel is added or updated in team.
        /// </summary>
        /// <param name="slackEvent"></param>
        public void SlackChannelAdd(SlackEventApiAC slackEvent)
        {
            var channel = _slackChannelDetails.FirstOrDefault(x => x.ChannelId == slackEvent.Event.Channel.ChannelId);

            if (channel == null)
            {
                slackEvent.Event.Channel.CreatedOn = DateTime.UtcNow;
                _slackChannelDetails.Insert(slackEvent.Event.Channel);
            }
            else
            {
                channel.Name = slackEvent.Event.Channel.Name;
                _slackChannelDetails.Update(channel);
            }
        }
        /// <summary>
        /// Method to update slack channel table when a channel is added or updated in team.
        /// </summary>
        /// <param name="slackEvent"></param>
        public async Task SlackChannelAddAsync(SlackEventApiAC slackEvent)
        {
            SlackChannelDetails channel = await _slackChannelDetails.FirstOrDefaultAsync(x => x.ChannelId == slackEvent.Event.Channel.ChannelId);

            if (channel == null)
            {
                slackEvent.Event.Channel.CreatedOn = DateTime.UtcNow;
                _slackChannelDetails.Insert(slackEvent.Event.Channel);
                await _slackChannelDetails.SaveChangesAsync();
            }
            else
            {
                channel.Name = slackEvent.Event.Channel.Name;
                _slackChannelDetails.Update(channel);
                await _slackChannelDetails.SaveChangesAsync();
            }
        }