class MessagesController < ApplicationController
    before_action :authenticate_user!
    before_action :user_is_trainer?, only: [:new]

    def index 
        @users = Message.where(user_id: current_user.id).order(created_at: :desc).select(:emisor_id).map(&:emisor_id).uniq
        # @messages = Message.where(emisor_id: [@user.id, current_user.id]).order(created_at: :asc)
    end

    def show 
        @user = User.find_by_safe_url(params[:id])
        @messages = current_user.messages.where(emisor_id: @user.id).or(@user.messages.where(emisor_id: current_user.id)).order(created_at: :asc)
        @message = Message.new(user_id: @user.safe_url)
    end

    def new
        @user = User.find_by_safe_url(params[:user_id])
        @message = Message.new(user_id: @user.safe_url, hide_message: params[:message_id])
        @plans = @user.plans
        @messages = current_user.messages.where(emisor_id: @user.id).or(@user.messages.where(emisor_id: current_user.id)).order(created_at: :asc)
    end

    def create 
        @user = User.find_by_safe_url(params[:message][:user_id])
        Message.where(emisor_id: @user.id, user_id: current_user.id, status: "new").each { |msg| msg.update(status: "hide") if msg }
        @message = Message.create({
            emisor_id: current_user.id,
            user_id: @user.id,
            message: params[:message][:message], status: "new"
        })
        if !params[:message][:hide_message].blank?
            @msg = Message.find(params[:message][:hide_message])
            @msg.update(status:'hide')
        end
    end

    def save
        @message = current_user.messages.find(params[:id])
        @message.update(status: "save")
    end

    def delete
        @message = Message.where(user_id: current_user.id).or(Message.where(emisor_id: current_user.id)).find(params[:id])
        @message.update(status: "hide")
    end
    
end