class Public::CustomerMessagesController < ApplicationController
  layout "public"
  
  before_filter :auth_customer
  
  def index
    
    @no_search = true
    

    
    @customer_messages = CustomerMessage.where("destinataire_id = ? or expediteur_id = ?",current_customer.id, current_customer.id).where("parent_id is null")
    
    @customer_messages = @customer_messages.order("last_message_at DESC, created_at DESC").all
    
    
    reseaux_ids= current_customer.reseauxes.pluck(:id)
    #current_customer.reseauxes.each do |r|
    #  reseaux_ids += r.children.pluck(:id)
    #end
    
    @conversations = Conversation.joins(:thing_conversations).where("(thing_conversations.thing_type = ? and thing_conversations.thing_id = ?) or (thing_conversations.thing_type = ? and thing_conversations.thing_id IN (?))", "Customer", current_customer.id, "Reseaux", reseaux_ids ).uniq
    
    
  end


  def show
    @customer_message = CustomerMessage.where("destinataire_id = ? or expediteur_id = ?",current_customer.id, current_customer.id).find(params[:id])
    @customer_message.readed = true
    @customer_message.save
  end
  
  def answer
    @parent_customer_message = CustomerMessage.where("destinataire_id = ? or expediteur_id = ?",current_customer.id, current_customer.id).find(params[:id])
    @customer_message = CustomerMessage.new()
    @customer_message.expediteur = current_customer
    @customer_message.destinataire = @parent_customer_message.expediteur
  end
  
  def answer_save
    
    @parent_customer_message = CustomerMessage.where("destinataire_id = ? or expediteur_id = ?",current_customer.id, current_customer.id).find(params[:id])
    @customer_message = CustomerMessage.new(params.require(:customer_message).permit!)
    @customer_message.expediteur = current_customer
    if @parent_customer_message.expediteur == current_customer
      @customer_message.destinataire = @parent_customer_message.destinataire
    else
      @customer_message.destinataire = @parent_customer_message.expediteur
    end
    @customer_message.parent_id = @parent_customer_message.id
    
    if @customer_message.save
      @parent_customer_message.last_message_at = Time.now
      @parent_customer_message.save

    else
      render :action => :answer
    end

    
  end


  def new
    @customer_message = CustomerMessage.new(:conversation_id => params[:conversation_id], :thing_type => params[:thing_type], :thing_id => params[:thing_id])
    
    
    
  end

  def edit
   
  end
  
 

  def create
    @customer_message = CustomerMessage.new(params.require(:customer_message).permit!)
    @customer_message.expediteur = current_customer
     
    if @customer_message.save
      
      if !@customer_message.conversation
        @conversation = Conversation.create()
        @conversation.thing_conversations << ThingConversation.create(:thing_type => @customer_message.thing_type, :thing_id => @customer_message.thing_id)
        @conversation.thing_conversations << ThingConversation.create(:thing_type => "Customer", :thing_id => current_customer.id)
        @conversation.customer_messages << @customer_message
      else
      
      end
      
      
      redirect_to public_customer_messages_path
    else
      render :action => :new
    end
  end

  
  def update
    @annonce = current_customer.annonces.find(params[:id])
   
    

    
    respond_to do |format|
      if @annonce.update_attributes(params.require(:annonce).permit!)



        format.html { 
          redirect_to public_my_account_path
          }
        format.js
        
      else
        
        format.html { render :action => "edit" }
        format.js { "" }
      end
    end
    
    
      
  end
  		


  def destroy

    	 #@annonce = current_customer.annonces.find(params[:id])
  	   #@annonce.enabled = nil
       #@annonce.save
       
       #redirect_to public_my_account_path, :notice => "Votre annonce a bien été désactivée"

    

  end
  


end
