/// <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; } }
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()); }
/// <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(); } }