Merge branch 'develop' into refactor_type_de_xxx

Conflicts:
	db/schema.rb
This commit is contained in:
Tanguy PATTE 2015-11-20 17:16:45 +01:00
commit d6e4a76bf9
73 changed files with 1352 additions and 212 deletions

View file

@ -4,8 +4,8 @@ class Dossier < ActiveRecord::Base
replied: 'replied',
updated: 'updated',
validated: 'validated',
submitted: 'submitted', #-submit_validated
closed: 'closed'} #-processed
submitted: 'submitted',
closed: 'closed'}
has_one :etablissement, dependent: :destroy
has_one :entreprise, dependent: :destroy
@ -30,6 +30,10 @@ class Dossier < ActiveRecord::Base
validates :description, presence: true, allow_blank: false, allow_nil: true
validates :user, presence: true
A_TRAITER = %w(initiated updated submitted)
EN_ATTENTE = %w(replied validated)
TERMINE = %w(closed)
def retrieve_piece_justificative_by_type(type)
pieces_justificatives.where(type_de_piece_justificative_id: type).last
end
@ -116,16 +120,67 @@ class Dossier < ActiveRecord::Base
state
end
def a_traiter?
A_TRAITER.include?(state)
end
def en_attente?
EN_ATTENTE.include?(state)
end
def termine?
TERMINE.include?(state)
end
def self.a_traiter current_gestionnaire
Dossier.joins(:procedure).where("(state='initiated' OR state='updated' OR state='submitted') AND dossiers.procedure_id = procedures.id AND procedures.administrateur_id = #{current_gestionnaire.administrateur_id}").order('updated_at ASC')
current_gestionnaire.dossiers.where(state: A_TRAITER).order('updated_at ASC')
end
def self.en_attente current_gestionnaire
Dossier.joins(:procedure).where("(state='replied' OR state='validated') AND dossiers.procedure_id = procedures.id AND procedures.administrateur_id = #{current_gestionnaire.administrateur_id}").order('updated_at ASC')
current_gestionnaire.dossiers.where(state: EN_ATTENTE).order('updated_at ASC')
end
def self.termine current_gestionnaire
Dossier.joins(:procedure).where("state='closed' AND dossiers.procedure_id = procedures.id AND procedures.administrateur_id = #{current_gestionnaire.administrateur_id}").order('updated_at ASC')
current_gestionnaire.dossiers.where(state: TERMINE).order('updated_at ASC')
end
def self.search current_gestionnaire, terms
return [], nil if terms.blank?
dossiers = Dossier.arel_table
users = User.arel_table
etablissements = Etablissement.arel_table
entreprises = Entreprise.arel_table
composed_scope = self.joins('LEFT OUTER JOIN users ON users.id = dossiers.user_id')
.joins('LEFT OUTER JOIN entreprises ON entreprises.dossier_id = dossiers.id')
.joins('LEFT OUTER JOIN etablissements ON etablissements.dossier_id = dossiers.id')
terms.split.each do |word|
query_string = "%#{word}%"
query_string_start_with = "#{word}%"
composed_scope = composed_scope.where(
dossiers[:nom_projet].matches(query_string).or\
users[:email].matches(query_string).or\
etablissements[:siret].matches(query_string_start_with).or\
entreprises[:raison_sociale].matches(query_string))
end
#TODO refactor
composed_scope = composed_scope.where(
dossiers[:id].eq_any(current_gestionnaire.dossiers.ids).and\
dossiers[:state].does_not_match('draft'))
begin
if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers.ids.include?(terms.to_i)
dossier = Dossier.where("state != 'draft'").find(terms.to_i)
end
rescue ArgumentError, ActiveRecord::RecordNotFound
dossier = nil
end
return composed_scope, dossier
end
private

View file

@ -1,4 +1,6 @@
class Etablissement < ActiveRecord::Base
belongs_to :dossier
belongs_to :entreprise
has_many :exercices
end

3
app/models/exercice.rb Normal file
View file

@ -0,0 +1,3 @@
class Exercice < ActiveRecord::Base
belongs_to :etablissement
end

View file

@ -5,4 +5,7 @@ class Gestionnaire < ActiveRecord::Base
:recoverable, :rememberable, :trackable, :validatable
belongs_to :administrateur
has_many :procedures, through: :administrateur
has_many :dossiers, through: :procedures
end