Advertisement
Guest User

Untitled

a guest
Sep 18th, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.49 KB | None | 0 0
  1. class EventsController < ApplicationController
  2.   before_action :authenticate_user!, except: [:settings, :index, :show, :new, :create]
  3.   before_action :set_event, only: [:show, :edit, :update, :destroy]
  4.   before_action :set_vars, :set_search
  5.  
  6.   respond_to :html, :json
  7.  
  8.  
  9.   def index
  10.     @events = Event.joins(:days, :types).where(@search_params).uniq.order('updated_at DESC')
  11.   end
  12.  
  13.   def new
  14.   end
  15.  
  16.   def show
  17.   end
  18.  
  19.   def edit
  20.     redirect_to root_path, error: "Нельзя редактировать чужие события!" unless can?(:manage, @event)
  21.   end
  22.  
  23.   def update
  24.     if can?(:manage, @event)
  25.  
  26.       @event.assign_price!(params[:event][:price])
  27.       @event.assign_types!(params[:event][:types_ids])
  28.       @event.assign_days!(params[:event][:days])
  29.      
  30.       if @event.update(event_params)
  31.         redirect_to root_path, flash: { success: "Событие успешно отредактировано" }
  32.       else
  33.         errors = @event.errors.full_messages.join("<br/>")
  34.         redirect_to :back, flash: { error: errors }
  35.       end
  36.      
  37.     else
  38.       redirect_to root_path, flash: { error: "Нельзя редактировать чужие события!" }
  39.     end
  40.   end
  41.  
  42.   def destroy
  43.     if can?(:manage, @event)
  44.       @event.destroy
  45.       redirect_to :back
  46.     else
  47.       redirect_to root_path, flash: { error: "Нельзя удалять чужие события!" }
  48.     end
  49.   end
  50.  
  51.   def create
  52.     success_message = "Событие успешно создано."
  53.     if @user
  54.       @event = @user.events.new(event_params)
  55.     elsif params[:email].present?
  56.       pass = SecureRandom.hex[0..10]
  57.       unless @user = User.create(email: params[:email], password: pass, password_confirmation: pass)
  58.         redirect_to new_event_path, flash: { error: @user.errors.full_messages.join("<br/>") }
  59.       end
  60.       sign_in(:user, @user)
  61.       @user.send_temp_password(pass)
  62.       @event = @user.events.new(event_params)
  63.       success_message += " Вам на почту отправлено письмо с паролем. Ваш временный пароль: #{pass}. Сейчас Вы авторизованы в системе. Спасибо за участие в проекте!"
  64.     else
  65.       redirect_to new_event_path, flash: { error: errors }
  66.     end
  67.     @event.visible = true
  68.  
  69.     if @event.save      
  70.       @event.assign_price!(params[:event][:price])
  71.       @event.assign_types!(params[:event][:types_ids])
  72.       @event.assign_days!(params[:event][:days])    
  73.       redirect_to edit_user_path(current_user), flash: { success: success_message }
  74.     else
  75.       @event.event_dates.destroy_all
  76.       errors = @event.errors.full_messages.join("<br/>")
  77.       redirect_to new_event_path, flash: { error: errors }
  78.     end
  79.    
  80.  
  81.   end
  82.  
  83.   private
  84.  
  85.   def event_params
  86.     params.require(:event).permit(:type_id,
  87.      :city_id,
  88.      :city,
  89.      :type,
  90.      :date,
  91.      :image,
  92.      :name,
  93.      :description,
  94.      :price,
  95.      :address,
  96.      :time)
  97.   end
  98.  
  99.   def set_event
  100.     @event = Event.find_by_permalink(params[:id])
  101.   end
  102.  
  103.   def update_permalink!
  104.     update(permalink: Russian.translit(name).parameterize)
  105.   end
  106.  
  107.   def set_search  
  108.     @search_params = Search.new({ city: @city, type: @type, date: @date}).build
  109.   end
  110.  
  111.   def set_vars
  112.     @city ||= City.where(subdomain: params[:city]).first
  113.     @type ||= Type.where(permalink: params[:type]).first
  114.     @date ||= params[:date]
  115.     @user ||= current_user
  116.   end
  117.  
  118. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement