# == Schema Information
#
# Table name: user_team_project_relationships
#
#  id              :integer          not null, primary key
#  project_id      :integer
#  user_team_id    :integer
#  greatest_access :integer
#  created_at      :datetime         not null
#  updated_at      :datetime         not null
#

class UserTeamProjectRelationship < ActiveRecord::Base
  attr_accessible :greatest_access, :project_id, :user_team_id

  belongs_to :user_team
  belongs_to :project

  validates :project,   presence: true
  validates :user_team, presence: true
  validate :check_greatest_access

  scope :with_project, ->(project){ where(project_id: project.id) }

  def team_name
    user_team.name
  end

  def human_max_access
    UserTeam.access_roles.key(greatest_access)
  end

  private

  def check_greatest_access
    errors.add(:base, :incorrect_access_code) unless correct_access?
  end

  def correct_access?
    return false if greatest_access.blank?
    return true if UsersProject.access_roles.has_value?(greatest_access)
    false
  end
end