diff --git a/app/controllers/call_for_booths_controller.rb b/app/controllers/call_for_booths_controller.rb new file mode 100644 index 00000000..16d38a33 --- /dev/null +++ b/app/controllers/call_for_booths_controller.rb @@ -0,0 +1,83 @@ +class CallForBoothsController < ApplicationController + before_action :set_call_for_booth, only: [:show, :edit, :update, :destroy] + + # GET /call_for_booths + # GET /call_for_booths.json + def index + @call_for_booths = CallForBooth.all + + respond_to do |format| + format.html # index.html.erb + format.json { render json: @call_for_booths } + end + end + + # GET /call_for_booths/1 + # GET /call_for_booths/1.json + def show + respond_to do |format| + format.html # show.html.erb + format.json { render json: @call_for_booth } + end + end + + # GET /call_for_booths/new + def new + @call_for_booth = CallForBooth.new + end + + # GET /call_for_booths/1/edit + def edit + end + + # POST /call_for_booths + # POST /call_for_booths.json + def create + @call_for_booth = CallForBooth.new(call_for_booth_params) + + respond_to do |format| + if @call_for_booth.save + format.html { redirect_to @call_for_booth, notice: 'Call for booth was successfully created.' } + format.json { render json: @call_for_booth, status: :created } + else + format.html { render action: 'new' } + format.json { render json: @call_for_booth.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /call_for_booths/1 + # PATCH/PUT /call_for_booths/1.json + def update + respond_to do |format| + if @call_for_booth.update(call_for_booth_params) + format.html { redirect_to @call_for_booth, notice: 'Call for booth was successfully updated.' } + format.json { head :no_content } + else + format.html { render action: 'edit' } + format.json { render json: @call_for_booth.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /call_for_booths/1 + # DELETE /call_for_booths/1.json + def destroy + @call_for_booth.destroy + respond_to do |format| + format.html { redirect_to call_for_booths_url } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_call_for_booth + @call_for_booth = CallForBooth.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def call_for_booth_params + params.require(:call_for_booth).permit(:start_date, :end_date, :booth_limit) + end +end diff --git a/app/models/booth.rb b/app/models/booth.rb index 8dffe88e..59e1a734 100644 --- a/app/models/booth.rb +++ b/app/models/booth.rb @@ -3,7 +3,7 @@ class Booth < ActiveRecord::Base has_many :booth_requests has_many :users, through: :booth_requests - validate :title, + validates :title, uniqueness: { case_sensitive: fasle}, presence: true diff --git a/app/models/call_for_booth.rb b/app/models/call_for_booth.rb new file mode 100644 index 00000000..0f16cdcd --- /dev/null +++ b/app/models/call_for_booth.rb @@ -0,0 +1,22 @@ +class CallForBooth < ActiveRecord::Base + belongs_to :conference + + validates :start_date, :end_date, :booth_limit, presence: true + validate :before_end_of_conference + validate :start_date_before_end_date + + private + + def before_end_of_conference + errors + .add(:start_date, "can't be after the conference end date (#{conference.end_date})") if conference && conference.end_date && start_date && (start_date > conference.end_date) + + errors + .add(:end_date, "can't be after the conference end date (#{conference.end_date})") if conference && conference.end_date && end_date && (end_date > conference.end_date) + end + + def start_date_before_end_date + errors + .add(:start_date, "can't be after the end date") if start_date && end_date && start_date > end_date + end +end diff --git a/app/models/conference.rb b/app/models/conference.rb index 07940180..fd62c7bb 100644 --- a/app/models/conference.rb +++ b/app/models/conference.rb @@ -16,6 +16,7 @@ class Conference < ActiveRecord::Base has_one :splashpage, dependent: :destroy has_one :contact, dependent: :destroy has_one :registration_period, dependent: :destroy + has_one :call_for_booths, dependent: :destroy has_one :email_settings, dependent: :destroy has_one :program, dependent: :destroy has_one :venue, dependent: :destroy @@ -24,7 +25,7 @@ class Conference < ActiveRecord::Base has_many :supporters, through: :ticket_purchases, source: :user has_many :tickets, dependent: :destroy has_many :resources, dependent: :destroy - has_many :booths, dependent: :destroy + has_many :booths, dependent: :destroy has_many :lodgings, dependent: :destroy has_many :registrations, dependent: :destroy diff --git a/app/views/call_for_booths/_form.html.haml b/app/views/call_for_booths/_form.html.haml new file mode 100644 index 00000000..61331987 --- /dev/null +++ b/app/views/call_for_booths/_form.html.haml @@ -0,0 +1,19 @@ += form_for @call_for_booth do |f| + - if @call_for_booth.errors.any? + #error_explanation + %h2= "#{pluralize(@call_for_booth.errors.count, "error")} prohibited this call_for_booth from being saved:" + %ul + - @call_for_booth.errors.full_messages.each do |msg| + %li= msg + + .field + = f.label :start_date + = f.date_select :start_date + .field + = f.label :end_date + = f.date_select :end_date + .field + = f.label :booth_limit + = f.number_field :booth_limit + .actions + = f.submit 'Save' diff --git a/app/views/call_for_booths/edit.html.haml b/app/views/call_for_booths/edit.html.haml new file mode 100644 index 00000000..f6ef190c --- /dev/null +++ b/app/views/call_for_booths/edit.html.haml @@ -0,0 +1,7 @@ +%h1 Editing call_for_booth + += render 'form' + += link_to 'Show', @call_for_booth +\| += link_to 'Back', call_for_booths_path diff --git a/app/views/call_for_booths/index.html.haml b/app/views/call_for_booths/index.html.haml new file mode 100644 index 00000000..767c67b8 --- /dev/null +++ b/app/views/call_for_booths/index.html.haml @@ -0,0 +1,23 @@ +%h1 Listing call_for_booths + +%table + %tr + %th Start date + %th End date + %th Booth limit + %th + %th + %th + + - @call_for_booths.each do |call_for_booth| + %tr + %td= call_for_booth.start_date + %td= call_for_booth.end_date + %td= call_for_booth.booth_limit + %td= link_to 'Show', call_for_booth + %td= link_to 'Edit', edit_call_for_booth_path(call_for_booth) + %td= link_to 'Destroy', call_for_booth, :method => :delete, :data => { :confirm => 'Are you sure?' } + +%br + += link_to 'New Call for booth', new_call_for_booth_path diff --git a/app/views/call_for_booths/new.html.haml b/app/views/call_for_booths/new.html.haml new file mode 100644 index 00000000..b8f9c3eb --- /dev/null +++ b/app/views/call_for_booths/new.html.haml @@ -0,0 +1,5 @@ +%h1 New call_for_booth + += render 'form' + += link_to 'Back', call_for_booths_path diff --git a/app/views/call_for_booths/show.html.haml b/app/views/call_for_booths/show.html.haml new file mode 100644 index 00000000..69b4e773 --- /dev/null +++ b/app/views/call_for_booths/show.html.haml @@ -0,0 +1,15 @@ +%p#notice= notice + +%p + %b Start date: + = @call_for_booth.start_date +%p + %b End date: + = @call_for_booth.end_date +%p + %b Booth limit: + = @call_for_booth.booth_limit + += link_to 'Edit', edit_call_for_booth_path(@call_for_booth) +\| += link_to 'Back', call_for_booths_path diff --git a/config/routes.rb b/config/routes.rb index ccca3511..c5889406 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,6 @@ Osem::Application.routes.draw do + if ENV['OSEM_ICHAIN_ENABLED'] == 'true' devise_for :users, controllers: { registrations: :registrations } else @@ -30,6 +31,7 @@ Osem::Application.routes.draw do resources :conferences do resource :contact, except: [:index, :new, :create, :show, :destroy] resources :schedules, only: [:index, :create, :show, :update, :destroy] + resources :booths resources :event_schedules, only: [:create, :update, :destroy] get 'commercials/render_commercial' => 'commercials#render_commercial' resources :commercials, only: [:index, :create, :update, :destroy] @@ -52,6 +54,7 @@ Osem::Application.routes.draw do resources :rooms, except: [:show] end resource :registration_period + resource :call_for_booths resource :program do resource :cfp resources :tracks diff --git a/db/migrate/20170606182954_create_call_for_booths.rb b/db/migrate/20170606182954_create_call_for_booths.rb new file mode 100644 index 00000000..fe4e6f3c --- /dev/null +++ b/db/migrate/20170606182954_create_call_for_booths.rb @@ -0,0 +1,11 @@ +class CreateCallForBooths < ActiveRecord::Migration + def change + create_table :call_for_booths do |t| + t.date :start_date + t.date :end_date + t.integer :booth_limit + + t.timestamps null: false + end + end +end diff --git a/test/factories/booth_requests.rb b/test/factories/booth_requests.rb deleted file mode 100644 index 9a035c3c..00000000 --- a/test/factories/booth_requests.rb +++ /dev/null @@ -1,7 +0,0 @@ -FactoryGirl.define do - factory :booth_request do - booth nil - user nil - role "MyString" - end -end diff --git a/test/models/booth_request_test.rb b/test/models/booth_request_test.rb deleted file mode 100644 index c775f191..00000000 --- a/test/models/booth_request_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class BoothRequestTest < ActiveSupport::TestCase - # test "the truth" do - # assert true - # end -end