diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 390418a..df7d61e 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -8,18 +8,46 @@ class EventsController < ApplicationController @item = Item.find_by_key(params[:key]) dates = params[:event].delete(:dates) - e = Event.new(params[:event].merge(:item => @item)) - if e.valid? - dates = extract_dates(dates) - p dates + event = Event.new(params[:event].merge(:item => @item)) + flash[:errors] = "" + flash[:title] = params[:event][:title] + flash[:details] = params[:event][:details] + flash[:dates] = dates + + if event.valid? + event.save + parsed_dates = extract_dates(dates) + if parsed_dates.all? {|d| d.first == :success } + bookings = [] + parsed_dates.map do |d| + bookings << Booking.new(:start_at => d[1], :end_at => d[2], :event => event) + end + if bookings.all?(&:valid?) + bookings.each do |b| + b.event = event + b.save + end + else + bookings.each do |b| + b.errors.each do |_,msg| + flash[:errors] += "
<%= f.label :title, "Titre :" %> - <%= f.text_field :title %> + <%= text_field_tag 'event[title]', flash[:title]||"" %> 140 caractères maximum
<%= f.label :details, "Détails :" %> - <%= f.text_area :details, :rows => 5, :cols => 20 %> + <%= text_area_tag 'event[details]', flash[:details]||"", :rows => 5, :cols => 20 %>
<%= f.label :dates, "Dates :" %>