Sha256: 2f86c72df9521fd941e3d3deda53971aa850203a4ae76d4f878aece619792f0f

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 KB

Contents

module ActiveMetadata::Persistence::Mongoid::Note

  def self.included(receiver)
    receiver.send :include, InstanceMethods
  end

  module InstanceMethods
    
    def create_note_for(field, note, created_by=nil)
      raise RuntimeError, "The object id MUST be valued" unless self.id
      label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
      label.notes.create!(:note => note, :created_by => created_by, :created_at => Time.now.utc, :updated_at => Time.now.utc)
                                                     
      # BEWARE: I'm not checking the send_notification method existence
      # this notification should be asynch
      self.send(:send_notification, field, "", note) 
    end

    def update_note(id, note, updated_by=nil)
      n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => 'name').notes.find id
      old_value = n.note
      n.update_attributes :note => note, :updated_by => updated_by, :updated_at => Time.now.utc
      
      self.send(:send_notification, n.label, old_value, note)
    end

    def notes_for(field)
      label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
      label.notes.desc(:updated_at).to_a
    end

    def note_for(field,id)
      label = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s)
      label.notes.find(id)      
    end      
    
    def create_notes_for(field,notes)
      notes.each { |note| create_note_for field, note }
    end

    def delete_note_for(field,id)
      n = ActiveMeta.find_or_create_by(:document_id => metadata_id).labels.find_or_create_by(:name => field.to_s).notes.find(id)
      old_value = n.note
      n.destroy
      self.send(:send_notification, field, old_value, "")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_metadata-0.1.9 lib/active_metadata/persistence/mongoid/note.rb