Class: Doodle::ChatController

Inherits:
ApplicationController show all
Defined in:
app/controllers/doodle/chat_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#auth_params, #authenticate, #authenticate_user

Instance Method Details

#chat_join_service(protocol, user) ⇒ Object



41
42
43
# File 'app/controllers/doodle/chat_controller.rb', line 41

def chat_join_service(protocol, user)
  @chat_join_service ||= Chat::JoinService.new(user, protocol)
end

#finalizeObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/controllers/doodle/chat_controller.rb', line 22

def finalize
  user = User::Analyst.(params.require(:login))
  protocol = protocol_finder_service.find_by_conversation(params.require(:id))

  if user.blank? || protocol.blank?
    render json: { text: "Protocol or user dont found"}, status: 422
  else

    protocol_finalizer_service(protocol).call
    chat_join_service(protocol, user).out(protocol.channel.name)

    render json: { id: protocol.id, text: "Protocol finalized with success" }
  end
end

#has_protocols?Boolean

Returns:

  • (Boolean)


6
7
8
9
# File 'app/controllers/doodle/chat_controller.rb', line 6

def has_protocols?
  protocols = Protocol.waiting_in_channel(params.require(:channel))
  render json: { has_protocols: protocols.size }, status: 200
end

#nextObject



11
12
13
14
15
16
17
18
19
20
# File 'app/controllers/doodle/chat_controller.rb', line 11

def next
  protocol = protocol_finder_service.next
  join_service = chat_join_service(protocol)
  if join_service.break_limit? && protocol.blank?
    render json: { error: 'Analyst already have limit of protocols in progress' }, status: 422
  else
    join_service.join(params.require(:channel))
    render json: { conversation: protocol.conversation_id }, status: 200
  end
end

#protocol_finalizer_service(protocol) ⇒ Object



37
38
39
# File 'app/controllers/doodle/chat_controller.rb', line 37

def protocol_finalizer_service(protocol)
  @protcol_finalizer_service ||= Protocol::FinalizerService.new(protocol)
end

#protocol_finder_serviceObject



45
46
47
# File 'app/controllers/doodle/chat_controller.rb', line 45

def protocol_finder_service
  @finder_service ||= Protocol::FinderService.new
end