[GraphQL] Add more filters to dossiers
This commit is contained in:
parent
b9c3d54168
commit
990c867c2e
9 changed files with 130 additions and 64 deletions
|
@ -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 {
|
||||
"""
|
||||
L‘ordre ascendant.
|
||||
"""
|
||||
ASC
|
||||
|
||||
"""
|
||||
L‘ordre descendant.
|
||||
"""
|
||||
DESC
|
||||
}
|
||||
|
||||
"""
|
||||
Information about pagination in a connection.
|
||||
"""
|
||||
|
|
|
@ -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
|
||||
|
|
6
app/graphql/types/order.rb
Normal file
6
app/graphql/types/order.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
module Types
|
||||
class Order < Types::BaseEnum
|
||||
value('ASC', 'L‘ordre ascendant.', value: :asc)
|
||||
value('DESC', 'L‘ordre descendant.', value: :desc)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue