class Api::V1::TripSerializer < ActiveModel::Serializer
  attributes :id, :work_order_id, :scheduled_date, :location_name, :status, :client_name, :location_address, :area_name, :wo_type,
  :wo_assigned, :dispatched, :extended_status_code, :position, :completion_date, :can_dispatch,
  :can_edit, :contract_id, :agreement_id, :can_dragable, :event_type, :external_ids

  def work_order_id
    object.work_order_id
  end

  def external_ids
    work_order = Company::WorkOrderDecorator.decorate(object.work_order)
    work_order.reference_text(separator: "\n", prefix: true)
  end

  def scheduled_date
    object.start_date
  end

  def completion_date
    object.end_date
  end

  def location_name
    object.work_order&.location&.name
  end

  def status
    object.extended_status
  end

  def dispatched
    object.ftc_work_order_id.present?
  end

  def client_name
    object.work_order.try(:company).try(:name)
  end

  def location_address
    object.work_order&.location.try(:full_address)
  end

  def wo_type
    object.work_order.try(:work_order_type).try(:titleize)
  end

  def wo_assigned
    object.work_order.technician_trips_count > 0
  end

  def area_name
    object.work_order.try(:area).try(:name)
  end

  def extended_status_code
    object.extended_status_code
  end

  def can_edit
    Company.current.vendor? and object.work_order.vendor.is_equipment_sp?
  end

  def can_dragable
    Company.current.vendor? and object.work_order.vendor.is_equipment_sp?
  end

  def can_dispatch
    Company.current.vendor? and object.work_order.vendor.is_equipment_sp?
  end

  def contract_id
    object.work_order.contract_id
  end

  def agreement_id
    object.work_order.agreement_contract.agreement_id if object.work_order.agreement_contract
  end

  def event_type
    'trip'
  end

end
