From 154f4a400c36ac6eb9d64b3ef846e55811f8c3a4 Mon Sep 17 00:00:00 2001 From: Shriyansh Date: Sun, 3 Apr 2016 19:25:41 +0530 Subject: [PATCH] venue_commercial association establihed --- .../venue_commercial_controller.rb | 58 +++++++++++++++++++ app/models/venue.rb | 1 + config/routes.rb | 2 + 3 files changed, 61 insertions(+) create mode 100644 app/controllers/venue_commercial_controller.rb diff --git a/app/controllers/venue_commercial_controller.rb b/app/controllers/venue_commercial_controller.rb new file mode 100644 index 00000000..87777f3b --- /dev/null +++ b/app/controllers/venue_commercial_controller.rb @@ -0,0 +1,58 @@ +module Admin + class CommercialsController < Admin::BaseController + load_and_authorize_resource :conference, find_by: :short_title + load_and_authorize_resource :venue ,through: :conference, singelton: true + before_action :set_venue + + def create + @commercial = @venue.commercial.build(commercial_params) + authorize! :create, @commercial + + #FIXME redirect to tab#commercial + if @commercial.save + redirect_to admin_conference_venue_path, + notice: 'Commercial was successfully created.' + else + redirect_to admin_conference_venue_path, + error: 'An error prohibited this Commercial from being saved: '\ + "#{@commercial.errors.full_messages.join('. ')}." + + end + end + + def update + if @commercial.update(commercial_params) + redirect_to admin_conference_venue_path, + notice: 'Commercial was successfully updated.' + else + redirect_to admin_conference_venue_path, + error: 'An error prohibited this Commercial from being saved: '\ + "#{@commercial.errors.full_messages.join('. ')}." + end + end + + def destroy + @commercial.destroy + redirect_to admin_conference_venue_path, notice: 'Commercial was successfully destroyed.' + end + + def render_commercial + result = Commercial.render_from_url(params[:url]) + if result[:error] + render text: result[:error], status: 400 + else + render text: result[:html] + end + end + + private + + def commercial_params + params.require(:commercial).permit(:url) + end + + def set_venue + @venue = @conference.venue + end + end +end diff --git a/app/models/venue.rb b/app/models/venue.rb index 25d3b8cd..914c7c0a 100644 --- a/app/models/venue.rb +++ b/app/models/venue.rb @@ -1,5 +1,6 @@ class Venue < ActiveRecord::Base belongs_to :conference + has_one :commercial, as: :commercialable, dependent: :destroy has_many :rooms, dependent: :destroy before_create :generate_guid diff --git a/config/routes.rb b/config/routes.rb index 9ec449f9..e0c7150c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -43,6 +43,8 @@ Osem::Application.routes.draw do # Singletons resource :splashpage resource :venue do + get 'venue_commercial/render_commercial' => 'venue_commercial#render_commercial' + resource :venue_commercial, only: [:create, :update, :destroy] resources :rooms, except: [:show] end resource :registration_period