class Document < ActiveRecord::Base include Workflow belongs_to :accepted_offer has_one :customer, :through => :accepted_offer mount_uploader :document, DocumentUploader mount_uploader :returned_document, DocumentUploader acts_as_paranoid workflow_column :state validates :title, :presence => true workflow do state :not_available do event :upload_document, :transitions_to => :document_available end state :document_available do event :download_document, :transitions_to => :document_downloaded end state :document_downloaded do event :return_document, :transitions_to => :document_returned end state :document_returned do event :verify, :transitions_to => :document_verified end state :document_verified end def human_state case state when 'not_available' "Pas encore disponible, patientez..." when 'document_available' "Disponible" when 'document_downloaded' "Téléchargé, à retourner signé" when 'document_returned' "Retourné, en attente de vérification" when 'document_verified' "Retourné et vérifié" end end def human_admin_state case state when 'not_available' "Vous devez charger le document" when 'document_available' "Disponible et en attente de téléchargement par le client" when 'document_downloaded' "Téléchargé par le client, en attente de retour" when 'document_returned' "Retourné par le client, en attente de vérification" when 'document_verified' "Retourné et vérifié" end end end