class Complaint
  include ActiveModel::Model
  include OrientDbSerializable

  attr_accessor :id, :user, :object, :message, :description, :created_at
  validates_presence_of :user, :object, :message, :created_at

  def initialize(params={})
    super(params.merge(defaults))
  end

  def self.copyrights
    ComplaintMessage.new("Objeto viola direitos autorais")
  end

  def self.ofensive_content
    ComplaintMessage.new "Objeto contém conteúdo ofensivo/abusivo"
  end

  def self.ofensive_user
    ComplaintMessage.new "Usuário ofensivo/agressivo"
  end

  def self.fake_user
    ComplaintMessage.new "Usuário falso"
  end

  def to_orientdb_hash
    super.merge("message" => @message.to_s)
  end

  private

  def excluded_orientdb_properties
    ['user', 'object', '@class']
  end

  def defaults
    {
        created_at: DateTime.now.strftime("%Y-%m-%d %H:%M:%S")
    }
  end

end