class MessagesController

Public Instance Methods

create() click to toggle source
# File app/controllers/messages_controller.rb, line 45
def create
  @message = Message.new(params[:message])
  @message.senderID = current_user.id
  if User.where("name = ?", @message.username).exists?
    @message.recipientID = User.where("name = ?", @message.username).first.id
  else
    flash[:fail] = "Sorry, that user doesn't exist!"
    @message.delete
    render 'new'
    return
  end
  @message.date = DateTime.now
  if @message.save
    # Flash a success message
    flash[:success] = "Sent your message!"
    redirect_to @message
  else
    @message.delete
    flash[:fail] = "Sorry, that didn't work!"
    render 'new'
  end
end
index() click to toggle source
# File app/controllers/messages_controller.rb, line 3
def index
  @title = "Conversations"
  userids = User.select("id")
  userids = userids.map(&:id)
  messages = Message.select("recipientID").where("senderID = ?",current_user.id)
  messages = messages.map(&:recipientID)
  messages2 = Message.select("senderID").where("recipientID = ?",current_user.id)
  messages2 = messages2.map(&:senderID)
  messages = messages.concat(messages2)
  userids = userids & messages
  @conversations = User.sort_conversations(User.find(userids),current_user)
end
new() click to toggle source
# File app/controllers/messages_controller.rb, line 39
def new
  @title = "Compose new message"
  @message = Message.new
  @send_to = params[:send_to]
end
show() click to toggle source
# File app/controllers/messages_controller.rb, line 16
def show
  message = Message.find(params[:id])
  unless message.senderID == current_user.id || message.recipientID == current_user.id
    @title = "Permission denied"
    render 'static_pages/permission_denied'
    return
  end
  # Choose the messages that are between the current user and the message to be shown
  # This will create a "conversation" of all the messages these two users have sent between one another
  if message.senderID == current_user.id
    @set_of_msg = Message.where("(senderID = ? AND recipientID = ?) OR (senderID = ? AND recipientID = ?)",message.recipientID,current_user.id,current_user.id,message.recipientID).reverse
    @recipient = message.recipientID
  elsif message.recipientID == current_user.id
    @set_of_msg = Message.where("(senderID = ? AND recipientID = ?) OR (senderID = ? AND recipientID = ?)",message.senderID,current_user.id,current_user.id,message.senderID).reverse
    @recipient = message.senderID
  else
    flash[:fail] = "Something went wrong!"
    render 'new'
    return
  end
  @title = "Conversation with "+User.select("name").where("id = ?",@recipient).map(&:name)[0]
end