module Base::Form
  extend ActiveSupport::Concern
  include Castable

  included do
    cast_as_boolean :Active
    cast_as_boolean :Internal
    cast_as_boolean :Public
    cast_as_boolean :Alert

    self.table_name = 'Form'
    self.primary_key = 'FormID'

    alias_attribute :id, :FormID
    alias_attribute :school_id, :SchoolID
    alias_attribute :class_id, :ClassID
    alias_attribute :datetime, :DateTime
    alias_attribute :name, :Name
    alias_attribute :description, :Description
    alias_attribute :folder_id, :FolderID
    alias_attribute :color, :Color
    alias_attribute :author_id, :AuthorUID
    alias_attribute :notifier_id, :PANID
    alias_attribute :email_id, :EmailID
    alias_attribute :active, :Active
    alias_attribute :internal, :Internal
    alias_attribute :public, :Public
    alias_attribute :alert, :Alert
    alias_attribute :height, :Height
    alias_attribute :width, :Width
    alias_attribute :next_form_id, :NextFormID

    before_save :set_defaults

    private
      def set_defaults
        self.next_form_id = 0 if next_form_id.nil?
        self.notifier_id = 0 if notifier_id.nil?
      end
  end
end
