class Integrations::Widget::OutgoingMessageBuilder # params = { # user_id: 1, # inbox_id: 1, # content: "Hello world", # conversation_id: 2 # } attr_accessor :options, :message def initialize(options) @options = options end def perform ActiveRecord::Base.transaction do build_conversation build_message end end private def inbox @inbox ||= Inbox.find(options[:inbox_id]) end def user @user ||= Contact.find(options[:user_id]) end def build_conversation @conversation ||= Conversation.find(options[:conversation_id]) end def build_message @message = @conversation.messages.new(message_params) @message.save! end def message_params { account_id: @conversation.account_id, inbox_id: @conversation.inbox_id, message_type: 1, content: options[:content], user_id: user.id } end end