show api particulier sources

This commit is contained in:
simon lehericey 2021-09-13 15:59:58 +02:00
parent 8327c6fd0c
commit 5dbd81ebeb
7 changed files with 129 additions and 0 deletions

View file

@ -0,0 +1,26 @@
@import "constants";
#sources-particulier-form {
h2 {
margin-bottom: 0;
}
h3 {
margin-top: 2 * $default-padding;
}
.explication {
padding: $default-padding;
ul {
list-style-type: circle;
list-style-position: inside;
padding-left: $default-padding;
margin-bottom: $default-padding;
}
}
.form input[type="checkbox"] {
margin-bottom: 0;
}
}

View file

@ -0,0 +1,13 @@
module NewAdministrateur
class SourcesParticulierController < AdministrateurController
before_action :retrieve_procedure
def show
sources_service = APIParticulier::Services::SourcesService.new(@procedure)
@available_sources = sources_service.available_sources
end
def update
end
end
end

View file

@ -0,0 +1,28 @@
= render partial: 'new_administrateur/breadcrumbs',
locals: { steps: [link_to('Démarches', admin_procedures_path),
link_to(@procedure.libelle, admin_procedure_path(@procedure)),
link_to(Procedure.human_attribute_name(:jeton_api_particulier), admin_procedure_api_particulier_path(@procedure)),
t('.data_sources')] }
.container
%h1.page-title= t('.title')
.container#sources-particulier-form.mb-2
= form_with model: @procedure, url: admin_procedure_api_particulier_sources_path, local: true, html: { class: 'form' } do |f|
.explication= t('.explication_html')
- @available_sources.each do |provider_key, scopes|
%h2.header-section= t("api_particulier.providers.#{provider_key}.libelle")
- scopes.each do |scope_key, sources|
%h3.explication-libelle= t("api_particulier.providers.#{provider_key}.scopes.#{scope_key}.libelle")
%ul.procedure-admin-api-particulier-sources
- sources.each do |source_key, enabled_hash|
- enabled = (@procedure.api_particulier_sources.dig(provider_key, scope_key)&.include?(source_key)).present?
%li
%label
= check_box_tag "api_particulier_sources[#{provider_key}][#{scope_key}][]", "#{source_key}", enabled
#{t("api_particulier.providers.#{provider_key}.scopes.#{scope_key}.#{source_key}")}
.text-right
= f.button t('views.shared.actions.save'), class: 'button primary send'

View file

@ -0,0 +1,30 @@
fr:
api_particulier:
providers:
cnaf:
libelle: Caisse dallocations familiales (CAF)
scopes:
personne: &personne
noms_prenoms: noms et prénoms
date_de_naissance: date de naissance
sexe: genre
allocataires:
libelle: allocataires
<<: *personne
enfants:
libelle: enfants
<<: *personne
adresse:
libelle: adresse
identite: identité
complement_d_identite: complément didentité
complement_d_identite_geo: complément didentité géographique
numero_et_rue: numéro et rue
lieu_dit: lieu-dit
code_postal_et_ville: code postal et ville
pays: pays
quotient_familial:
libelle: quotient familial
quotient_familial: quotient familial
mois: mois
annee: année

View file

@ -395,3 +395,13 @@ fr:
api_particulier:
already_configured: "Déjà rempli"
needs_configuration: "À remplir"
sources_particulier:
show:
title: "Définir les sources de données"
data_sources: "Sources de données"
explication_html: "<p>API Particulier facilite laccès des administrations aux données familiales (CAF) pour simplifier les démarches administratives mises en œuvre par les collectivités et les administrations.<br> Cela permet aux administrations daccéder à des informations certifiées à la source et ainsi : </p> <ul> <li>de saffranchir des pièces justificatives lors des démarches en ligne,</li> <li>de réduire le nombre derreurs de saisie,</li> <li>décarter le risque de fraude documentaire.</li> </ul> <p> <strong>Important&nbsp;:</strong> les disposition de l'article <a href='https://www.legifrance.gouv.fr/affichCodeArticle.do?cidTexte=LEGITEXT000031366350&amp;idArticle=LEGIARTI000031367412&amp;dateTexte=&amp;categorieLien=cid'>L144-8</a> nautorisent que léchange des informations strictement nécessaires pour traiter une démarche.<br /><br />En conséquence, ne sélectionnez ici que les données auxquelles vous aurez accès dun point de vue légal.</p>"
procedures:
show:
ready: "Validé"
needs_configuration: "À configurer"
configure_api_particulier_token: "Configurer le jeton API particulier"

View file

@ -401,6 +401,7 @@ Rails.application.routes.draw do
resource 'api_particulier', only: [] do
resource 'jeton', only: [:show, :update], controller: 'jeton_particulier'
resource 'sources', only: [:show, :update], controller: 'sources_particulier'
end
put 'clone'

View file

@ -0,0 +1,21 @@
describe NewAdministrateur::SourcesParticulierController, type: :controller do
let(:admin) { create(:administrateur) }
before { sign_in(admin.user) }
describe "#show" do
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: { cnaf: { enfants: ['noms_prenoms'] } }) }
render_views
subject { get :show, params: { procedure_id: procedure.id } }
it 'renders the sources form' do
expect(subject.body).to include(I18n.t('api_particulier.providers.cnaf.scopes.enfants.date_de_naissance'))
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=noms_prenoms][checked=checked]")
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=date_de_naissance]")
expect(subject.body).not_to have_selector("input#api_particulier_sources_cnaf_enfants_[value=date_de_naissance][checked=checked]")
end
end
end