aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/business_calendars_controller.rb4
-rw-r--r--app/models/calendar.rb4
-rw-r--r--app/models/concerns/calendar_support.rb9
-rw-r--r--app/views/business_calendars/_date_value_fields.html.slim13
-rw-r--r--app/views/business_calendars/_form.html.slim20
-rw-r--r--app/views/business_calendars/_period_fields.html.slim15
-rw-r--r--config/locales/business_calendars.fr.yml76
-rw-r--r--config/locales/businnes_calendars.en.yml76
-rw-r--r--db/migrate/20171214131755_create_business_calendars.rb5
-rw-r--r--db/schema.rb13
10 files changed, 211 insertions, 24 deletions
diff --git a/app/controllers/business_calendars_controller.rb b/app/controllers/business_calendars_controller.rb
index ee990dfba..617a07855 100644
--- a/app/controllers/business_calendars_controller.rb
+++ b/app/controllers/business_calendars_controller.rb
@@ -21,7 +21,7 @@ class BusinessCalendarsController < ChouetteController
private
def business_calendar_params
- permitted_params = [:id, :name, :short_name, periods_attributes: [:id, :begin, :end, :_destroy], date_values_attributes: [:id, :value, :_destroy]]
+ permitted_params = [:id, :name, :short_name, :color, periods_attributes: [:id, :begin, :end, :_destroy], date_values_attributes: [:id, :value, :_destroy]]
params.require(:business_calendar).permit(*permitted_params)
end
@@ -30,4 +30,4 @@ class BusinessCalendarsController < ChouetteController
business_calendars,
with: BusinessCalendarDecorator)
end
-end \ No newline at end of file
+end
diff --git a/app/models/calendar.rb b/app/models/calendar.rb
index 4e8cd0977..5df2bb1da 100644
--- a/app/models/calendar.rb
+++ b/app/models/calendar.rb
@@ -4,7 +4,9 @@ require_relative 'calendar/period'
class Calendar < ActiveRecord::Base
include CalendarSupport
-
+
+ has_many :time_tables
+
scope :contains_date, ->(date) { where('date ? = any (dates) OR date ? <@ any (date_ranges)', date, date) }
def self.ransackable_scopes(auth_object = nil)
diff --git a/app/models/concerns/calendar_support.rb b/app/models/concerns/calendar_support.rb
index 9d27f4c0d..73bb201ec 100644
--- a/app/models/concerns/calendar_support.rb
+++ b/app/models/concerns/calendar_support.rb
@@ -1,16 +1,15 @@
module CalendarSupport
extend ActiveSupport::Concern
-
+
included do
has_paper_trail
belongs_to :organisation
- has_many :time_tables
validates_presence_of :name, :short_name, :organisation
validates_uniqueness_of :short_name
after_initialize :init_dates_and_date_ranges
-
-
+
+
def init_dates_and_date_ranges
self.dates ||= []
self.date_ranges ||= []
@@ -154,4 +153,4 @@ module CalendarSupport
private :clear_date_values
end
-end \ No newline at end of file
+end
diff --git a/app/views/business_calendars/_date_value_fields.html.slim b/app/views/business_calendars/_date_value_fields.html.slim
new file mode 100644
index 000000000..7bde06a94
--- /dev/null
+++ b/app/views/business_calendars/_date_value_fields.html.slim
@@ -0,0 +1,13 @@
+.nested-fields
+ - if f.object.errors.has_key? :base
+ .row
+ .col-lg-12
+ .alert.alert-danger
+ - f.object.errors[:base].each do |message|
+ p.small = message
+
+ .wrapper
+ div
+ = f.input :value, as: :date, label: false, wrapper_html: { class: 'date smart_date' }
+ div
+ = link_to_remove_association '', f, class: 'fa fa-trash', data: { confirm: 'Etes-vous sûr(e) ?' }, title: t('actions.delete')
diff --git a/app/views/business_calendars/_form.html.slim b/app/views/business_calendars/_form.html.slim
index c2c9fb3a1..a7c0d8c4a 100644
--- a/app/views/business_calendars/_form.html.slim
+++ b/app/views/business_calendars/_form.html.slim
@@ -2,9 +2,11 @@
.row
.col-lg-12
= f.input :name
+ = f.input :short_name
+ = f.input :color
.separator
-
+
.row
.col-lg-12
.subform
@@ -13,17 +15,17 @@
div
.form-group
label.control-label
- = BusinessCalendar.human_attribute_name(:date)
+ = Calendar.human_attribute_name(:date)
div
= f.simple_fields_for :date_values do |date_value|
- = render 'calendars/date_fields', f: date_value
+ = render 'date_value_fields', f: date_value
.links.nested-linker
- = link_to_add_association t('simple_form.labels.calendar.add_a_date'), f, :dates, class: 'btn btn-outline-primary'
-
+ = link_to_add_association t('simple_form.labels.business_calendar.add_a_date'), f, :date_values, class: 'btn btn-outline-primary'
+
.separator
-
+
.row
.col-lg-12
.subform
@@ -32,16 +34,16 @@
div
.form-group
label.control-label
- = t('simple_form.labels.calendar.ranges.begin')
+ = t('simple_form.labels.business_calendar.ranges.begin')
div
.form-group
label.control-label
- = t('simple_form.labels.calendar.ranges.end')
+ = t('simple_form.labels.business_calendar.ranges.end')
div
= f.simple_fields_for :periods do |period|
= render 'period_fields', f: period
.links.nested-linker
- = link_to_add_association t('simple_form.labels.calendar.add_a_date_range'), f, :periods, class: 'btn btn-outline-primary'
+ = link_to_add_association t('simple_form.labels.business_calendar.add_a_date_range'), f, :periods, class: 'btn btn-outline-primary'
= f.button :submit, t('actions.submit'), class: 'btn btn-default formSubmitr', form: 'business_calendar_form'
diff --git a/app/views/business_calendars/_period_fields.html.slim b/app/views/business_calendars/_period_fields.html.slim
new file mode 100644
index 000000000..95e204554
--- /dev/null
+++ b/app/views/business_calendars/_period_fields.html.slim
@@ -0,0 +1,15 @@
+.nested-fields
+ - if f.object.errors.has_key? :base
+ .row
+ .col-lg-12
+ .alert.alert-danger
+ - f.object.errors[:base].each do |message|
+ p.small = message
+
+ .wrapper
+ div
+ = f.input :begin, as: :date, label: false, wrapper_html: { class: 'date smart_date' }
+ div
+ = f.input :end, as: :date, label: false, wrapper_html: { class: 'date smart_date' }
+ div
+ = link_to_remove_association '', f, class: 'fa fa-trash', data: { confirm: 'Etes-vous sûr(e) ?' }, title: t('actions.delete')
diff --git a/config/locales/business_calendars.fr.yml b/config/locales/business_calendars.fr.yml
new file mode 100644
index 000000000..a67864384
--- /dev/null
+++ b/config/locales/business_calendars.fr.yml
@@ -0,0 +1,76 @@
+fr:
+ business_calendars:
+ search_no_results: 'Aucun calendrier commercial ne correspond à votre recherche'
+ days:
+ monday: L
+ tuesday: Ma
+ wednesday: Me
+ thursday: J
+ friday: V
+ saturday: S
+ sunday: D
+ months:
+ 1: Janvier
+ 2: Février
+ 3: Mars
+ 4: Avril
+ 5: Mai
+ 6: Juin
+ 7: Juillet
+ 8: Août
+ 9: Septembre
+ 10: Octobre
+ 11: Novembre
+ 12: Décembre
+ standard_calendars: Calendriers standards
+ standard_calendar: Calendrier standard
+ actions:
+ new: Ajouter un calendrier commercial
+ edit: Editer cet calendrier commercial
+ destroy: Supprimer ce calendrier commercial
+ destroy_confirm: Etes vous sûr de supprimer cet calendrier commercial ?
+ errors:
+ overlapped_periods: Une autre période chevauche cette période
+ short_period: Une période doit être d'un duréé de deux jours minimum
+ index:
+ title: Calendriers commerciaux
+ all: Tous
+ shared: Partagées
+ not_shared: Non partagées
+ search_no_results: Aucun calendrier commercial ne correspond à votre recherche
+ date: Date
+ new:
+ title: Ajouter un calendrier commercial
+ edit:
+ title: Editer le calendrier comercial %{name}
+ show:
+ title: Calendrier commercial %{name}
+ simple_form:
+ labels:
+ calendar:
+ date_value: Date
+ add_a_date: Ajouter une date
+ add_a_date_range: Ajouter un intervalle de dates
+ ranges:
+ begin: Début
+ end: Fin
+ activerecord:
+ models:
+ one: "calendrier commercial"
+ other: "calendriers commerciaux"
+ attributes:
+ business_calendar:
+ name: Nom
+ short_name: Nom court
+ date_ranges: Intervalles de dates
+ dates: Dates
+ organisation: Organisation
+ color: Couleur
+ errors:
+ models:
+ business_calendar:
+ attributes:
+ dates:
+ date_in_date_ranges: Une même date ne peut pas être incluse à la fois dans la liste et dans les intervalles de dates.
+ date_in_dates: Une même date ne peut pas être incluse plusieurs fois dans la liste.
+ illegal_date: La date %{date} n'existe pas.
diff --git a/config/locales/businnes_calendars.en.yml b/config/locales/businnes_calendars.en.yml
new file mode 100644
index 000000000..6232adc43
--- /dev/null
+++ b/config/locales/businnes_calendars.en.yml
@@ -0,0 +1,76 @@
+en:
+ business_calendars:
+ search_no_results: 'No business calendar matching your query'
+ days:
+ monday: M
+ tuesday: Tu
+ wednesday: W
+ thursday: Th
+ friday: F
+ saturday: Sa
+ sunday: Su
+ months:
+ 1: January
+ 2: February
+ 3: March
+ 4: April
+ 5: May
+ 6: June
+ 7: July
+ 8: August
+ 9: September
+ 10: October
+ 11: November
+ 12: December
+ standard_calendars: Standard calendars
+ standard_calendar: Standard calendar
+ actions:
+ new: Add a new business calendar
+ edit: Edit this business calendar
+ destroy: Remove this business calendar
+ destroy_confirm: Are you sure you want destroy this business calendar?
+ errors:
+ overlapped_periods: Another period is overlapped with this period
+ short_period: A period needs to last at least two days
+ index:
+ title: Business calendars
+ all: All
+ shared: Shared
+ not_shared: Not shared
+ search_no_results: No business calendar matching your query
+ date: Date
+ new:
+ title: Add a new business calendar
+ edit:
+ title: Update business calendar %{name}
+ show:
+ title: Business calendar %{name}
+ simple_form:
+ labels:
+ business_calendar:
+ date_value: Date
+ add_a_date: Add a date
+ add_a_date_range: Add a date range
+ ranges:
+ begin: Beginning
+ end: End
+ activerecord:
+ models:
+ one: business calendar
+ other: business calendars
+ attributes:
+ business_calendar:
+ name: Name
+ short_name: Short name
+ date_ranges: Date ranges
+ dates: Dates
+ organisation: Organisation
+ color: Color
+ errors:
+ models:
+ business_calendar:
+ attributes:
+ dates:
+ date_in_date_ranges: A date can not be in Dates and in Date ranges.
+ date_in_dates: A date can appear only once in the list of dates.
+ illegal_date: The date %{date} does not exist.
diff --git a/db/migrate/20171214131755_create_business_calendars.rb b/db/migrate/20171214131755_create_business_calendars.rb
index 5bb3db9d3..aa7c1ab12 100644
--- a/db/migrate/20171214131755_create_business_calendars.rb
+++ b/db/migrate/20171214131755_create_business_calendars.rb
@@ -4,8 +4,9 @@ class CreateBusinessCalendars < ActiveRecord::Migration
t.string :name
t.string :short_name
t.string :color
- t.date :dates
- t.daterange :date_ranges
+ t.daterange :date_ranges, array: true
+ t.date :dates, array: true
+ t.belongs_to :organisation, index: true
t.timestamps null: false
end
diff --git a/db/schema.rb b/db/schema.rb
index a51a3bb42..36128807a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -85,12 +85,15 @@ ActiveRecord::Schema.define(version: 20171214130636) do
t.string "name"
t.string "short_name"
t.string "color"
- t.date "dates"
- t.daterange "date_ranges"
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.daterange "date_ranges", array: true
+ t.date "dates", array: true
+ t.integer "organisation_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
end
+ add_index "business_calendars", ["organisation_id"], name: "index_business_calendars_on_organisation_id", using: :btree
+
create_table "calendars", id: :bigserial, force: :cascade do |t|
t.string "name"
t.string "short_name"
@@ -413,9 +416,9 @@ ActiveRecord::Schema.define(version: 20171214130636) do
t.string "type"
t.integer "parent_id", limit: 8
t.string "parent_type"
+ t.datetime "notified_parent_at"
t.integer "current_step", default: 0
t.integer "total_steps", default: 0
- t.datetime "notified_parent_at"
t.string "creator"
end