# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/

class LinksController < ApplicationController
  before_filter :authentication_check

  # GET /api/links
  def index
    links = Link.list(
      :link_object       => params[:link_object],
      :link_object_value => params[:link_object_value],
    )

    #
    tickets = []
    users = {}
    link_list = []
    links.each { |item|
      link_list.push item
      if item['link_object'] == 'Ticket'
        data = Ticket.lookup( :id => item['link_object_value'] )
        tickets.push data
        if !users[ data['owner_id'] ]
          users[ data['owner_id'] ] = User.user_data_full( data['owner_id'] )
        end
        if !users[ data['customer_id'] ]
          users[ data['customer_id'] ] = User.user_data_full( data['customer_id'] )
        end
        if !users[ data['created_by_id'] ]
          users[ data['created_by_id'] ] = User.user_data_full( data['created_by_id'] )
        end
      end
    }

    # return result
    render :json => {
      :links    => link_list,
      :tickets  => tickets,
      :users    => users,
    }
  end

  # POST /api/links/add
  def add

    # lookup object id
    object_id = Ticket.where( :number => params[:link_object_source_number] ).first.id
    link = Link.add(
      :link_type                => params[:link_type],
      :link_object_target       => params[:link_object_target],
      :link_object_target_value => params[:link_object_target_value],
      :link_object_source       => params[:link_object_source],
      :link_object_source_value => object_id
    )

    if link
      render :json => link, :status => :created
    else
      render :json => link.errors, :status => :unprocessable_entity
    end
  end

  # DELETE /api/links/remove
  def remove
    link = Link.remove(params)

    if link
      render :json => link, :status => :created
    else
      render :json => link.errors, :status => :unprocessable_entity
    end
  end

end
