commit
d252ab7ebb
10 changed files with 143 additions and 14 deletions
2
Gemfile
2
Gemfile
|
@ -41,7 +41,7 @@ gem 'groupdate'
|
||||||
gem 'haml-rails'
|
gem 'haml-rails'
|
||||||
gem 'hashie'
|
gem 'hashie'
|
||||||
gem 'jquery-rails' # Use jquery as the JavaScript library
|
gem 'jquery-rails' # Use jquery as the JavaScript library
|
||||||
gem 'kaminari' # Pagination
|
gem 'kaminari', '= 1.1.1' # Pagination
|
||||||
gem 'lograge'
|
gem 'lograge'
|
||||||
gem 'logstash-event'
|
gem 'logstash-event'
|
||||||
gem 'mailjet'
|
gem 'mailjet'
|
||||||
|
|
22
Gemfile.lock
22
Gemfile.lock
|
@ -325,18 +325,18 @@ GEM
|
||||||
bindata
|
bindata
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (2.1.0)
|
jwt (2.1.0)
|
||||||
kaminari (1.2.0)
|
kaminari (1.1.1)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
kaminari-actionview (= 1.2.0)
|
kaminari-actionview (= 1.1.1)
|
||||||
kaminari-activerecord (= 1.2.0)
|
kaminari-activerecord (= 1.1.1)
|
||||||
kaminari-core (= 1.2.0)
|
kaminari-core (= 1.1.1)
|
||||||
kaminari-actionview (1.2.0)
|
kaminari-actionview (1.1.1)
|
||||||
actionview
|
actionview
|
||||||
kaminari-core (= 1.2.0)
|
kaminari-core (= 1.1.1)
|
||||||
kaminari-activerecord (1.2.0)
|
kaminari-activerecord (1.1.1)
|
||||||
activerecord
|
activerecord
|
||||||
kaminari-core (= 1.2.0)
|
kaminari-core (= 1.1.1)
|
||||||
kaminari-core (1.2.0)
|
kaminari-core (1.1.1)
|
||||||
launchy (2.4.3)
|
launchy (2.4.3)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
letter_opener (1.7.0)
|
letter_opener (1.7.0)
|
||||||
|
@ -384,7 +384,7 @@ GEM
|
||||||
nenv (0.3.0)
|
nenv (0.3.0)
|
||||||
netrc (0.11.0)
|
netrc (0.11.0)
|
||||||
nio4r (2.5.2)
|
nio4r (2.5.2)
|
||||||
nokogiri (1.10.8)
|
nokogiri (1.10.9)
|
||||||
mini_portile2 (~> 2.4.0)
|
mini_portile2 (~> 2.4.0)
|
||||||
notiffany (0.1.1)
|
notiffany (0.1.1)
|
||||||
nenv (~> 0.1)
|
nenv (~> 0.1)
|
||||||
|
@ -766,7 +766,7 @@ DEPENDENCIES
|
||||||
haml-rails
|
haml-rails
|
||||||
hashie
|
hashie
|
||||||
jquery-rails
|
jquery-rails
|
||||||
kaminari
|
kaminari (= 1.1.1)
|
||||||
launchy
|
launchy
|
||||||
letter_opener_web
|
letter_opener_web
|
||||||
lograge
|
lograge
|
||||||
|
|
|
@ -31,7 +31,7 @@ class Administrateurs::ActivateController < ApplicationController
|
||||||
flash.notice = "Mot de passe enregistré"
|
flash.notice = "Mot de passe enregistré"
|
||||||
redirect_to admin_procedures_path
|
redirect_to admin_procedures_path
|
||||||
else
|
else
|
||||||
flash.alert = administrateur.errors.full_messages
|
flash.alert = user.administrateur.errors.full_messages
|
||||||
redirect_to admin_activate_path(token: update_administrateur_params[:reset_password_token])
|
redirect_to admin_activate_path(token: update_administrateur_params[:reset_password_token])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -30,6 +30,8 @@ class Api::V2::Schema < GraphQL::Schema
|
||||||
Types::PersonnePhysiqueType
|
Types::PersonnePhysiqueType
|
||||||
when Etablissement
|
when Etablissement
|
||||||
Types::PersonneMoraleType
|
Types::PersonneMoraleType
|
||||||
|
when GroupeInstructeur
|
||||||
|
Types::GroupeInstructeurType
|
||||||
else
|
else
|
||||||
raise GraphQL::ExecutionError.new("Unexpected object: #{obj}")
|
raise GraphQL::ExecutionError.new("Unexpected object: #{obj}")
|
||||||
end
|
end
|
||||||
|
|
26
app/graphql/mutations/dossier_changer_groupe_instructeur.rb
Normal file
26
app/graphql/mutations/dossier_changer_groupe_instructeur.rb
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
module Mutations
|
||||||
|
class DossierChangerGroupeInstructeur < Mutations::BaseMutation
|
||||||
|
include DossierHelper
|
||||||
|
|
||||||
|
description "Changer le grope instructeur du dossier."
|
||||||
|
|
||||||
|
argument :dossier_id, ID, "Dossier ID", required: true, loads: Types::DossierType
|
||||||
|
argument :groupe_instructeur_id, ID, "Group instructeur a affecter", required: true, loads: Types::GroupeInstructeurType
|
||||||
|
|
||||||
|
field :dossier, Types::DossierType, null: true
|
||||||
|
field :errors, [Types::ValidationErrorType], null: true
|
||||||
|
|
||||||
|
def resolve(dossier:, groupe_instructeur:)
|
||||||
|
if dossier.groupe_instructeur == groupe_instructeur
|
||||||
|
{ errors: ["Le dossier est déjà avec le grope instructeur: '#{groupe_instructeur.label}'"] }
|
||||||
|
else
|
||||||
|
dossier.update!(groupe_instructeur: groupe_instructeur)
|
||||||
|
{ dossier: dossier }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def authorized?(dossier:, groupe_instructeur:)
|
||||||
|
dossier.groupe_instructeur.procedure == groupe_instructeur.procedure
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -438,6 +438,38 @@ type DossierAccepterPayload {
|
||||||
errors: [ValidationError!]
|
errors: [ValidationError!]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
Autogenerated input type of DossierChangerGroupeInstructeur
|
||||||
|
"""
|
||||||
|
input DossierChangerGroupeInstructeurInput {
|
||||||
|
"""
|
||||||
|
A unique identifier for the client performing the mutation.
|
||||||
|
"""
|
||||||
|
clientMutationId: String
|
||||||
|
|
||||||
|
"""
|
||||||
|
Dossier ID
|
||||||
|
"""
|
||||||
|
dossierId: ID!
|
||||||
|
|
||||||
|
"""
|
||||||
|
Group instructeur a affecter
|
||||||
|
"""
|
||||||
|
groupeInstructeurId: ID!
|
||||||
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
Autogenerated return type of DossierChangerGroupeInstructeur
|
||||||
|
"""
|
||||||
|
type DossierChangerGroupeInstructeurPayload {
|
||||||
|
"""
|
||||||
|
A unique identifier for the client performing the mutation.
|
||||||
|
"""
|
||||||
|
clientMutationId: String
|
||||||
|
dossier: Dossier
|
||||||
|
errors: [ValidationError!]
|
||||||
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Autogenerated input type of DossierClasserSansSuite
|
Autogenerated input type of DossierClasserSansSuite
|
||||||
"""
|
"""
|
||||||
|
@ -790,6 +822,11 @@ type Mutation {
|
||||||
"""
|
"""
|
||||||
dossierAccepter(input: DossierAccepterInput!): DossierAccepterPayload
|
dossierAccepter(input: DossierAccepterInput!): DossierAccepterPayload
|
||||||
|
|
||||||
|
"""
|
||||||
|
Changer le grope instructeur du dossier.
|
||||||
|
"""
|
||||||
|
dossierChangerGroupeInstructeur(input: DossierChangerGroupeInstructeurInput!): DossierChangerGroupeInstructeurPayload
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Classer le dossier sans suite.
|
Classer le dossier sans suite.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -7,5 +7,6 @@ module Types
|
||||||
field :dossier_classer_sans_suite, mutation: Mutations::DossierClasserSansSuite
|
field :dossier_classer_sans_suite, mutation: Mutations::DossierClasserSansSuite
|
||||||
field :dossier_refuser, mutation: Mutations::DossierRefuser
|
field :dossier_refuser, mutation: Mutations::DossierRefuser
|
||||||
field :dossier_accepter, mutation: Mutations::DossierAccepter
|
field :dossier_accepter, mutation: Mutations::DossierAccepter
|
||||||
|
field :dossier_changer_groupe_instructeur, mutation: Mutations::DossierChangerGroupeInstructeur
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ class Pipedrive::PersonAdapter
|
||||||
PIPEDRIVE_SOURCE_ATTRIBUTE_ID = '2fa7864f467ffa97721cbcd08df5a3d591b15f50'
|
PIPEDRIVE_SOURCE_ATTRIBUTE_ID = '2fa7864f467ffa97721cbcd08df5a3d591b15f50'
|
||||||
PIPEDRIVE_NB_DOSSIERS_ATTRIBUTE_ID = '2734a3ff19f4b88bd0d7b4cf02c47c7545617207'
|
PIPEDRIVE_NB_DOSSIERS_ATTRIBUTE_ID = '2734a3ff19f4b88bd0d7b4cf02c47c7545617207'
|
||||||
PIPEDRIVE_DEADLINE_ATTRIBUTE_ID = 'ef766dd14de7da246fb5fc1704f45d1f1830f6c9'
|
PIPEDRIVE_DEADLINE_ATTRIBUTE_ID = 'ef766dd14de7da246fb5fc1704f45d1f1830f6c9'
|
||||||
PIPEDRIVE_ROBOT_ID = '2748449'
|
PIPEDRIVE_ROBOT_ID = '11381160'
|
||||||
|
|
||||||
def self.get_demandes_from_persons_owned_by_robot
|
def self.get_demandes_from_persons_owned_by_robot
|
||||||
Pipedrive::API.get_persons_owned_by_user(PIPEDRIVE_ROBOT_ID).map do |datum|
|
Pipedrive::API.get_persons_owned_by_user(PIPEDRIVE_ROBOT_ID).map do |datum|
|
||||||
|
|
|
@ -686,6 +686,53 @@ describe API::V2::GraphqlController do
|
||||||
expect(data[:signedBlobId]).not_to be_nil
|
expect(data[:signedBlobId]).not_to be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'dossierChangerGroupeInstructeur' do
|
||||||
|
let(:query) do
|
||||||
|
"mutation {
|
||||||
|
dossierChangerGroupeInstructeur(input: {
|
||||||
|
dossierId: \"#{dossier.to_typed_id}\",
|
||||||
|
groupeInstructeurId: \"#{dossier.groupe_instructeur.to_typed_id}\"
|
||||||
|
}) {
|
||||||
|
errors {
|
||||||
|
message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "validation error" do
|
||||||
|
expect(gql_errors).to eq(nil)
|
||||||
|
|
||||||
|
expect(gql_data).to eq(dossierChangerGroupeInstructeur: {
|
||||||
|
errors: [{ message: "Le dossier est déjà avec le grope instructeur: 'défaut'" }]
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
context "should changer groupe instructeur" do
|
||||||
|
let!(:new_groupe_instructeur) { procedure.groupe_instructeurs.create(label: 'new groupe instructeur') }
|
||||||
|
let(:query) do
|
||||||
|
"mutation {
|
||||||
|
dossierChangerGroupeInstructeur(input: {
|
||||||
|
dossierId: \"#{dossier.to_typed_id}\",
|
||||||
|
groupeInstructeurId: \"#{new_groupe_instructeur.to_typed_id}\"
|
||||||
|
}) {
|
||||||
|
errors {
|
||||||
|
message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "change made" do
|
||||||
|
expect(gql_errors).to eq(nil)
|
||||||
|
|
||||||
|
expect(gql_data).to eq(dossierChangerGroupeInstructeur: {
|
||||||
|
errors: nil
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -25,4 +25,20 @@ describe Manager::ProceduresController, type: :controller do
|
||||||
|
|
||||||
it { expect(response.body).to include('sub type de champ') }
|
it { expect(response.body).to include('sub type de champ') }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#index' do
|
||||||
|
render_views
|
||||||
|
|
||||||
|
let(:administration) { create(:administration) }
|
||||||
|
let!(:dossier) { create(:dossier) }
|
||||||
|
|
||||||
|
context 'sort by dossiers' do
|
||||||
|
before do
|
||||||
|
sign_in(administration)
|
||||||
|
get :index, params: { procedure: { direction: 'asc', order: 'dossiers' } }
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(response.body).to include('1 dossier') }
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue