SQL pour renvoyer les zones dans ProcedureDetail
This commit is contained in:
parent
47aa3b7d4a
commit
7281f3ec1a
2 changed files with 10 additions and 2 deletions
|
@ -482,7 +482,8 @@ module Administrateurs
|
||||||
procedures_result = procedures_result.where('unaccent(libelle) ILIKE unaccent(?)', "%#{filter.libelle}%") if filter.libelle.present?
|
procedures_result = procedures_result.where('unaccent(libelle) ILIKE unaccent(?)', "%#{filter.libelle}%") if filter.libelle.present?
|
||||||
procedures_sql = procedures_result.to_sql
|
procedures_sql = procedures_result.to_sql
|
||||||
|
|
||||||
sql = "select id, libelle, published_at, aasm_state, estimated_dossiers_count, template, count(administrateurs_procedures.administrateur_id) as admin_count from administrateurs_procedures inner join procedures on procedures.id = administrateurs_procedures.procedure_id where procedures.id in (#{procedures_sql}) group by procedures.id order by published_at desc"
|
sql = "select procedures.id, libelle, published_at, aasm_state, estimated_dossiers_count, template, array_agg(distinct latest_labels.name) filter (where latest_labels.name is not null) as latest_zone_labels from administrateurs_procedures inner join procedures on procedures.id = administrateurs_procedures.procedure_id left join procedures_zones ON procedures.id = procedures_zones.procedure_id left join zones ON zones.id = procedures_zones.zone_id left join (select zone_id, name from zone_labels where (zone_id, designated_on) in (select zone_id, max(designated_on) from zone_labels group by zone_id)) as latest_labels on zones.id = latest_labels.zone_id
|
||||||
|
where procedures.id in (#{procedures_sql}) group by procedures.id order by published_at desc"
|
||||||
ActiveRecord::Base.connection.execute(sql)
|
ActiveRecord::Base.connection.execute(sql)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
ProcedureDetail = Struct.new(:id, :libelle, :published_at, :aasm_state, :estimated_dossiers_count, :admin_count, :template, keyword_init: true) do
|
ProcedureDetail = Struct.new(:id, :libelle, :published_at, :aasm_state, :estimated_dossiers_count, :admin_count, :template, :latest_zone_labels, keyword_init: true) do
|
||||||
include SpreadsheetArchitect
|
include SpreadsheetArchitect
|
||||||
|
|
||||||
def spreadsheet_columns
|
def spreadsheet_columns
|
||||||
|
@ -12,4 +12,11 @@ ProcedureDetail = Struct.new(:id, :libelle, :published_at, :aasm_state, :estimat
|
||||||
def administrateurs
|
def administrateurs
|
||||||
AdministrateursCounter.new(admin_count)
|
AdministrateursCounter.new(admin_count)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def parsed_latest_zone_labels
|
||||||
|
# Replace curly braces with square brackets to make it a valid JSON array
|
||||||
|
JSON.parse(latest_zone_labels.tr('{', '[').tr('}', ']'))
|
||||||
|
rescue JSON::ParserError
|
||||||
|
[]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue