Merge branch 'develop' of github.com:sgmap/tps into develop
Conflicts: .gitignore
This commit is contained in:
commit
0df5324891
106 changed files with 1687 additions and 636 deletions
BIN
app/assets/images/franceconnect_logo.png
Normal file
BIN
app/assets/images/franceconnect_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
app/assets/images/logos-02V.png
Normal file
BIN
app/assets/images/logos-02V.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
|
@ -24,3 +24,5 @@
|
|||
//= require concavehull.min
|
||||
//= require graham_scan.min
|
||||
//= require leaflet.freedraw
|
||||
//= require smart_listing
|
||||
//= require franceconnect_kit
|
133
app/assets/javascripts/franceconnect_kit.js
Normal file
133
app/assets/javascripts/franceconnect_kit.js
Normal file
|
@ -0,0 +1,133 @@
|
|||
$(document).on('page:load', franceconnect_kit);
|
||||
$(document).ready(franceconnect_kit);
|
||||
|
||||
function franceconnect_kit() {
|
||||
init_franceconnect_kit();
|
||||
}
|
||||
|
||||
var fconnect = {
|
||||
tracesUrl: '/traces',
|
||||
aboutUrl: ''
|
||||
};
|
||||
|
||||
function init_franceconnect_kit() {
|
||||
initCurrentHostnameSource();
|
||||
includeFCCss();
|
||||
var fconnectProfile = document.getElementById('fconnect-profile');
|
||||
if (fconnectProfile) {
|
||||
var fcLogoutUrl = fconnectProfile.getAttribute('data-fc-logout-url');
|
||||
var access = createFCAccessElement(fcLogoutUrl);
|
||||
fconnectProfile.parentNode.appendChild(access);
|
||||
fconnectProfile.onclick = toogleElement.bind(access);
|
||||
}
|
||||
}
|
||||
|
||||
function initCurrentHostnameSource() {
|
||||
var currentScript = 'https://fcp.integ01.dev-franceconnect.fr/js/franceconnect.js';
|
||||
var parseUrl = currentScript.split('/');
|
||||
fconnect.currentHost = parseUrl[2];
|
||||
}
|
||||
|
||||
function includeFCCss() {
|
||||
var linkCss = document.createElement('link');
|
||||
linkCss.rel = 'stylesheet';
|
||||
linkCss.href = '//' + fconnect.currentHost + '/stylesheets/franceconnect.css';
|
||||
linkCss.type = 'text/css';
|
||||
linkCss.media = 'screen';
|
||||
|
||||
document.getElementsByTagName('head')[0].appendChild(linkCss);
|
||||
}
|
||||
|
||||
function toogleElement(event) {
|
||||
event.preventDefault();
|
||||
if (this.style.display === "block") {
|
||||
this.style.display = "none";
|
||||
} else {
|
||||
this.style.display = "block";
|
||||
}
|
||||
}
|
||||
|
||||
function closeFCPopin(event) {
|
||||
event.preventDefault();
|
||||
fconnect.popin.className = 'fade-out';
|
||||
setTimeout(function() {
|
||||
document.body.removeChild(fconnect.popin);
|
||||
}, 200);
|
||||
}
|
||||
|
||||
function openFCPopin() {
|
||||
fconnect.popin = document.createElement('div');
|
||||
fconnect.popin.id = 'fc-background';
|
||||
|
||||
var iframe = createFCIframe();
|
||||
|
||||
document.body.appendChild(fconnect.popin);
|
||||
|
||||
fconnect.popin.appendChild(iframe);
|
||||
|
||||
setTimeout(function() {
|
||||
fconnect.popin.className = 'fade-in';
|
||||
}, 200);
|
||||
}
|
||||
|
||||
function createFCIframe() {
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.setAttribute('id', 'fconnect-iframe');
|
||||
iframe.frameBorder = 0;
|
||||
iframe.name = 'fconnect-iframe';
|
||||
return iframe;
|
||||
}
|
||||
|
||||
function createFCAccessElement(logoutUrl) {
|
||||
var access = document.createElement('div');
|
||||
access.id = 'fconnect-access';
|
||||
access.innerHTML = '<h5>Vous êtes identifié grâce à FranceConnect</h5>';
|
||||
access.appendChild(createAboutLink());
|
||||
access.appendChild(document.createElement('hr'));
|
||||
access.appendChild(createHistoryLink());
|
||||
access.appendChild(createLogoutElement(logoutUrl));
|
||||
return access;
|
||||
}
|
||||
|
||||
function createHistoryLink() {
|
||||
|
||||
var historyLink = document.createElement('a');
|
||||
historyLink.target = 'fconnect-iframe';
|
||||
historyLink.href = '//' + fconnect.currentHost + fconnect.tracesUrl;
|
||||
historyLink.onclick = openFCPopin;
|
||||
historyLink.innerHTML = 'Historique des connexions/échanges de données';
|
||||
|
||||
return historyLink;
|
||||
}
|
||||
|
||||
function createAboutLink() {
|
||||
var aboutLink = document.createElement('a');
|
||||
aboutLink.href = fconnect.aboutUrl ? '//' + fconnect.currentHost + fconnect.aboutUrl : '#';
|
||||
if (fconnect.aboutUrl) {
|
||||
aboutLink.target = 'fconnect-iframe';
|
||||
aboutLink.onclick = openFCPopin;
|
||||
}
|
||||
aboutLink.innerHTML = 'Qu\'est-ce-que FranceConnect ?';
|
||||
|
||||
return aboutLink;
|
||||
}
|
||||
|
||||
function createLogoutElement(logoutUrl) {
|
||||
var elm = document.createElement('div');
|
||||
elm.className = 'logout';
|
||||
elm.innerHTML = '<a class="btn btn-default" href="' + logoutUrl + '">Se déconnecter</a>'
|
||||
return elm;
|
||||
}
|
||||
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
// Listen to message from child window
|
||||
eventer(messageEvent,function(e) {
|
||||
var key = e.message ? "message" : "data";
|
||||
var data = e[key];
|
||||
if(data === 'close_popup'){
|
||||
closeFCPopin(e);
|
||||
}
|
||||
},false);
|
|
@ -61,7 +61,7 @@ body {
|
|||
box-shadow: none;
|
||||
float: right;
|
||||
margin-top: 8px;
|
||||
margin-right: 80px;
|
||||
margin-right: 105px;
|
||||
}
|
||||
|
||||
.alert.alert-success,
|
||||
|
@ -184,4 +184,35 @@ div.pagination {
|
|||
.fa {
|
||||
width: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.off-fc-link {
|
||||
font-size: 15px !important;
|
||||
margin-top: -4px;
|
||||
}
|
||||
|
||||
|
||||
#fconnect-access {
|
||||
right: 50px;
|
||||
}
|
||||
|
||||
#fconnect-access:before {
|
||||
left: 22.7% !important;
|
||||
}
|
||||
|
||||
#fconnect-access:after {
|
||||
left: 23% !important;
|
||||
}
|
||||
|
||||
#fconnect-profile {
|
||||
margin-top: 5px;
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
color: #3471A9 !important;
|
||||
text-decoration: none;
|
||||
font-size: 16px !important;
|
||||
margin-right: 0px !important;
|
||||
}
|
||||
|
||||
}
|
5
app/assets/stylesheets/france_connect_particulier.scss
Normal file
5
app/assets/stylesheets/france_connect_particulier.scss
Normal file
|
@ -0,0 +1,5 @@
|
|||
#france_connect_particulier_email{
|
||||
width: 300px;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
}
|
|
@ -7,15 +7,12 @@
|
|||
|
||||
padding: 20px;
|
||||
|
||||
#btn_fc {
|
||||
margin-top:8%;
|
||||
background-image: image-url('logo_FC_02.png');
|
||||
background-repeat: no-repeat;
|
||||
background-size: 38px;
|
||||
background-position-x: 5px;
|
||||
background-position-y: 1px;
|
||||
}
|
||||
.btn_fc {
|
||||
|
||||
img {
|
||||
height: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
#new_user{
|
||||
width: 80%;
|
||||
|
@ -24,7 +21,6 @@
|
|||
}
|
||||
|
||||
hr {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 40px;
|
||||
border: 0;
|
||||
height: 1px;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
class Admin::PiecesJustificativesController < AdminController
|
||||
before_action :retrieve_procedure
|
||||
before_action :procedure_locked?
|
||||
|
||||
def show
|
||||
end
|
||||
|
|
|
@ -1,27 +1,38 @@
|
|||
class Admin::ProceduresController < AdminController
|
||||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
before_action :retrieve_procedure, only: :edit
|
||||
before_action :retrieve_procedure, only: [:show, :edit]
|
||||
before_action :procedure_locked?, only: [:edit]
|
||||
|
||||
def index
|
||||
@procedures = current_administrateur.procedures.where(archived: false)
|
||||
.paginate(:page => params[:page]).decorate
|
||||
@procedures = smart_listing_create :procedures,
|
||||
current_administrateur.procedures.where(archived: false),
|
||||
partial: "admin/procedures/list",
|
||||
array: true
|
||||
|
||||
@page = 'active'
|
||||
active_class
|
||||
end
|
||||
|
||||
def archived
|
||||
@procedures = current_administrateur.procedures.where(archived: true)
|
||||
.paginate(:page => params[:page]).decorate
|
||||
@procedures = smart_listing_create :procedures,
|
||||
current_administrateur.procedures.where(archived: true),
|
||||
partial: "admin/procedures/list",
|
||||
array: true
|
||||
|
||||
@page = 'archived'
|
||||
archived_class
|
||||
|
||||
render 'index'
|
||||
end
|
||||
|
||||
def show
|
||||
informations
|
||||
|
||||
@facade = AdminProceduresShowFacades.new @procedure
|
||||
@facade = AdminProceduresShowFacades.new @procedure.decorate
|
||||
end
|
||||
|
||||
def edit
|
||||
informations
|
||||
|
||||
end
|
||||
|
||||
def new
|
||||
|
@ -66,6 +77,14 @@ class Admin::ProceduresController < AdminController
|
|||
redirect_to admin_procedures_path
|
||||
end
|
||||
|
||||
def active_class
|
||||
@active_class = 'active' if @page == 'active'
|
||||
end
|
||||
|
||||
def archived_class
|
||||
@archived_class = 'active' if @page == 'archived'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_procedure_params
|
||||
|
@ -75,12 +94,4 @@ class Admin::ProceduresController < AdminController
|
|||
def create_module_api_carto_params
|
||||
params.require(:procedure).require(:module_api_carto_attributes).permit(:id, :use_api_carto, :quartiers_prioritaires, :cadastre)
|
||||
end
|
||||
|
||||
def informations
|
||||
@procedure = current_administrateur.procedures.find(params[:id]).decorate
|
||||
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = 'Procédure inéxistante'
|
||||
redirect_to admin_procedures_path
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
class Admin::TypesDeChampController < AdminController
|
||||
before_action :retrieve_procedure
|
||||
|
||||
before_action :procedure_locked?
|
||||
|
||||
def destroy
|
||||
@procedure.types_de_champ.destroy(params[:id])
|
||||
render 'show', format: :js
|
||||
|
|
|
@ -6,15 +6,19 @@ class AdminController < ApplicationController
|
|||
end
|
||||
|
||||
def retrieve_procedure
|
||||
id = params[:procedure_id] || params[:id ]
|
||||
id = params[:procedure_id] || params[:id]
|
||||
|
||||
@procedure = current_administrateur.procedures.find(id)
|
||||
|
||||
if @procedure.locked?
|
||||
render json: {message: 'Procedure locked'}, status: 403
|
||||
end
|
||||
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render json: {message: 'Procedure not found'}, status: 404
|
||||
flash.alert = 'Procédure inéxistante'
|
||||
redirect_to admin_procedures_path, status: 404
|
||||
end
|
||||
|
||||
def procedure_locked?
|
||||
if @procedure.locked?
|
||||
flash.alert = 'Procédure verrouillée'
|
||||
redirect_to admin_procedure_path(id: @procedure.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,38 +1,26 @@
|
|||
class Backoffice::DossiersController < ApplicationController
|
||||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
before_action :authenticate_gestionnaire!
|
||||
|
||||
def index
|
||||
if params[:liste] == 'a_traiter' || params[:liste].nil?
|
||||
@dossiers = current_gestionnaire.dossiers.waiting_for_gestionnaire
|
||||
@dossiers_a_traiter = @dossiers
|
||||
@liste = params[:liste] || 'a_traiter'
|
||||
|
||||
@liste = 'a_traiter'
|
||||
@dossiers = smart_listing_create :dossiers,
|
||||
dossiers_to_display,
|
||||
partial: "backoffice/dossiers/list",
|
||||
array: true
|
||||
|
||||
elsif params[:liste] == 'en_attente'
|
||||
@dossiers = current_gestionnaire.dossiers.waiting_for_user
|
||||
@dossiers_en_attente = @dossiers
|
||||
|
||||
@liste = 'en_attente'
|
||||
|
||||
elsif params[:liste] == 'termine'
|
||||
|
||||
@dossiers = current_gestionnaire.dossiers.termine
|
||||
@dossiers_termine = @dossiers
|
||||
|
||||
@liste = 'termine'
|
||||
end
|
||||
|
||||
@dossiers = @dossiers.paginate(:page => (params[:page] || 1)).decorate
|
||||
total_dossiers_per_state
|
||||
end
|
||||
|
||||
def show
|
||||
initialize_instance_params params[:id]
|
||||
create_dossier_facade params[:id]
|
||||
end
|
||||
|
||||
def search
|
||||
@search_terms = params[:q]
|
||||
|
||||
@dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms)
|
||||
|
||||
unless @dossiers_search.empty?
|
||||
|
@ -47,20 +35,20 @@ class Backoffice::DossiersController < ApplicationController
|
|||
end
|
||||
|
||||
def valid
|
||||
initialize_instance_params params[:dossier_id]
|
||||
create_dossier_facade params[:dossier_id]
|
||||
|
||||
@dossier.next_step! 'gestionnaire', 'valid'
|
||||
@facade.dossier.next_step! 'gestionnaire', 'valid'
|
||||
flash.notice = 'Dossier confirmé avec succès.'
|
||||
|
||||
NotificationMailer.dossier_validated(@dossier).deliver_now!
|
||||
NotificationMailer.dossier_validated(@facade.dossier).deliver_now!
|
||||
|
||||
render 'show'
|
||||
end
|
||||
|
||||
def close
|
||||
initialize_instance_params params[:dossier_id]
|
||||
create_dossier_facade params[:dossier_id]
|
||||
|
||||
@dossier.next_step! 'gestionnaire', 'close'
|
||||
@facade.dossier.next_step! 'gestionnaire', 'close'
|
||||
flash.notice = 'Dossier traité avec succès.'
|
||||
|
||||
render 'show'
|
||||
|
@ -68,25 +56,36 @@ class Backoffice::DossiersController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
def total_dossiers_per_state
|
||||
@dossiers_a_traiter_total = !@dossiers_a_traiter.nil? ? @dossiers_a_traiter.size : current_gestionnaire.dossiers.waiting_for_gestionnaire.size
|
||||
@dossiers_en_attente_total = !@dossiers_en_attente.nil? ? @dossiers_en_attente.size : current_gestionnaire.dossiers.waiting_for_user.size
|
||||
@dossiers_termine_total = !@dossiers_termine.nil? ? @dossiers_termine.size : current_gestionnaire.dossiers.termine.size
|
||||
def dossiers_to_display
|
||||
{'a_traiter' => waiting_for_gestionnaire,
|
||||
'en_attente' => waiting_for_user,
|
||||
'termine' => termine}[@liste]
|
||||
end
|
||||
|
||||
def initialize_instance_params dossier_id
|
||||
@dossier = Dossier.where(archived: false).find(dossier_id)
|
||||
@entreprise = @dossier.entreprise.decorate
|
||||
@etablissement = @dossier.etablissement
|
||||
@pieces_justificatives = @dossier.pieces_justificatives
|
||||
@commentaires = @dossier.ordered_commentaires
|
||||
@commentaires = @commentaires.all.decorate
|
||||
@commentaire_email = current_gestionnaire.email
|
||||
def waiting_for_gestionnaire
|
||||
@a_traiter_class = (@liste == 'a_traiter' ? 'active' : '')
|
||||
@waiting_for_gestionnaire ||= current_gestionnaire.dossiers.waiting_for_gestionnaire
|
||||
end
|
||||
|
||||
@procedure = @dossier.procedure
|
||||
def waiting_for_user
|
||||
@en_attente_class = (@liste == 'en_attente' ? 'active' : '')
|
||||
@waiting_for_user ||= current_gestionnaire.dossiers.waiting_for_user
|
||||
end
|
||||
|
||||
def termine
|
||||
@termine_class = (@liste == 'termine' ? 'active' : '')
|
||||
@termine ||= current_gestionnaire.dossiers.termine
|
||||
end
|
||||
|
||||
def total_dossiers_per_state
|
||||
@dossiers_a_traiter_total = waiting_for_gestionnaire.count
|
||||
@dossiers_en_attente_total = waiting_for_user.count
|
||||
@dossiers_termine_total = termine.count
|
||||
end
|
||||
|
||||
def create_dossier_facade dossier_id
|
||||
@facade = DossierFacades.new dossier_id, current_gestionnaire.email
|
||||
|
||||
@dossier = @dossier.decorate
|
||||
@champs = @dossier.ordered_champs
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(controller: '/backoffice')
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
class DemoController < ApplicationController
|
||||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
def index
|
||||
@procedures = Procedure.where(archived: false).order('libelle ASC').decorate
|
||||
smart_listing_create :procedures,
|
||||
Procedure.where(archived: false),
|
||||
partial: "demo/list",
|
||||
array: true
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -23,7 +23,7 @@ class FranceConnect::EntrepriseController < ApplicationController
|
|||
|
||||
sign_in @user
|
||||
|
||||
@user.loged_in_with_france_connect = true
|
||||
@user.loged_in_with_france_connect = 'entreprise'
|
||||
@user.save
|
||||
|
||||
redirect_to stored_location_for(current_user) || signed_in_root_path(current_user)
|
||||
|
|
91
app/controllers/france_connect/particulier_controller.rb
Normal file
91
app/controllers/france_connect/particulier_controller.rb
Normal file
|
@ -0,0 +1,91 @@
|
|||
class FranceConnect::ParticulierController < ApplicationController
|
||||
def login
|
||||
client = FranceConnectParticulierClient.new
|
||||
|
||||
session[:state] = SecureRandom.hex(16)
|
||||
session[:nonce] = SecureRandom.hex(16)
|
||||
|
||||
authorization_uri = client.authorization_uri(
|
||||
scope: [:profile, :email],
|
||||
state: session[:state],
|
||||
nonce: session[:nonce]
|
||||
)
|
||||
redirect_to authorization_uri
|
||||
end
|
||||
|
||||
def new
|
||||
return redirect_to root_path if france_connect_particulier_id_blank?
|
||||
|
||||
@user = (User.new create_user_params).decorate
|
||||
end
|
||||
|
||||
def create
|
||||
user = User.new create_user_params
|
||||
user.password = Devise.friendly_token[0, 20]
|
||||
|
||||
unless user.valid?
|
||||
flash.alert = 'Email non valide'
|
||||
return redirect_to france_connect_particulier_new_path user: params[:user]
|
||||
end
|
||||
|
||||
user.save
|
||||
connect_france_connect_particulier user
|
||||
end
|
||||
|
||||
def check_email
|
||||
return create if User.find_by_email(params[:user][:email]).nil?
|
||||
return redirect_to root_path if france_connect_particulier_id_blank?
|
||||
|
||||
unless params[:user][:password].nil?
|
||||
user = User.find_by_email(params[:user][:email])
|
||||
valid_password = user.valid_password?(params[:user][:password])
|
||||
|
||||
if valid_password
|
||||
user.update_attributes create_user_params
|
||||
return connect_france_connect_particulier user
|
||||
else
|
||||
flash.now.alert = 'Mot de passe invalide'
|
||||
end
|
||||
end
|
||||
@user = (User.new create_user_params).decorate
|
||||
end
|
||||
|
||||
def callback
|
||||
return redirect_to new_user_session_path unless params.has_key?(:code)
|
||||
|
||||
user_infos = FranceConnectService.retrieve_user_informations_particulier(params[:code])
|
||||
|
||||
unless user_infos.nil?
|
||||
user = User.find_for_france_connect_particulier user_infos
|
||||
|
||||
if user.nil?
|
||||
return redirect_to france_connect_particulier_new_path(user: user_infos)
|
||||
end
|
||||
|
||||
connect_france_connect_particulier user
|
||||
end
|
||||
rescue Rack::OAuth2::Client::Error => e
|
||||
Rails.logger.error e.message
|
||||
flash.alert = t('errors.messages.france_connect.connexion')
|
||||
redirect_to(new_user_session_path)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_user_params
|
||||
params.require(:user).permit(:france_connect_particulier_id, :gender, :given_name, :family_name, :birthdate, :birthplace, :email)
|
||||
end
|
||||
|
||||
def france_connect_particulier_id_blank?
|
||||
redirect_to root_path if params[:user][:france_connect_particulier_id].blank?
|
||||
end
|
||||
|
||||
def connect_france_connect_particulier user
|
||||
sign_in user
|
||||
|
||||
user.loged_in_with_france_connect = 'particulier'
|
||||
user.save
|
||||
|
||||
redirect_to stored_location_for(current_user) || signed_in_root_path(current_user)
|
||||
end
|
||||
end
|
|
@ -45,7 +45,7 @@ class Users::CarteController < UsersController
|
|||
end
|
||||
|
||||
def get_position
|
||||
tmp_position = Carto::Geocodeur.convert_adresse_to_point(current_user_dossier.etablissement.adresse.gsub("\r\n", ' '))
|
||||
tmp_position = Carto::Geocodeur.convert_adresse_to_point(current_user_dossier.etablissement.geo_adresse)
|
||||
|
||||
if !tmp_position.point.nil?
|
||||
render json: {lon: tmp_position.point.x.to_s, lat: tmp_position.point.y.to_s, dossier_id: params[:dossier_id]}
|
||||
|
|
|
@ -1,31 +1,20 @@
|
|||
class Users::DossiersController < UsersController
|
||||
include SmartListing::Helper::ControllerExtensions
|
||||
helper SmartListing::Helper
|
||||
|
||||
before_action :authenticate_user!
|
||||
before_action :check_siret, only: :create
|
||||
|
||||
def index
|
||||
order = 'DESC'
|
||||
|
||||
if params[:liste] == 'a_traiter' || params[:liste].nil?
|
||||
@dossiers = current_user.dossiers.waiting_for_user order
|
||||
@dossiers_a_traiter = @dossiers
|
||||
@liste = params[:liste] || 'a_traiter'
|
||||
|
||||
@liste = 'a_traiter'
|
||||
@dossiers = smart_listing_create :dossiers,
|
||||
dossiers_to_display,
|
||||
partial: "users/dossiers/list",
|
||||
array: true
|
||||
|
||||
elsif params[:liste] == 'en_attente'
|
||||
@dossiers = current_user.dossiers.waiting_for_gestionnaire order
|
||||
@dossiers_en_attente = @dossiers
|
||||
|
||||
@liste = 'en_attente'
|
||||
|
||||
elsif params[:liste] == 'termine'
|
||||
|
||||
@dossiers = current_user.dossiers.termine order
|
||||
@dossiers_termine = @dossiers
|
||||
|
||||
@liste = 'termine'
|
||||
end
|
||||
|
||||
@dossiers = @dossiers.paginate(:page => (params[:page] || 1)).decorate
|
||||
total_dossiers_per_state
|
||||
end
|
||||
|
||||
|
@ -40,46 +29,53 @@ class Users::DossiersController < UsersController
|
|||
end
|
||||
|
||||
def show
|
||||
@dossier = current_user_dossier params[:id]
|
||||
@facade = DossierFacades.new params[:id], current_user.email
|
||||
|
||||
@etablissement = @dossier.etablissement
|
||||
@entreprise = @dossier.entreprise.decorate
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for users_dossiers_path
|
||||
end
|
||||
|
||||
def create
|
||||
@etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
||||
@entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
||||
|
||||
etablissement = Etablissement.new(SIADE::EtablissementAdapter.new(siret).to_params)
|
||||
entreprise = Entreprise.new(SIADE::EntrepriseAdapter.new(siren).to_params)
|
||||
rna_information = SIADE::RNAAdapter.new(siret).to_params
|
||||
exercices = SIADE::ExercicesAdapter.new(siret).to_params
|
||||
mandataires_sociaux = SIADE::MandatairesSociauxAdapter.new(siren).to_params
|
||||
|
||||
unless exercices.nil?
|
||||
exercices.each_value do |exercice|
|
||||
exercice = Exercice.new(exercice)
|
||||
exercice.etablissement = @etablissement
|
||||
exercice.etablissement = etablissement
|
||||
exercice.save
|
||||
end
|
||||
end
|
||||
mandataire_social = false
|
||||
|
||||
@dossier = Dossier.create(user: current_user, state: 'draft', procedure_id: create_params[:procedure_id])
|
||||
mandataires_sociaux.each do |k, mandataire|
|
||||
break mandataire_social = true if !current_user.france_connect_particulier_id.nil? &&
|
||||
mandataire[:nom] == current_user.family_name &&
|
||||
mandataire[:prenom] == current_user.given_name &&
|
||||
mandataire[:date_naissance_timestamp] == current_user.birthdate.to_time.to_i
|
||||
|
||||
@entreprise.dossier = @dossier
|
||||
@entreprise.save
|
||||
end
|
||||
|
||||
dossier = Dossier.create(user: current_user, state: 'draft', procedure_id: create_params[:procedure_id], mandataire_social: mandataire_social)
|
||||
|
||||
entreprise.dossier = dossier
|
||||
entreprise.save
|
||||
|
||||
unless rna_information.nil?
|
||||
rna_information = RNAInformation.new(rna_information)
|
||||
rna_information.entreprise = @entreprise
|
||||
rna_information.entreprise = entreprise
|
||||
rna_information.save
|
||||
end
|
||||
|
||||
@etablissement.dossier = @dossier
|
||||
@etablissement.entreprise = @entreprise
|
||||
@etablissement.save
|
||||
etablissement.dossier = dossier
|
||||
etablissement.entreprise = entreprise
|
||||
etablissement.save
|
||||
|
||||
redirect_to url_for(controller: :dossiers, action: :show, id: @dossier.id)
|
||||
redirect_to url_for(controller: :dossiers, action: :show, id: dossier.id)
|
||||
|
||||
rescue RestClient::ResourceNotFound
|
||||
errors_valid_siret
|
||||
|
@ -90,27 +86,25 @@ class Users::DossiersController < UsersController
|
|||
end
|
||||
|
||||
def update
|
||||
@facade = DossierFacades.new params[:id], current_user.email
|
||||
|
||||
@dossier = current_user_dossier params[:id]
|
||||
if checked_autorisation_donnees?
|
||||
@dossier.update_attributes(update_params)
|
||||
@facade.dossier.update_attributes(update_params)
|
||||
|
||||
if @dossier.procedure.module_api_carto.use_api_carto
|
||||
redirect_to url_for(controller: :carte, action: :show, dossier_id: @dossier.id)
|
||||
if @facade.dossier.procedure.module_api_carto.use_api_carto
|
||||
redirect_to url_for(controller: :carte, action: :show, dossier_id: @facade.dossier.id)
|
||||
else
|
||||
redirect_to url_for(controller: :description, action: :show, dossier_id: @dossier.id)
|
||||
redirect_to url_for(controller: :description, action: :show, dossier_id: @facade.dossier.id)
|
||||
end
|
||||
else
|
||||
@etablissement = @dossier.etablissement
|
||||
@entreprise = @dossier.entreprise.decorate
|
||||
flash.now.alert = 'Les conditions sont obligatoires.'
|
||||
render 'show'
|
||||
end
|
||||
end
|
||||
|
||||
def archive
|
||||
@dossier = current_user.dossiers.find(params[:dossier_id])
|
||||
@dossier.update_attributes({archived: true})
|
||||
dossier = current_user.dossiers.find(params[:dossier_id])
|
||||
dossier.update_attributes({archived: true})
|
||||
|
||||
flash.notice = 'Dossier archivé'
|
||||
redirect_to users_dossiers_path
|
||||
|
@ -122,6 +116,33 @@ class Users::DossiersController < UsersController
|
|||
|
||||
private
|
||||
|
||||
def dossiers_to_display
|
||||
{'a_traiter' => waiting_for_user,
|
||||
'en_attente' => waiting_for_gestionnaire,
|
||||
'termine' => termine}[@liste]
|
||||
end
|
||||
|
||||
def waiting_for_user
|
||||
@a_traiter_class = (@liste == 'a_traiter' ? 'active' : '')
|
||||
@waiting_for_user ||= current_user.dossiers.waiting_for_user 'DESC'
|
||||
end
|
||||
|
||||
def waiting_for_gestionnaire
|
||||
@en_attente_class = (@liste == 'en_attente' ? 'active' : '')
|
||||
@waiting_for_gestionnaire ||= current_user.dossiers.waiting_for_gestionnaire 'DESC'
|
||||
end
|
||||
|
||||
def termine
|
||||
@termine_class = (@liste == 'termine' ? 'active' : '')
|
||||
@termine ||= current_user.dossiers.termine 'DESC'
|
||||
end
|
||||
|
||||
def total_dossiers_per_state
|
||||
@dossiers_a_traiter_total = waiting_for_user.count
|
||||
@dossiers_en_attente_total = waiting_for_gestionnaire.count
|
||||
@dossiers_termine_total = termine.count
|
||||
end
|
||||
|
||||
def check_siret
|
||||
errors_valid_siret unless Siret.new(siret: siret).valid?
|
||||
end
|
||||
|
@ -135,10 +156,6 @@ class Users::DossiersController < UsersController
|
|||
params.require(:dossier).permit(:autorisation_donnees)
|
||||
end
|
||||
|
||||
def dossier_id_is_present?
|
||||
@dossier_id != ''
|
||||
end
|
||||
|
||||
def checked_autorisation_donnees?
|
||||
update_params[:autorisation_donnees] == '1'
|
||||
end
|
||||
|
@ -151,17 +168,13 @@ class Users::DossiersController < UsersController
|
|||
siret[0..8]
|
||||
end
|
||||
|
||||
def total_dossiers_per_state
|
||||
@dossiers_a_traiter_total = !@dossiers_a_traiter.nil? ? @dossiers_a_traiter.size : current_user.dossiers.waiting_for_user.size
|
||||
@dossiers_en_attente_total = !@dossiers_en_attente.nil? ? @dossiers_en_attente.size : current_user.dossiers.waiting_for_gestionnaire.size
|
||||
@dossiers_termine_total = !@dossiers_termine.nil? ? @dossiers_termine.size : current_user.dossiers.termine.size
|
||||
end
|
||||
|
||||
def create_params
|
||||
params.require(:dossier).permit(:siret, :procedure_id)
|
||||
end
|
||||
|
||||
def error_procedure
|
||||
render :file => "#{Rails.root}/public/404_procedure_not_found.html", :status => 404
|
||||
flash.alert = t('errors.messages.procedure_not_found')
|
||||
|
||||
redirect_to url_for users_dossiers_path
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,36 +1,35 @@
|
|||
class Users::RecapitulatifController < UsersController
|
||||
def show
|
||||
@dossier = current_user_dossier
|
||||
@dossier = @dossier.decorate
|
||||
@procedure = @dossier.procedure
|
||||
@champs = @dossier.ordered_champs
|
||||
|
||||
@commentaires = @dossier.ordered_commentaires
|
||||
@commentaires = @commentaires.all.decorate
|
||||
|
||||
@commentaire_email = current_user.email
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(root_path)
|
||||
create_dossier_facade
|
||||
end
|
||||
|
||||
def initiate
|
||||
show
|
||||
create_dossier_facade
|
||||
|
||||
@dossier.next_step! 'user', 'initiate'
|
||||
@facade.dossier.next_step! 'user', 'initiate'
|
||||
flash.notice = 'Dossier soumis avec succès.'
|
||||
|
||||
render 'show'
|
||||
end
|
||||
|
||||
def submit
|
||||
show
|
||||
create_dossier_facade
|
||||
|
||||
@dossier.next_step! 'user', 'submit'
|
||||
@facade.dossier.next_step! 'user', 'submit'
|
||||
flash.notice = 'Dossier déposé avec succès.'
|
||||
|
||||
NotificationMailer.dossier_submitted(@dossier).deliver_now!
|
||||
NotificationMailer.dossier_submitted(@facade.dossier).deliver_now!
|
||||
|
||||
render 'show'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_dossier_facade
|
||||
@facade = DossierFacades.new current_user_dossier.id, current_user.email
|
||||
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
flash.alert = t('errors.messages.dossier_not_found')
|
||||
redirect_to url_for(root_path)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,6 +2,11 @@ class Users::RegistrationsController < Devise::RegistrationsController
|
|||
# before_filter :configure_sign_up_params, only: [:create]
|
||||
# before_filter :configure_account_update_params, only: [:update]
|
||||
|
||||
def after_sign_up_path_for(resource_or_scope)
|
||||
WelcomeMailer.welcome_email(User.last).deliver_now!
|
||||
super
|
||||
end
|
||||
|
||||
# GET /resource/sign_up
|
||||
# def new
|
||||
# super
|
||||
|
@ -9,9 +14,7 @@ class Users::RegistrationsController < Devise::RegistrationsController
|
|||
|
||||
# POST /resource
|
||||
def create
|
||||
retour = super
|
||||
WelcomeMailer.welcome_email(User.last).deliver_now!
|
||||
retour
|
||||
super
|
||||
end
|
||||
|
||||
# GET /resource/edit
|
||||
|
|
|
@ -1,38 +1,40 @@
|
|||
class Users::SessionsController < Sessions::SessionsController
|
||||
# before_filter :configure_sign_in_params, only: [:create]
|
||||
|
||||
# GET /resource/sign_in
|
||||
# def new
|
||||
# super
|
||||
# end
|
||||
# GET /resource/sign_in
|
||||
# def new
|
||||
# super
|
||||
# end
|
||||
|
||||
#POST /resource/sign_in
|
||||
#POST /resource/sign_in
|
||||
def create
|
||||
super
|
||||
|
||||
current_user.update_attributes(loged_in_with_france_connect: false)
|
||||
current_user.update_attributes(loged_in_with_france_connect: '')
|
||||
end
|
||||
|
||||
# DELETE /resource/sign_out
|
||||
def destroy
|
||||
connected_with_france_connect = current_user.loged_in_with_france_connect
|
||||
current_user.update_attributes(loged_in_with_france_connect: false)
|
||||
current_user.update_attributes(loged_in_with_france_connect: '')
|
||||
|
||||
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
|
||||
set_flash_message :notice, :signed_out if signed_out && is_flashing_format?
|
||||
yield if block_given?
|
||||
|
||||
if connected_with_france_connect
|
||||
if connected_with_france_connect == 'entreprise'
|
||||
redirect_to FRANCE_CONNECT.entreprise_logout_endpoint
|
||||
elsif connected_with_france_connect == 'particulier'
|
||||
redirect_to FRANCE_CONNECT.particulier_logout_endpoint
|
||||
else
|
||||
respond_to_on_destroy
|
||||
end
|
||||
end
|
||||
|
||||
# protected
|
||||
# protected
|
||||
|
||||
# You can put the params you want to permit in the empty array.
|
||||
# def configure_sign_in_params
|
||||
# devise_parameter_sanitizer.for(:sign_in) << :attribute
|
||||
# end
|
||||
# You can put the params you want to permit in the empty array.
|
||||
# def configure_sign_in_params
|
||||
# devise_parameter_sanitizer.for(:sign_in) << :attribute
|
||||
# end
|
||||
end
|
||||
|
|
|
@ -2,7 +2,7 @@ class DossierDecorator < Draper::Decorator
|
|||
delegate :current_page, :per_page, :offset, :total_entries, :total_pages
|
||||
delegate_all
|
||||
|
||||
def date_fr
|
||||
def display_date
|
||||
date_previsionnelle.to_date.strftime('%d/%m/%Y')
|
||||
rescue
|
||||
'dd/mm/YYYY'
|
||||
|
@ -12,7 +12,7 @@ class DossierDecorator < Draper::Decorator
|
|||
updated_at.localtime.strftime('%d/%m/%Y %H:%M')
|
||||
end
|
||||
|
||||
def state_fr
|
||||
def display_state
|
||||
DossierDecorator.case_state_fr state
|
||||
end
|
||||
|
||||
|
@ -27,23 +27,6 @@ class DossierDecorator < Draper::Decorator
|
|||
end
|
||||
|
||||
def self.case_state_fr state=self.state
|
||||
case state
|
||||
when 'draft'
|
||||
'Brouillon'
|
||||
when 'initiated'
|
||||
'Soumis'
|
||||
when 'replied'
|
||||
'Répondu'
|
||||
when 'updated'
|
||||
'Mis à jour'
|
||||
when 'validated'
|
||||
'Validé'
|
||||
when 'submitted'
|
||||
'Déposé'
|
||||
when 'closed'
|
||||
'Traité'
|
||||
else
|
||||
fail 'State not valid'
|
||||
end
|
||||
h.t("activerecord.attributes.dossier.state.#{state}")
|
||||
end
|
||||
end
|
||||
|
|
12
app/decorators/user_decorator.rb
Normal file
12
app/decorators/user_decorator.rb
Normal file
|
@ -0,0 +1,12 @@
|
|||
class UserDecorator < Draper::Decorator
|
||||
delegate_all
|
||||
|
||||
def gender_fr
|
||||
return 'Mr' if gender == 'male'
|
||||
return 'Mme' if gender == 'female'
|
||||
end
|
||||
|
||||
def birthdate_fr
|
||||
birthdate.strftime('%d/%m/%Y')
|
||||
end
|
||||
end
|
40
app/facades/dossier_facades.rb
Normal file
40
app/facades/dossier_facades.rb
Normal file
|
@ -0,0 +1,40 @@
|
|||
class DossierFacades
|
||||
|
||||
#TODO rechercher en fonction de la personne/email
|
||||
def initialize dossier_id, email
|
||||
@dossier = Dossier.where(archived: false).find(dossier_id)
|
||||
@email = email
|
||||
end
|
||||
|
||||
def dossier
|
||||
@dossier.decorate
|
||||
end
|
||||
|
||||
def champs
|
||||
@dossier.ordered_champs
|
||||
end
|
||||
|
||||
def entreprise
|
||||
@dossier.entreprise.decorate
|
||||
end
|
||||
|
||||
def etablissement
|
||||
@dossier.etablissement
|
||||
end
|
||||
|
||||
def pieces_justificatives
|
||||
@dossier.pieces_justificatives
|
||||
end
|
||||
|
||||
def commentaires
|
||||
@dossier.ordered_commentaires.all.decorate
|
||||
end
|
||||
|
||||
def commentaire_email
|
||||
@email
|
||||
end
|
||||
|
||||
def procedure
|
||||
@dossier.procedure
|
||||
end
|
||||
end
|
|
@ -3,4 +3,8 @@ class Etablissement < ActiveRecord::Base
|
|||
belongs_to :entreprise
|
||||
|
||||
has_many :exercices
|
||||
|
||||
def geo_adresse
|
||||
numero_voie.to_s << ' ' << type_voie.to_s << ' ' << nom_voie.to_s << ' ' << complement_adresse.to_s << ' ' << code_postal.to_s << ' ' << localite.to_s
|
||||
end
|
||||
end
|
||||
|
|
17
app/models/france_connect_particulier_client.rb
Normal file
17
app/models/france_connect_particulier_client.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
class FranceConnectParticulierClient < OpenIDConnect::Client
|
||||
|
||||
def initialize params={}
|
||||
super(
|
||||
identifier: FRANCE_CONNECT.particulier_identifier,
|
||||
secret: FRANCE_CONNECT.particulier_secret,
|
||||
|
||||
redirect_uri: FRANCE_CONNECT.particulier_redirect_uri,
|
||||
|
||||
authorization_endpoint: FRANCE_CONNECT.particulier_authorization_endpoint,
|
||||
token_endpoint: FRANCE_CONNECT.particulier_token_endpoint,
|
||||
userinfo_endpoint: FRANCE_CONNECT.particulier_userinfo_endpoint,
|
||||
logout_endpoint: FRANCE_CONNECT.particulier_logout_endpoint
|
||||
)
|
||||
self.authorization_code = params[:code] if params.has_key? :code
|
||||
end
|
||||
end
|
|
@ -1,4 +1,7 @@
|
|||
class User < ActiveRecord::Base
|
||||
enum loged_in_with_france_connect: {particulier: 'particulier',
|
||||
entreprise: 'entreprise'}
|
||||
|
||||
# Include default devise modules. Others available are:
|
||||
# :confirmable, :lockable, :timeoutable and :omniauthable
|
||||
devise :database_authenticatable, :registerable,
|
||||
|
@ -6,13 +9,22 @@ class User < ActiveRecord::Base
|
|||
|
||||
has_many :dossiers
|
||||
|
||||
def self.find_for_france_connect_particulier user_info
|
||||
|
||||
User.find_by(france_connect_particulier_id: user_info[:france_connect_particulier_id])
|
||||
end
|
||||
|
||||
def self.find_for_france_connect email, siret
|
||||
user = User.find_by_email(email)
|
||||
if user.nil?
|
||||
return User.create(email: email, password: Devise.friendly_token[0,20], siret: siret)
|
||||
return User.create(email: email, password: Devise.friendly_token[0, 20], siret: siret)
|
||||
else
|
||||
user.update_attributes(siret: siret)
|
||||
user
|
||||
end
|
||||
end
|
||||
|
||||
def loged_in_with_france_connect?
|
||||
!loged_in_with_france_connect.nil?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,4 +6,15 @@ class FranceConnectService
|
|||
user_info = access_token.userinfo!
|
||||
Hashie::Mash.new user_info.raw_attributes
|
||||
end
|
||||
|
||||
def self.retrieve_user_informations_particulier code
|
||||
client = FranceConnectParticulierClient.new code: code
|
||||
|
||||
access_token = client.access_token!(client_auth_method: :secret)
|
||||
user_info = access_token.userinfo!
|
||||
hash = Hashie::Mash.new user_info.raw_attributes
|
||||
|
||||
hash.france_connect_particulier_id = hash.sub
|
||||
hash
|
||||
end
|
||||
end
|
||||
|
|
41
app/uploaders/downloader.rb
Normal file
41
app/uploaders/downloader.rb
Normal file
|
@ -0,0 +1,41 @@
|
|||
require 'securerandom'
|
||||
|
||||
class Downloader
|
||||
BASE_PATH_DISK = File.join(Rails.root, "public/downloads/")
|
||||
|
||||
def initialize(filename, filename_suffix = '')
|
||||
@filename = filename.to_s
|
||||
@filename_suffix = filename_suffix.empty? ? '' : "_#{filename_suffix}"
|
||||
@extension = @filename.split(/[.]/).last
|
||||
|
||||
generate_random_base_path!
|
||||
|
||||
FileUtils.ln_s @filename, "#{@base_path}/#{@filename_suffix}.#{@extension}"
|
||||
end
|
||||
|
||||
def url
|
||||
@url ||= File.join(TPS::Application::URL, 'downloads', random_folder_name, "#{@filename_suffix}.#{@extension}")
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
attr_accessor :random_folder_name
|
||||
|
||||
def generate_random_base_path!
|
||||
@base_path ||= begin
|
||||
loop do
|
||||
self.random_folder_name = SecureRandom.hex
|
||||
base_path = File.join(BASE_PATH_DISK, self.random_folder_name)
|
||||
|
||||
unless File.directory?(BASE_PATH_DISK)
|
||||
Dir.mkdir(BASE_PATH_DISK)
|
||||
end
|
||||
|
||||
unless File.directory?(base_path)
|
||||
Dir.mkdir(base_path)
|
||||
break base_path
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,14 +1,21 @@
|
|||
%table.table
|
||||
%thead
|
||||
%th#id ID
|
||||
%th#libelle Libellé
|
||||
%th#lien Lien
|
||||
- @procedures.each do |procedure|
|
||||
%tr
|
||||
%td.col-md-1.col-lg-1= procedure.id
|
||||
%td.col-md-6.col-lg-6
|
||||
= link_to(procedure.libelle, "/admin/procedures/#{procedure.id}")
|
||||
%td= link_to procedure.lien, procedure.lien
|
||||
- unless smart_listing.empty?
|
||||
%table.table
|
||||
%thead
|
||||
%th#ID= smart_listing.sortable 'ID', 'id'
|
||||
%th#libelle= smart_listing.sortable 'Libellé', 'libelle'
|
||||
%th#lien Lien
|
||||
|
||||
.pagination
|
||||
= will_paginate @procedures, renderer: BootstrapPagination::Rails
|
||||
- @procedures.each do |procedure|
|
||||
- procedure = procedure.decorate
|
||||
%tr
|
||||
%td.col-md-1.col-lg-1= procedure.id
|
||||
%td.col-md-6.col-lg-6
|
||||
= link_to(procedure.libelle, "/admin/procedures/#{procedure.id}")
|
||||
%td= link_to procedure.lien, procedure.lien
|
||||
|
||||
= smart_listing.paginate
|
||||
= smart_listing.pagination_per_page_links
|
||||
|
||||
- else
|
||||
%h4.center
|
||||
Aucune procédure
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
#onglets
|
||||
%ul.nav.nav-tabs
|
||||
%li{class: "#{'active' if @page == 'active' }"}
|
||||
%li{class: @active_class}
|
||||
%a{:href => "#{url_for :admin_procedures}"}
|
||||
%h5.text-success
|
||||
= "Actives"
|
||||
|
||||
%li{class: "#{'active' if @page == 'archived' }"}
|
||||
%li{class: @archived_class}
|
||||
%a{:href => "#{url_for :admin_procedures_archived}"}
|
||||
%h5{style: 'color: black'}
|
||||
="Archivées"
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
= link_to("Nouvelle procédure", "/admin/procedures/new", class: 'btn btn-success', style: 'float:right; margin-top:2%;')
|
||||
%h1 Gestion des procédures
|
||||
%br
|
||||
|
||||
= render partial: 'onglets'
|
||||
|
||||
= render partial: 'list'
|
|
@ -4,4 +4,4 @@
|
|||
|
||||
= render partial: 'onglets'
|
||||
|
||||
= render partial: 'list'
|
||||
= smart_listing_render :procedures
|
||||
|
|
1
app/views/admin/procedures/index.js.erb
Normal file
1
app/views/admin/procedures/index.js.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= smart_listing_update :procedures %>
|
|
@ -1,30 +1,30 @@
|
|||
#procedure_show
|
||||
%h2.text-info
|
||||
=@procedure.libelle
|
||||
=@facade.procedure.libelle
|
||||
%br
|
||||
|
||||
%ul.nav.nav-tabs
|
||||
%li.active
|
||||
= link_to('Informations', admin_procedure_path(@procedure))
|
||||
= link_to('Informations', admin_procedure_path(@facade.procedure))
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Description', edit_admin_procedure_path(@procedure)) do
|
||||
%li{ class: ('disabled' if @facade.procedure.locked?) }
|
||||
= link_to_unless(@facade.procedure.locked?, 'Description', edit_admin_procedure_path(@facade.procedure)) do
|
||||
= link_to('Description', '#')
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Champs', admin_procedure_types_de_champ_path(@procedure)) do
|
||||
%li{ class: ('disabled' if @facade.procedure.locked?) }
|
||||
= link_to_unless(@facade.procedure.locked?, 'Champs', admin_procedure_types_de_champ_path(@facade.procedure)) do
|
||||
= link_to('Champs', '#')
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure)) do
|
||||
%li{ class: ('disabled' if @facade.procedure.locked?) }
|
||||
= link_to_unless(@facade.procedure.locked?, 'Pièces justificatives', admin_procedure_pieces_justificatives_path(@facade.procedure)) do
|
||||
= link_to('Pièces justificatives', '#')
|
||||
|
||||
|
||||
%li{style:'float:right'}
|
||||
= form_tag admin_procedure_archive_path(procedure_id: @procedure.id, archive: !@procedure.archived?), method: :put do
|
||||
= form_tag admin_procedure_archive_path(procedure_id: @facade.procedure.id, archive: !@facade.procedure.archived?), method: :put do
|
||||
%button#archive.btn.btn-nav.text-info{type: :button}
|
||||
%i.fa.fa-eraser
|
||||
- if @procedure.archived
|
||||
- if @facade.procedure.archived
|
||||
= 'Réactiver'
|
||||
- else
|
||||
= 'Archiver'
|
||||
|
@ -36,7 +36,7 @@
|
|||
%i.fa.fa-remove
|
||||
Annuler
|
||||
|
||||
- if @procedure.locked?
|
||||
- if @facade.procedure.locked?
|
||||
#procedure_locked.center
|
||||
%h5
|
||||
.label.label-info La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier
|
||||
|
@ -44,9 +44,35 @@
|
|||
%div
|
||||
%h3 Lien procédure
|
||||
%div{style:'margin-left:3%'}
|
||||
= @procedure.lien
|
||||
= @facade.procedure.lien
|
||||
|
||||
%br
|
||||
%h3 Détails
|
||||
|
||||
.row{style:'margin-right:3%; margin-left:3%;'}
|
||||
.description.col-md-4.col-lg-4
|
||||
%h4.text-info
|
||||
= @facade.procedure.libelle
|
||||
|
||||
= @facade.procedure.description
|
||||
.champs.col-md-4.col-lg-4
|
||||
%h4.text-info
|
||||
Champs
|
||||
.badge.progress-bar-info
|
||||
= @facade.procedure.types_de_champ.size
|
||||
- @facade.procedure.types_de_champ.each do |champ|
|
||||
= champ.libelle
|
||||
%br
|
||||
|
||||
.pieces_justificatives.col-md-4.col-lg-4
|
||||
%h4.text-info
|
||||
Pièces justificatives
|
||||
.badge.progress-bar-info
|
||||
= @facade.procedure.types_de_piece_justificative.size
|
||||
- @facade.procedure.types_de_piece_justificative.each do |piece_justificative|
|
||||
= piece_justificative.libelle
|
||||
%br
|
||||
%br
|
||||
%h3 Dossiers
|
||||
|
||||
.row
|
||||
|
@ -73,7 +99,7 @@
|
|||
%ul
|
||||
- @facade.dossiers_archived_by_state_total.each do |dossier|
|
||||
%li
|
||||
= dossier.state_fr
|
||||
= dossier.display_state
|
||||
\:
|
||||
= dossier.total
|
||||
- else
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
%table.table
|
||||
%thead.row
|
||||
%th.col-md-4.col-lg-4 Procédure
|
||||
%th.col-md-4.col-lg-4 Dossier
|
||||
%th.col-md-2.col-lg-2 État
|
||||
%th.col-md-2.col-lg-2 Date de mise à jour
|
||||
- @dossiers.each do |dossier|
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.state_fr
|
||||
%td= dossier.last_update
|
||||
- unless smart_listing.empty?
|
||||
%table.table
|
||||
%thead.row
|
||||
%th.col-md-4.col-lg-4= smart_listing.sortable 'Procédure', 'procedure.libelle'
|
||||
%th.col-md-4.col-lg-4= smart_listing.sortable 'Dossier', 'nom_projet'
|
||||
%th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state'
|
||||
%th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at'
|
||||
|
||||
.pagination
|
||||
= will_paginate @dossiers, renderer: BootstrapPagination::Rails
|
||||
- @dossiers.each do |dossier|
|
||||
- dossier = dossier.decorate
|
||||
%tr
|
||||
%td= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, "/backoffice/dossiers/#{dossier.id}")
|
||||
%td= dossier.display_state
|
||||
%td= dossier.last_update
|
||||
|
||||
= smart_listing.paginate
|
||||
= smart_listing.pagination_per_page_links
|
||||
- else
|
||||
%h4.center
|
||||
Aucun dossier
|
||||
|
|
|
@ -3,24 +3,27 @@
|
|||
|
||||
#onglets
|
||||
%ul.nav.nav-tabs
|
||||
%li{ class: (@dossiers.active_class_a_traiter(@liste) unless @dossiers.nil?) }
|
||||
%li{ class: (@a_traiter_class) }
|
||||
%a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}"}
|
||||
%h5.text-danger
|
||||
= "À traiter "
|
||||
.badge.progress-bar-danger
|
||||
=@dossiers_a_traiter_total
|
||||
%li{ class: (@dossiers.active_class_en_attente(@liste) unless @dossiers.nil?) }
|
||||
|
||||
%li{ class: (@en_attente_class) }
|
||||
%a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}"}
|
||||
%h5.text-info
|
||||
="En attente "
|
||||
.badge.progress-bar-info
|
||||
=@dossiers_en_attente_total
|
||||
%li{ class: (@dossiers.active_class_termine(@liste) unless @dossiers.nil?) }
|
||||
|
||||
%li{ class: (@termine_class) }
|
||||
%a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}"}
|
||||
%h5.text-success
|
||||
= "Terminé"
|
||||
.badge.progress-bar-success
|
||||
=@dossiers_termine_total
|
||||
|
||||
%li#search{class: "#{'active' unless @dossiers_search.nil?}", style:'float:right'}
|
||||
%a
|
||||
= form_tag(backoffice_dossiers_search_url, method: :get) do
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#backoffice_index
|
||||
= render partial: 'onglets'
|
||||
|
||||
= render partial: 'list'
|
||||
= smart_listing_render :dossiers
|
||||
|
|
1
app/views/backoffice/dossiers/index.js.erb
Normal file
1
app/views/backoffice/dossiers/index.js.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= smart_listing_update :dossiers %>
|
|
@ -19,7 +19,7 @@
|
|||
%td.col-md-2.col-lg-2
|
||||
= @dossier.etablissement.siret
|
||||
%td.col-md-1.col-lg-1{class: @dossier.state_color_class}
|
||||
= @dossier.state_fr
|
||||
= @dossier.display_state
|
||||
%br
|
||||
|
||||
- if @dossiers_search.empty? && @dossier.nil?
|
||||
|
@ -44,7 +44,7 @@
|
|||
%td= dossier.entreprise.raison_sociale
|
||||
%td= dossier.user.email
|
||||
%td= dossier.etablissement.siret
|
||||
%td{class: dossier.state_color_class}= dossier.state_fr
|
||||
%td{class: dossier.state_color_class}= dossier.display_state
|
||||
|
||||
.pagination
|
||||
= will_paginate @dossiers_search, renderer: BootstrapPagination::Rails
|
|
@ -1,9 +1,9 @@
|
|||
#backoffice_dossier_show
|
||||
%h1#dossier_id.text-info{ :style => 'text-align:right'}
|
||||
= "Dossier n°#{@dossier.id}"
|
||||
= "Dossier n°#{@facade.dossier.id}"
|
||||
|
||||
%h3{:class => 'text-success', :style => 'text-align:right'}
|
||||
= @dossier.state_fr
|
||||
= @facade.dossier.display_state
|
||||
|
||||
|
||||
= render partial: '/dossiers/infos_entreprise'
|
||||
|
@ -17,5 +17,5 @@
|
|||
%br
|
||||
|
||||
-#%script{type: 'text/javascript'}
|
||||
-# ="url_carte = '#{@dossier.id}/'"
|
||||
-# ="ref_dossier = '#{@dossier.ref_dossier_carto}'"
|
||||
-# ="url_carte = '#{@facade.dossier.id}/'"
|
||||
-# ="ref_dossier = '#{@facade.dossier.ref_dossier_carto}'"
|
||||
|
|
27
app/views/demo/_list.html.haml
Normal file
27
app/views/demo/_list.html.haml
Normal file
|
@ -0,0 +1,27 @@
|
|||
- unless smart_listing.empty?
|
||||
%table.table
|
||||
%tr
|
||||
%th{colspan: 4}
|
||||
%h4 Lien vers les procédures TPS
|
||||
%tr
|
||||
%th= smart_listing.sortable 'ID', 'id'
|
||||
%th= smart_listing.sortable 'Titre', 'libelle'
|
||||
%th Description
|
||||
%th= smart_listing.sortable 'Organisation', 'organisation'
|
||||
|
||||
- smart_listing.collection.each do |procedure|
|
||||
- procedure = procedure.decorate
|
||||
%tr
|
||||
%td
|
||||
= procedure.id
|
||||
%td.col-md-4.col-lg-4
|
||||
= link_to procedure.libelle, procedure.lien
|
||||
%td
|
||||
= procedure.description
|
||||
%td.col-md-3.col-lg-3
|
||||
= procedure.organisation
|
||||
|
||||
= smart_listing.paginate
|
||||
= smart_listing.pagination_per_page_links
|
||||
- else
|
||||
%p Aucune procédure trouvée
|
|
@ -1,20 +1 @@
|
|||
%table.table
|
||||
%tr
|
||||
%th{colspan: 4}
|
||||
%h4 Lien vers les procédures TPS
|
||||
%tr
|
||||
%th ID
|
||||
%th Titre
|
||||
%th Description
|
||||
%th Organisation
|
||||
|
||||
- @procedures.each do |procedure|
|
||||
%tr
|
||||
%td
|
||||
= procedure.id
|
||||
%td.col-md-4.col-lg-4
|
||||
= link_to procedure.libelle, procedure.lien
|
||||
%td
|
||||
= procedure.description
|
||||
%td.col-md-3.col-lg-3
|
||||
= procedure.organisation
|
||||
= smart_listing_render :procedures
|
1
app/views/demo/index.js.erb
Normal file
1
app/views/demo/index.js.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= smart_listing_update :procedures %>
|
|
@ -3,33 +3,43 @@
|
|||
%div.row
|
||||
.col-lg-6.col-md-6
|
||||
%h3.text-info
|
||||
= @dossier.nom_projet
|
||||
= @facade.dossier.nom_projet
|
||||
%h4
|
||||
= @dossier.procedure.libelle
|
||||
= @facade.dossier.procedure.libelle
|
||||
|
||||
.description
|
||||
- begin
|
||||
- @dossier.description.split(/(?:\n\r?|\r\n?')/).each do |line|
|
||||
- @facade.dossier.description.split(/(?:\n\r?|\r\n?')/).each do |line|
|
||||
= line
|
||||
%br
|
||||
- rescue
|
||||
=''
|
||||
- if @dossier.procedure.module_api_carto.use_api_carto
|
||||
|
||||
- if @facade.dossier.mandataire_social && gestionnaire_signed_in?
|
||||
.mandataire_social.text-success.center
|
||||
%br
|
||||
="Il est probable que le soumissionnaire du dossier soit un des mandataire social de l'entreprise ("
|
||||
%b
|
||||
="#{@facade.dossier.user.given_name} #{@facade.dossier.user.family_name}"
|
||||
=")"
|
||||
|
||||
- if @facade.dossier.procedure.module_api_carto.use_api_carto
|
||||
.col-lg-6.col-md-6
|
||||
|
||||
#map.mini{class: @dossier.class_qp_active}
|
||||
#map.mini{class: @facade.dossier.class_qp_active}
|
||||
|
||||
%input{id: 'json_latlngs', type:'hidden', value: "#{@dossier.json_latlngs}"}
|
||||
%input{id: 'quartier_prioritaires', type:'hidden', value: "#{@dossier.quartier_prioritaires.to_json}"}
|
||||
%input{id: 'json_latlngs', type:'hidden', value: "#{@facade.dossier.json_latlngs}"}
|
||||
%input{id: 'quartier_prioritaires', type:'hidden', value: "#{@facade.dossier.quartier_prioritaires.to_json}"}
|
||||
%script{type: 'text/javascript'}
|
||||
= "var dossier_id =#{@dossier.id}"
|
||||
= "var dossier_id =#{@facade.dossier.id}"
|
||||
initCarto();
|
||||
|
||||
%br
|
||||
-unless @champs.nil?
|
||||
-unless @facade.champs.nil?
|
||||
.row
|
||||
.col-lg-6.col-md-6
|
||||
%table.table#liste_champs
|
||||
-@champs.each do |champ|
|
||||
-@facade.champs.each do |champ|
|
||||
%tr
|
||||
%th{ style: 'width:25%' }
|
||||
=champ.libelle
|
||||
|
@ -41,20 +51,20 @@
|
|||
|
||||
%div.row{style: 'text-align:right'}
|
||||
-unless gestionnaire_signed_in?
|
||||
-if !@dossier.validated? && !@dossier.submitted? && !@dossier.closed?
|
||||
-if @dossier.procedure.module_api_carto.use_api_carto
|
||||
%a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@dossier.id}/carte"}
|
||||
-if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed?
|
||||
-if @facade.dossier.procedure.module_api_carto.use_api_carto
|
||||
%a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"}
|
||||
= 'Editer ma carte'
|
||||
%a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@dossier.id}/description"}
|
||||
%a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"}
|
||||
= 'Editer mon dossier'
|
||||
|
||||
-unless user_signed_in?
|
||||
-if !@dossier.validated? && !@dossier.submitted? && !@dossier.closed?
|
||||
= form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
|
||||
-if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed?
|
||||
= form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do
|
||||
%button#action_button.btn.btn-success
|
||||
= 'Valider le dossier'
|
||||
-elsif @dossier.submitted?
|
||||
= form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
|
||||
-elsif @facade.dossier.submitted?
|
||||
= form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do
|
||||
%button#action_button.btn.btn-success
|
||||
= 'Traiter le dossier'
|
||||
|
||||
|
|
|
@ -1,37 +1,37 @@
|
|||
.col-md-12
|
||||
%h4
|
||||
= @entreprise.raison_sociale_or_name
|
||||
= @facade.entreprise.raison_sociale_or_name
|
||||
|
||||
.row#infos_entreprise
|
||||
.col-lg-6.col-md-6
|
||||
%dl.dl-horizontal
|
||||
%dt Siret :
|
||||
%dd.text-success= @etablissement.siret
|
||||
%dd.text-success= @facade.etablissement.siret
|
||||
|
||||
- if @etablissement.siret != @entreprise.siret_siege_social
|
||||
- if @facade.etablissement.siret != @facade.entreprise.siret_siege_social
|
||||
%dt SIRET siège social :
|
||||
%dd= @entreprise.siret_siege_social
|
||||
%dd= @facade.entreprise.siret_siege_social
|
||||
|
||||
%dt Forme juridique :
|
||||
%dd= @entreprise.forme_juridique
|
||||
%dd= @facade.entreprise.forme_juridique
|
||||
|
||||
%dt Libellé naf :
|
||||
%dd= @etablissement.libelle_naf
|
||||
%dd= @facade.etablissement.libelle_naf
|
||||
|
||||
%dt Code naf :
|
||||
%dd= @etablissement.naf
|
||||
%dd= @facade.etablissement.naf
|
||||
|
||||
%dt Date de création :
|
||||
%dd= Time.at(@entreprise.date_creation).strftime "%d-%m-%Y"
|
||||
%dd= Time.at(@facade.entreprise.date_creation).strftime "%d-%m-%Y"
|
||||
|
||||
%dt Effectif organisation :
|
||||
%dd= @entreprise.effectif
|
||||
%dd= @facade.entreprise.effectif
|
||||
|
||||
%dt Code effectif :
|
||||
%dd= @entreprise.code_effectif_entreprise
|
||||
%dd= @facade.entreprise.code_effectif_entreprise
|
||||
|
||||
%dt Numéro TVA intracommunautaire :
|
||||
%dd= @entreprise.numero_tva_intracommunautaire
|
||||
%dd= @facade.entreprise.numero_tva_intracommunautaire
|
||||
|
||||
|
||||
.col-lg-6.col-md-6
|
||||
|
@ -39,21 +39,21 @@
|
|||
%dt Adresse :
|
||||
%dd
|
||||
%address
|
||||
- @etablissement.adresse.split("\n").each do |line|
|
||||
- @facade.etablissement.adresse.split("\n").each do |line|
|
||||
= line
|
||||
%br
|
||||
|
||||
%dt Capital social :
|
||||
%dd= @entreprise.pretty_capital_social
|
||||
%dd= @facade.entreprise.pretty_capital_social
|
||||
|
||||
%dt Exercices :
|
||||
%dd
|
||||
%address
|
||||
- @etablissement.exercices.each_with_index do |exercice, index|
|
||||
- @facade.etablissement.exercices.each_with_index do |exercice, index|
|
||||
%strong
|
||||
= "#{exercice.dateFinExercice.year} : "
|
||||
= number_to_currency(exercice.ca)
|
||||
%br
|
||||
|
||||
- unless @entreprise.rna_information.nil?
|
||||
- unless @facade.entreprise.rna_information.nil?
|
||||
= render partial: '/dossiers/infos_rna'
|
|
@ -2,22 +2,22 @@
|
|||
.col-lg-6.col-md-6
|
||||
%dl.dl-horizontal
|
||||
%dt Association ID :
|
||||
%dd.text-success= @entreprise.rna_information.association_id
|
||||
%dd.text-success= @facade.entreprise.rna_information.association_id
|
||||
|
||||
%dt Titre :
|
||||
%dd= @entreprise.rna_information.titre
|
||||
%dd= @facade.entreprise.rna_information.titre
|
||||
|
||||
%dt Objet :
|
||||
%dd= @entreprise.rna_information.objet
|
||||
%dd= @facade.entreprise.rna_information.objet
|
||||
|
||||
.col-lg-6.col-md-6
|
||||
%dl.dl-horizontal
|
||||
%dt Date création :
|
||||
%dd= @entreprise.rna_information.date_creation
|
||||
%dd= @facade.entreprise.rna_information.date_creation
|
||||
|
||||
%dt Capital publication :
|
||||
%dd= @entreprise.rna_information.date_publication
|
||||
%dd= @facade.entreprise.rna_information.date_publication
|
||||
|
||||
%dt Capital déclaration :
|
||||
%dd= @entreprise.rna_information.date_declaration
|
||||
%dd= @facade.entreprise.rna_information.date_declaration
|
||||
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
#pieces_justificatives
|
||||
-#%h3.text-info Liste des pièces justificatives
|
||||
-#%br
|
||||
|
||||
%table.table
|
||||
-if @procedure.lien_demarche != nil
|
||||
-if @facade.procedure.lien_demarche != nil
|
||||
%tr{id: "piece_justificative_0"}
|
||||
%th{class:'col-lg-6'}
|
||||
='CERFA'
|
||||
-if @procedure.lien_demarche != nil
|
||||
%a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Lien CERFA
|
||||
='Formulaire'
|
||||
%td.col-lg-6.col-md-6
|
||||
- if !@dossier.cerfa.empty?
|
||||
- if !@facade.dossier.cerfa.empty?
|
||||
- if user_signed_in?
|
||||
= 'Pièce fournie'
|
||||
- elsif gestionnaire_signed_in?
|
||||
%a{ href: "#{@dossier.cerfa.content}", target: '_blank' } Consulter
|
||||
%a{ href: "#{(Downloader.new @facade.dossier.cerfa.content, 'CERFA').url}", target: '_blank' } Consulter
|
||||
- else
|
||||
= 'Pièce non fournie'
|
||||
|
||||
- @dossier.pieces_justificatives.each do |piece_justificative|
|
||||
- @facade.dossier.pieces_justificatives.each do |piece_justificative|
|
||||
%tr{ id: "piece_justificative_#{piece_justificative.type}" }
|
||||
%th.col-lg-6
|
||||
= piece_justificative.libelle
|
||||
|
@ -25,7 +24,10 @@
|
|||
- if piece_justificative.api_entreprise
|
||||
%span.text-success Nous l'avons récupéré pour vous.
|
||||
- elsif !piece_justificative.empty?
|
||||
%a{ href: "#{piece_justificative.content}", target: '_blank' } Consulter
|
||||
- if user_signed_in?
|
||||
= 'Pièce fournie'
|
||||
- elsif gestionnaire_signed_in?
|
||||
%a{ href: "#{(Downloader.new piece_justificative.content, piece_justificative.type_de_piece_justificative.libelle).url}", target: '_blank' } Consulter
|
||||
- else
|
||||
= 'Pièce non fournie'
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%div.row
|
||||
= render partial: '/dossiers/infos_entreprise'
|
||||
%br
|
||||
= form_for @dossier, url: { controller: '/users/dossiers', action: :update } do |f|
|
||||
= form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f|
|
||||
%label{ style:'font-weight:normal' }
|
||||
= f.check_box :autorisation_donnees
|
||||
J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles.
|
||||
|
|
28
app/views/france_connect/particulier/check_email.html.haml
Normal file
28
app/views/france_connect/particulier/check_email.html.haml
Normal file
|
@ -0,0 +1,28 @@
|
|||
%h2.text-info
|
||||
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
|
||||
France Connect - Particulier
|
||||
|
||||
%h3 Nouvelle connexion
|
||||
%h4.text-warning{style:'margin-left: 20px'} Email déjà utilisé
|
||||
|
||||
%br
|
||||
%p
|
||||
%h4.center Nous vous avons trouvé un compte qui utilise déjà cette adresse email.
|
||||
%p.center
|
||||
Afin d'associer ce compte à votre identifiant France Connect, merci de saisir votre mot de passe TPS.
|
||||
%br
|
||||
.center
|
||||
#france_connect_particulier_email
|
||||
= form_for @user, url: {controller: 'france_connect/particulier', action: :check_email}, method: :post do |f|
|
||||
.form-group.form-group-lg
|
||||
= f.text_field :email, class: "form-control", placeholder: "Entrez votre email", readonly: 'readonly'
|
||||
%br
|
||||
= f.password_field :password, class: "form-control", placeholder: "Entrez votre mot de passe"
|
||||
= f.hidden_field :email
|
||||
= f.hidden_field :gender
|
||||
= f.hidden_field :given_name
|
||||
= f.hidden_field :family_name
|
||||
= f.hidden_field :birthdate
|
||||
= f.hidden_field :birthplace
|
||||
= f.hidden_field :france_connect_particulier_id
|
||||
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp'
|
36
app/views/france_connect/particulier/new.html.haml
Normal file
36
app/views/france_connect/particulier/new.html.haml
Normal file
|
@ -0,0 +1,36 @@
|
|||
%h2.text-info
|
||||
= image_tag('logo_FC_02_small.png', style: 'height: 55px')
|
||||
France Connect - Particulier
|
||||
|
||||
%h3 Nouvelle connexion
|
||||
|
||||
%br
|
||||
%p
|
||||
Nous vous avons correctement identifié comme étant
|
||||
|
||||
%h4.text-info.center
|
||||
%strong
|
||||
= @user.gender_fr
|
||||
= @user.given_name
|
||||
= @user.family_name
|
||||
né le
|
||||
%strong
|
||||
= @user.birthdate_fr
|
||||
|
||||
%br
|
||||
%h4
|
||||
Afin de finaliser votre première connexion à TPS, merci de saisir un email valide :
|
||||
%br
|
||||
|
||||
.center
|
||||
#france_connect_particulier_email
|
||||
= form_for @user, url: {controller: 'france_connect/particulier', action: :check_email}, method: :post do |f|
|
||||
.form-group.form-group-lg
|
||||
= f.text_field :email, class: "form-control", placeholder: "Entrez votre email"
|
||||
= f.hidden_field :gender
|
||||
= f.hidden_field :given_name
|
||||
= f.hidden_field :family_name
|
||||
= f.hidden_field :birthdate
|
||||
= f.hidden_field :birthplace
|
||||
= f.hidden_field :france_connect_particulier_id
|
||||
= f.submit 'Terminer', class: %w(btn btn-lg btn-success), style: 'margin-top:20px;', id: 'valid_new_fcp'
|
|
@ -25,12 +25,18 @@
|
|||
= render partial: 'administrateurs/login_banner'
|
||||
- elsif user_signed_in?
|
||||
%div.user
|
||||
-if current_user.loged_in_with_france_connect
|
||||
= image_tag('logo_FC_02_small.png', class: 'logo_fc_small')
|
||||
-if current_user.loged_in_with_france_connect?
|
||||
%div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' }
|
||||
%a.text-info{ href: "#" }
|
||||
= "#{current_user.given_name} #{current_user.family_name}"
|
||||
|
||||
= link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link'
|
||||
|
||||
-else
|
||||
%i.fa.fa-user
|
||||
= current_user.email
|
||||
= link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md'
|
||||
= current_user.email
|
||||
|
||||
= link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md'
|
||||
|
||||
#flash_message.center
|
||||
- if flash.notice
|
||||
|
@ -42,3 +48,4 @@
|
|||
|
||||
%div{:style => 'margin-left:10%; margin-right:10%;'}
|
||||
= yield
|
||||
|
||||
|
|
|
@ -40,15 +40,18 @@
|
|||
%br
|
||||
%h3 Documents administratifs
|
||||
|
||||
-if @procedure.lien_demarche != nil
|
||||
%p
|
||||
Formulaire / documentation de la démarche :
|
||||
%a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Accéder
|
||||
|
||||
|
||||
%br
|
||||
//TODO a refactorer
|
||||
%table{class:'table', style:'width:55%; margin-left:5%'}
|
||||
%tr
|
||||
%th{class:'col-lg-6'}
|
||||
='Charger votre CERFA (.pdf)'
|
||||
|
||||
-if @procedure.lien_demarche != nil
|
||||
%a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Lien CERFA
|
||||
='Formulaire (.pdf / .doc)'
|
||||
|
||||
%td{class:'col-lg-5'}
|
||||
-if !@dossier.cerfa.empty?
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
%table.table
|
||||
%thead
|
||||
%th Procédure
|
||||
%th Nom du Projet
|
||||
%th Etat
|
||||
%th Mise à jour
|
||||
- @dossiers.each do |dossier|
|
||||
%tr
|
||||
%td
|
||||
= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, users_dossier_recapitulatif_path(dossier))
|
||||
%td{id: "dossier_#{dossier.id}_state"}= dossier.state_fr
|
||||
%td= dossier.last_update
|
||||
- unless smart_listing.empty?
|
||||
%table.table
|
||||
%thead
|
||||
%th.col-md-4.col-lg-4= smart_listing.sortable 'Procédure', 'procedure.libelle'
|
||||
%th.col-md-4.col-lg-4= smart_listing.sortable 'Nom du Projet', 'nom_projet'
|
||||
%th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state'
|
||||
%th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at'
|
||||
- @dossiers.each do |dossier|
|
||||
- dossier = dossier.decorate
|
||||
%tr
|
||||
%td
|
||||
= dossier.procedure.libelle
|
||||
%td
|
||||
= link_to(dossier.nom_projet, users_dossier_recapitulatif_path(dossier))
|
||||
%td{id: "dossier_#{dossier.id}_state"}= dossier.display_state
|
||||
%td= dossier.last_update
|
||||
|
||||
.pagination
|
||||
= will_paginate @dossiers, renderer: BootstrapPagination::Rails
|
||||
= smart_listing.paginate
|
||||
= smart_listing.pagination_per_page_links
|
||||
|
||||
- else
|
||||
%h4.center
|
||||
Aucun dossier
|
||||
|
|
|
@ -3,21 +3,21 @@
|
|||
|
||||
#onglets
|
||||
%ul.nav.nav-tabs
|
||||
%li{ class: (@dossiers.active_class_a_traiter(@liste) unless @dossiers.nil?) }
|
||||
%li{ class: @a_traiter_class }
|
||||
%a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}"}
|
||||
%h5.text-danger
|
||||
= "À traiter "
|
||||
.badge.progress-bar-danger
|
||||
= @dossiers_a_traiter_total
|
||||
|
||||
%li{ class: (@dossiers.active_class_en_attente(@liste) unless @dossiers.nil?) }
|
||||
%li{ class: @en_attente_class }
|
||||
%a{:href => "#{url_for users_dossiers_path(liste: 'en_attente')}"}
|
||||
%h5.text-info
|
||||
="En attente "
|
||||
.badge.progress-bar-info
|
||||
= @dossiers_en_attente_total
|
||||
|
||||
%li{ class: (@dossiers.active_class_termine(@liste) unless @dossiers.nil?) }
|
||||
%li{ class: @termine_class }
|
||||
%a{:href => "#{url_for users_dossiers_path(liste: 'termine')}"}
|
||||
%h5.text-success
|
||||
= "Terminé"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#users_index
|
||||
= render partial: 'onglets'
|
||||
|
||||
= render partial: 'list'
|
||||
= smart_listing_render :dossiers
|
1
app/views/users/dossiers/index.js.erb
Normal file
1
app/views/users/dossiers/index.js.erb
Normal file
|
@ -0,0 +1 @@
|
|||
<%= smart_listing_update :dossiers %>
|
|
@ -1,12 +1,12 @@
|
|||
.content#commentaires_flux{style:'width:100%;'}
|
||||
%div#commentaire_new{style: 'width:80%; margin-left:auto; margin-right:auto'}
|
||||
= form_tag(url_for({ controller: :commentaires, action: :create, dossier_id: @dossier.id }), class: 'form-inline', method: 'POST') do
|
||||
= form_tag(url_for({ controller: :commentaires, action: :create, dossier_id: @facade.dossier.id }), class: 'form-inline', method: 'POST') do
|
||||
%textarea.form-control{id: 'texte_commentaire', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', maxlength: '255', placeholder:"Dialoguer avec votre interlocuteur privilégié en charge de votre dossier."}
|
||||
%input.form-control.btn.btn-success{:type => 'submit', :value => 'Poster', style: 'float:right'}
|
||||
%br
|
||||
%br
|
||||
|
||||
-@commentaires.each do |com|
|
||||
-@facade.commentaires.each do |com|
|
||||
%span.text-info#email_contact{style: 'font-weight:bold'}
|
||||
=com.email
|
||||
%span#created_at
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
.col-md-6.col-lg-6
|
||||
%h2 Récapitulatif
|
||||
.col-md-6.col-lg-6
|
||||
= form_tag "/users/dossiers/#{@dossier.id}/archive", style:'margin-top:21px', action: :archive, method: :put do
|
||||
= form_tag "/users/dossiers/#{@facade.dossier.id}/archive", style:'margin-top:21px', action: :archive, method: :put do
|
||||
%button#archive.btn.btn-sm.btn-default.text-info{type: :button}
|
||||
%i.fa.fa-eraser
|
||||
Archiver
|
||||
|
@ -20,17 +20,17 @@
|
|||
|
||||
.col-md-3.col-lg-3
|
||||
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
|
||||
= "Dossier n°#{@dossier.id}"
|
||||
= "Dossier n°#{@facade.dossier.id}"
|
||||
|
||||
- unless gestionnaire_signed_in?
|
||||
-if @dossier.validated?
|
||||
-if @facade.dossier.validated?
|
||||
%br
|
||||
= form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @dossier.id}), method: 'POST') do
|
||||
= form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @facade.dossier.id}), method: 'POST') do
|
||||
%button#validate_button.btn.btn-success
|
||||
= 'Déposer mon dossier'
|
||||
-else
|
||||
%h3{:class => 'text-success', :style => 'text-align:right'}
|
||||
= @dossier.state_fr
|
||||
= @facade.dossier.display_state
|
||||
|
||||
%br
|
||||
|
||||
|
|
|
@ -3,14 +3,15 @@
|
|||
%br
|
||||
%h2#login_user Connexion
|
||||
|
||||
-#%a.btn.btn-default.btn-lg.btn-primary#btn_fc{href: '/france_connect'}
|
||||
-# %div{style:'margin-left:35px'}
|
||||
-# S'identifier avec
|
||||
-# France Connect
|
||||
-#%hr
|
||||
%a.btn_fc#btn_fcp{href: '/france_connect/particulier'}
|
||||
= image_tag 'franceconnect_logo.png'
|
||||
|
||||
%br
|
||||
%br
|
||||
%a.text-info{href: 'https://fcp.integ01.dev-franceconnect.fr/a-propos', target: '_blank'}
|
||||
Qu’est-ce que FranceConnect ?
|
||||
|
||||
|
||||
%hr
|
||||
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
|
||||
%h4
|
||||
= f.label :email
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue