#
#= マスターモデル共通
# Authors:: Sumiyo Yamamoto
# Copyright:: Copyright (C) OrbusNeich Medical K.K.  2010.
#--
# date        name                   note
# 2010.2.26   Sumiyo Yamamoto        新規作成
#-------------------------------------------------------------------------------
#++
module Comm
  module BaseModel
    #= マスター基本モデルクラス
    # マスター系の全てのモデルが継承する、ベースとなるモデル。
    #------------------------------------------------------------------------#++
    class Master < General
      # DB接続先設定
      establish_connection 'master'
      
      # 抽象クラス設定（対応するテーブルが存在しない）
      self.abstract_class = true
      
      named_scope :valid, :conditions => {:invalid_flag_code => Comm::Const::MasterCode::MCODE_FLAG_OFF}
      named_scope :disp_name_is, lambda{ |name| {
        :conditions => ["disp_name = ?", name]
      }}
      named_scope :id_is_not, lambda{ |id| {
        :conditions => ["id != ?", id.to_i]
      }}
      
      #== 登録実行管理
      #-----------------------------------------------------------------#++
      def create_mng(params, rev_number = nil)
        super
        if @result
          MasterRevision.up_rev_number(self.class.name.tableize)
        end
        @result
      end

      #== 更新実行管理
      #-----------------------------------------------------------------#++
      def update_mng(params, rev_number = nil)
        super
        if @result
          MasterRevision.up_rev_number(self.class.name.tableize)
        end
        @result
      end

      #== 削除実行管理
      #-----------------------------------------------------------------#++
      def destroy_mng
        super
        if @result
          MasterRevision.up_rev_number(self.class.name.tableize)
        end
        @result
      end
      
    private
      #== nullの可能性がある条件を生成する
      # operator "="か"!="しか想定してません
      def get_sql_cond_null(var_name, operator="=", col_name=nil)
        col_name ||= var_name
        if operator == "="
          str_not = ""
        else
          str_not = "NOT"
        end
        var_value = eval("self.#{var_name}")
        if var_value == nil
          sql_cond = "#{col_name} IS #{str_not} NULL"
        else
          sql_cond = "#{col_name} #{operator} #{var_value}"
        end
        return sql_cond
      end
    end
  end
end
