#
#= rels モデル
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.11.18  Sumiyo Yamamoto        新規登録
#-------------------------------------------------------------------------------
#++
class Rel < Comm::BaseModel::General

  #== ロック
  #-----------------------------------------------------------------#++
  def self.lock(ptarget, pid, target, id)
    pname = get_table_name(ptarget)
    name = get_table_name(target)
    
    if pname == name #赤伝／黒伝だったら、その元の受注／発注のrelsもつくる
      prel = Rel.find(:all, :conditions => ["table_name='#{pname}' AND record_id=#{pid}"]).first
      if prel
        nprel = new
        nprel.parent_table_name = prel.parent_table_name
        nprel.parent_record_id = prel.parent_record_id
        nprel.table_name = name
        nprel.record_id = id
        nprel.lock_status_code = Comm::Const::MasterCode::MCODE_FLAG_ON
        return false unless nprel.save
      end
    end
    
    rel = new
    rel.parent_table_name = pname
    rel.parent_record_id  = pid
    rel.table_name        = name
    rel.record_id         = id
    rel.lock_status_code  = Comm::Const::MasterCode::MCODE_FLAG_ON
    return false unless rel.save
    
    return true
    #return rel.save ? true : false
  end

  #== アンロック
  #-----------------------------------------------------------------#++
  def self.unlock(target, id, valid_flag=nil)
    name = get_table_name(target)
    update_all(
      ['lock_status_code = ?', valid_flag ? Comm::Const::MasterCode::MCODE_FLAG_ON : Comm::Const::MasterCode::MCODE_FLAG_OFF],
      ['table_name = ? AND record_id = ?', name, id]
    )
    
    return true
  end

  #== ロック判定
  #-----------------------------------------------------------------#++
  def self.locked?(ptarget, pid)
    pname = get_table_name(ptarget)
    
    rel = Rel.asign('parent_table_name', ptarget).asign('parent_record_id', pid).asign('lock_status_code', Comm::Const::MasterCode::MCODE_FLAG_ON).first
    
    return rel ? true : false
  end

protected
  #== クラス名→テーブル名
  #-----------------------------------------------------------------#++
  def self.get_table_name(target)
    if target.class != String
      target = target.to_s.tableize
    end
    return target
  end

end
