class DossierSerializer < ActiveModel::Serializer attributes :id, :created_at, :updated_at, :archived, :email, :state, :simplified_state, :initiated_at, :received_at, :processed_at, :motivation, :instructeurs has_one :individual has_one :entreprise has_one :etablissement has_many :cerfa has_many :commentaires has_many :champs_private has_many :pieces_justificatives has_many :types_de_piece_justificative has_many :champs do champs = object.champs + object.quartier_prioritaires + object.cadastres if object.user_geometry.present? champs << object.user_geometry end champs end def cerfa [] end def email object.user&.email end def entreprise object.etablissement&.entreprise end def state object.old_state_value end def simplified_state object.decorate.display_state end def initiated_at object.en_construction_at&.in_time_zone('UTC') end def received_at object.en_instruction_at&.in_time_zone('UTC') end def instructeurs object.followers_gestionnaires.pluck(:email) end def created_at object.created_at&.in_time_zone('UTC') end def updated_at object.updated_at&.in_time_zone('UTC') end def processed_at object.processed_at&.in_time_zone('UTC') end private def user_geometry(dossier) { value: dossier.geometry, type_de_champ: { id: -1, libelle: 'user_geometry', type_champ: 'user_geometry', order_place: -1, descripton: '' } } end end