diff --git a/app/controllers/v1/leaders_controller.rb b/app/controllers/v1/leaders_controller.rb index 8ef9fa5..b505f4e 100644 --- a/app/controllers/v1/leaders_controller.rb +++ b/app/controllers/v1/leaders_controller.rb @@ -6,7 +6,8 @@ class LeadersController < ApplicationController def intake leader = Leader.new( - leader_params.merge(club_ids: [club_id], slack_team_id: TEAM_ID) + leader_params.merge(club_ids: [club_id], slack_username: slack_username, + slack_team_id: TEAM_ID) ) if leader.save @@ -24,6 +25,10 @@ def club_id params[:club_id] end + def slack_username + params[:slack_username].strip + end + def verify_club_id return unless club_id.nil? render json: { errors: { club_id: ["can't be blank"] } }, status: 422 diff --git a/app/models/leader.rb b/app/models/leader.rb index b0463a4..702dc09 100644 --- a/app/models/leader.rb +++ b/app/models/leader.rb @@ -60,6 +60,7 @@ class Leader < ApplicationRecord end validates :name, presence: true + validate :validate_slack_username_found def slack_update return if access_token.nil? @@ -80,6 +81,11 @@ def timezone private + def validate_slack_username_found + return unless user_from_username(slack_username).nil? + errors.add(:slack_username, 'Slack user not found') + end + def slack_id_sync info = SlackClient::Users.info(slack_id, access_token)[:user] self.slack_username = info[:name] unless info.nil?