module Gitlab
  module SlashCommands
    module Presenters
      class Access < Presenters::Base
        def access_denied
          ephemeral_response(text: "Whoops! This action is not allowed. This incident will be [reported](https://xkcd.com/838/).")
        end

        def not_found
          ephemeral_response(text: "404 not found! GitLab couldn't find what you were looking for! :boom:")
        end

        def authorize
          message =
            if @resource
              ":wave: Hi there! Before I do anything for you, please [connect your GitLab account](#{@resource})."
            else
              ":sweat_smile: Couldn't identify you, nor can I autorize you!"
            end

          ephemeral_response(text: message)
        end

        def unknown_command(commands)
          ephemeral_response(text: help_message(trigger))
        end

        private

        def help_message(trigger)
          header_with_list("Command not found, these are the commands you can use", full_commands(trigger))
        end

        def full_commands(trigger)
          @resource.map { |command| "#{trigger} #{command.help_message}" }
        end
      end
    end
  end
end
