class AbsencesController < ApplicationController
before_action :set_absence, only: [:show, :edit, :update, :destroy]
+ helper_method :sort_column, :sort_direction
# GET /absences
# GET /absences.json
def index
authorize Absence
+ params[:date] ||= Date.today
+
@absences = current_user.organisation.absences
@structures = current_user.organisation.structures
@classrooms = current_user.organisation.classrooms
- params[:date] ||= Date.today
-
unless params[:structure_id].blank?
@absences = @absences.joins(enfant: [:compte]).where(comptes: { structure_id: params[:structure_id] })
@classrooms = @classrooms.where(structure_id: params[:structure_id])
end
unless params[:nom].blank?
- @absences = @absences.joins(:enfant).where("UPPER(enfants.nom) like ?", "%#{params[:nom].upcase}%")
+ @absences = @absences.joins(:enfant).where("enfants.nom ILIKE ? OR enfants.prénom ILIKE ?", "%#{params[:nom]}%", "%#{params[:nom]}%")
end
+ # Appliquer le tri
+ @absences = @absences.joins(:enfant => :classroom).reorder(Arel.sql("#{sort_column} #{sort_direction}"))
+
@absences = @absences.paginate(page: params[:page])
end
def absence_params
params.require(:absence).permit(:enfant_id, :début, :fin, :matin, :midi, :soir)
end
+
+ def sortable_columns
+ %w{enfants.nom classrooms.nom absences.début absences.fin}
+ end
+
+ def sort_column
+ sortable_columns.include?(params[:column]) ? params[:column] : 'absences.id'
+ end
+
+ def sort_direction
+ %w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
+ end
+
end
@enfants = @enfants.where(Arel.sql("enfants.nom ILIKE '%#{params[:nom]}%' OR enfants.prénom ILIKE '%#{params[:nom]}%'"))
end
- logger.debug sort_column
-
# Appliquer le tri
@enfants = @enfants.reorder(Arel.sql("#{sort_column} #{sort_direction}"))
class ReservationsController < ApplicationController
before_action :set_reservation, only: [:show, :edit, :update, :destroy]
before_action :set_prestation_types, only: [:new, :edit]
+ helper_method :sort_column, :sort_direction
# GET /reservations
# GET /reservations.json
def index
authorize Reservation
- @reservations = current_user.organisation.reservations.actives
- @structures = current_user.organisation.structures
- @classrooms = current_user.organisation.classrooms
- @prestation_types = current_user.organisation.prestation_types
-
params[:date] ||= Date.today
+ organisation = current_user.organisation
+ @reservations = organisation.reservations.actives
+ @structures = organisation.structures
+ @classrooms = organisation.classrooms
+ @prestation_types = organisation.prestation_types
+
unless params[:structure_id].blank?
@reservations = @reservations.joins(enfant: [:compte]).where(comptes: { structure_id: params[:structure_id] })
@classrooms = @classrooms.where(structure_id: params[:structure_id])
@reservations = @reservations.joins(:enfant).where(enfants: { classroom_id: params[:classroom_id] })
end
+ unless params[:prestation_type_id].blank?
+ @reservations = @reservations.where(prestation_type_id: params[:prestation_type_id])
+ end
+
unless params[:date].blank?
# la date demandée est hors période scolaire ?
hps = Vacance.where("DATE(?) BETWEEN début AND fin", params[:date]).any?
-
- @reservations = @reservations
- .where(hors_période_scolaire: hps)
- .where("DATE(?) BETWEEN début AND fin", params[:date])
- end
-
- unless params[:prestation_type_id].blank?
- @reservations = @reservations.where(prestation_type_id: params[:prestation_type_id])
+ @reservations = @reservations.where(hors_période_scolaire: hps).where("DATE(?) BETWEEN début AND fin", params[:date])
end
unless params[:nom].blank?
- @reservations = @reservations.joins(:enfant).where("UPPER(enfants.nom) like ?", "%#{params[:nom].upcase}%")
+ @reservations = @reservations.joins(:enfant).where("enfants.nom ILIKE ? OR enfants.prénom ILIKE ?", "%#{params[:nom]}%", "%#{params[:nom]}%")
end
+ # Appliquer le tri
+ @reservations = @reservations.joins(:enfant => :classroom).reorder(Arel.sql("#{sort_column} #{sort_direction}"))
+
@reservations = @reservations.paginate(page: params[:page])
end
def reservation_params
params.require(:reservation).permit(:enfant_id, :prestation_type_id, :active, :début, :fin, :lundi, :mardi, :mercredi, :jeudi, :vendredi, :matin, :midi, :soir)
end
+
+ def sortable_columns
+ %w{classrooms.nom enfants.nom}
+ end
+
+ def sort_column
+ sortable_columns.include?(params[:column]) ? params[:column] : 'reservations.id'
+ end
+
+ def sort_direction
+ %w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
+ end
+
end
self.per_page = 10
- default_scope { order(:nom) }
+ default_scope { order(Arel.sql('nom')) }
def self.xls_headers
%w{structure nom_compte civilité adresse1 adresse2 cp ville num_allocataire mémo_compte
accepts_nested_attributes_for :reservations, reject_if: proc { |attributes| attributes[:prestation_type_id].blank? or attributes[:début].blank? or attributes[:fin].blank?}, allow_destroy: true
- default_scope { order(Arel.sql("nom, prénom")) }
+ default_scope { order(Arel.sql('nom, prénom')) }
self.per_page = 10
class Vacance < ApplicationRecord
audited
- default_scope { order(:début) }
+ default_scope { order(Arel.sql('début')) }
end
<div class="col-sm-3"><%= f.select :structure_id, options_from_collection_for_select(@structures, 'id', 'nom', params[:structure_id]), { include_blank: true, label: "Structure" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
<div class="col-sm-2"><%= f.select :classroom_id, options_from_collection_for_select(@classrooms, 'id', 'nom', params[:classroom_id]), { include_blank: true, label: "Classe" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
<div class="col-sm-2"><%= f.date_field :date, value: params[:date], onchange: "this.form.submit()" %></div>
- <div class="col"><%= f.text_field :nom, value: params[:nom], onchange: "this.form.submit()" %></div>
+ <div class="col"><%= f.text_field :nom, value: params[:nom], label: 'Nom/Prénom', onchange: "this.form.submit()" %></div>
</div>
<% end %>
<thead>
<tr>
<th>Structure</th>
- <th>Enfant</th>
- <th>Classe</th>
- <th>Début</th>
- <th>Fin</th>
+ <th><%= sort_link 'enfants.nom', 'Enfant' %></th>
+ <th><%= sort_link 'classrooms.nom', 'Classe' %></th>
+ <th><%= sort_link 'absences.début', 'Début' %></th>
+ <th><%= sort_link 'absences.fin', 'Fin' %></th>
<th>Matin</th>
<th>Midi</th>
<th>Soir</th>
<tfoot><tr><% 10.times do %><th /><% end %></tr></tfoot>
<tbody>
- <%= render @absences %>
+ <%= render @absences.includes(:enfant) %>
</tbody>
</table>
<div class="row">
<div class="col-sm-3"><%= f.select :structure_id, options_from_collection_for_select(@structures, 'id', 'nom', params[:structure_id]), { include_blank: true, label: "Structure" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
<div class="col-sm-2"><%= f.select :classroom_id, options_from_collection_for_select(@classrooms, 'id', 'nom', params[:classroom_id]), { include_blank: true, label: "Classe" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
- <div class="col"><%= f.text_field :nom, value: params[:nom], onchange: "this.form.submit()" %></div>
+ <div class="col"><%= f.text_field :nom, value: params[:nom], label: 'Nom/Prénom', onchange: "this.form.submit()" %></div>
</div>
<% end %>
<div class="col-sm-2"><%= f.select :classroom_id, options_from_collection_for_select(@classrooms, 'id', 'nom', params[:classroom_id]), { include_blank: true, label: "Classe" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
<div class="col-sm-2"><%= f.select :prestation_type_id, options_from_collection_for_select(@prestation_types, 'id', 'nom', params[:prestation_type_id]), { include_blank: true, label: "Type" }, { class: "selectpicker", onchange: "this.form.submit()" } %></div>
<div class="col-sm-2"><%= f.date_field :date, value: params[:date], onchange: "this.form.submit()" %></div>
- <div class="col"><%= f.text_field :nom, value: params[:nom], onchange: "this.form.submit()" %></div>
+ <div class="col"><%= f.text_field :nom, value: params[:nom], onchange: "this.form.submit()", label: 'Nom/Prénom' %></div>
</div>
<% end %>
<thead>
<tr>
<th>Structure</th>
- <th>Classe</th>
- <th>Enfant</th>
+ <th><%= sort_link 'classrooms.nom', 'Classe' %></th>
+ <th><%= sort_link 'enfants.nom', 'Enfant' %></th>
<th>SP?</th>
<th>ALG?</th>
<th>Prestation</th>
<tfoot><tr><% 15.times do %><th /><% end %></tr></tfoot>
<tbody>
- <%= render @reservations %>
+ <%= render @reservations.includes(:enfant) %>
</tbody>
</table>