Show More
Commit Description:
add model solution
Commit Description:
add model solution
References:
File last commit:
Show/Diff file:
Action:
app/controllers/messages_controller.rb
| 88 lines
| 2.1 KiB
| text/x-ruby
| RubyLexer
|
|
r102 | class MessagesController < ApplicationController | ||
r766 | before_action :check_valid_login | |||
|
r102 | |||
r766 | before_action :set_message, only: ['show', 'reply'] | |||
|
r102 | |||
r766 | before_action :admin_authorization, :only => ['console','show', | |||
|
r357 | 'reply','hide','list_all'] | ||
|
r102 | |||
r766 | def index | |||
@messages = Message.find_all_sent_by_user(@current_user) | ||||
|
r102 | end | ||
r456 | ||||
|
r102 | def console | ||
@messages = Message.find_all_system_unreplied_messages | ||||
end | ||||
def show | ||||
end | ||||
|
r357 | def list_all | ||
@messages = Message.where(receiver_id: nil).order(:created_at) | ||||
end | ||||
|
r102 | def create | ||
r766 | @message = Message.new(message_params) | |||
@message.sender = @current_user | ||||
|
r377 | if @message.body == '' or !@message.save | ||
flash[:notice] = 'An error occurred' | ||||
|
r102 | else | ||
flash[:notice] = 'New message posted' | ||||
end | ||||
r766 | redirect_to action: 'index' | |||
|
r102 | end | ||
def reply | ||||
r766 | @r_message = Message.new(message_params) | |||
@r_message.receiver = @message.sender | ||||
@r_message.sender = @current_user | ||||
|
r377 | if @message.body == '' or !@message.save | ||
flash[:notice] = 'An error occurred' | ||||
redirect_to :action => 'show', :id => @message.replying_message_id | ||||
|
r102 | else | ||
flash[:notice] = 'Message replied' | ||||
r766 | @message.replied = true | |||
@message.replying_message = @r_message | ||||
@message.save | ||||
|
r102 | redirect_to :action => 'console' | ||
end | ||||
end | ||||
|
r173 | def hide | ||
message = Message.find(params[:id]) | ||||
message.replied = true | ||||
message.save | ||||
|
r377 | flash[:notice] = 'Message hidden (just marked replied)' | ||
|
r173 | redirect_to :action => 'console' | ||
end | ||||
|
r102 | protected | ||
r766 | def build_replying_message_hierarchy(user) | |||
@all_messages = {} | ||||
|
r102 | |||
r766 | # manually build replies hierarchy (to improve efficiency) | |||
[@messages, @replied_messages].each do |collection| | ||||
collection.each do |m| | ||||
@all_messages[m.id] = {:msg => m, :replies => []} | ||||
end | ||||
end | ||||
@all_messages.each do |m| | ||||
rep_id = m.replying_message_id | ||||
if @all_messages[rep_id]!=nil | ||||
@all_messages[rep_id][:replies] << m | ||||
end | ||||
|
r102 | end | ||
end | ||||
r766 | def set_message | |||
@message = Message.find(params[:id]) | ||||
|
r102 | end | ||
r766 | ||||
def message_params | ||||
params.require(:message).permit(:body) | ||||
end | ||||
|
r102 | |||
end | ||||