[GraphQL] Add more filters to dossiers

This commit is contained in:
Paul Chavard 2019-09-26 14:57:58 +02:00
parent b9c3d54168
commit 990c867c2e
9 changed files with 130 additions and 64 deletions

View file

@ -128,25 +128,35 @@ type Demarche {
"""
before: String
"""
Dossiers déposés depuis la date.
"""
createdSince: ISO8601DateTime
"""
Returns the first _n_ elements from the list.
"""
first: Int
"""
Filtrer les dossiers par ID.
"""
ids: [ID!]
"""
Returns the last _n_ elements from the list.
"""
last: Int
"""
Dossiers crées depuis la date.
L'ordre des dossiers.
"""
since: ISO8601DateTime
order: Order = ASC
"""
Dossiers avec statut.
"""
state: DossierState
"""
Dossiers mis à jour depuis la date.
"""
updatedSince: ISO8601DateTime
): DossierConnection!
groupeInstructeurs: [GroupeInstructeur!]!
id: ID!
@ -401,6 +411,18 @@ type Mutation {
createDirectUpload(input: CreateDirectUploadInput!): CreateDirectUploadPayload
}
enum Order {
"""
Lordre ascendant.
"""
ASC
"""
Lordre descendant.
"""
DESC
}
"""
Information about pagination in a connection.
"""

View file

@ -21,8 +21,10 @@ module Types
field :groupe_instructeurs, [Types::GroupeInstructeurType], null: false
field :dossiers, Types::DossierType.connection_type, "Liste de tous les dossiers d'une démarche.", null: false do
argument :ids, [ID], required: false, description: "Filtrer les dossiers par ID."
argument :since, GraphQL::Types::ISO8601DateTime, required: false, description: "Dossiers crées depuis la date."
argument :order, Types::Order, default_value: :asc, required: false, description: "L'ordre des dossiers."
argument :created_since, GraphQL::Types::ISO8601DateTime, required: false, description: "Dossiers déposés depuis la date."
argument :updated_since, GraphQL::Types::ISO8601DateTime, required: false, description: "Dossiers mis à jour depuis la date."
argument :state, Types::DossierType::DossierState, required: false, description: "Dossiers avec statut."
end
field :champ_descriptors, [Types::ChampDescriptorType], null: false, method: :types_de_champ
@ -36,15 +38,21 @@ module Types
Loaders::Association.for(object.class, groupe_instructeurs: { procedure: [:administrateurs] }).load(object)
end
def dossiers(ids: nil, since: nil)
def dossiers(updated_since: nil, created_since: nil, state: nil, order:)
dossiers = object.dossiers.for_api_v2
if ids.present?
dossiers = dossiers.where(id: ids)
if state.present?
dossiers = dossiers.where(state: state)
end
if since.present?
dossiers = dossiers.since(since)
if updated_since.present?
dossiers = dossiers.updated_since(updated_since).order_by_updated_at(order)
else
if created_since.present?
dossiers = dossiers.created_since(created_since)
end
dossiers = dossiers.order_by_created_at(order)
end
dossiers

View file

@ -0,0 +1,6 @@
module Types
class Order < Types::BaseEnum
value('ASC', 'Lordre ascendant.', value: :asc)
value('DESC', 'Lordre descendant.', value: :desc)
end
end