Class: CalendarController

Inherits:
KitController show all
Defined in:
app/controllers/calendar_controller.rb

Constant Summary

Constants inherited from KitController

KitController::Pagebase

Instance Attribute Summary

Attributes inherited from KitController

#is_image_request, #kit_request, #layout_being_used, #requested_url, #template_being_used

Instance Method Summary collapse

Methods inherited from KitController

#anti_spam_okay?, #app_name, #can_moderate, #can_use, #captcha_okay?, #check_and_record_goal, #check_user, #csv_headers, #dif, #edit_page_path, #feature?, #get_asset, #get_view_content, #host_name, #index_name, #info_page_path, #kit_layout_in_use, #kit_render, #kit_session, #kit_session_end, #link_to, #mailchimp_connect, #mobile_template, #no_read, #no_write, #not_found, #not_found_404, #offline, #page_path, #pref, #rails_app_name, #render, #render_error, #render_page, #render_page_by_url, #routing_error, #sanity_check_okay?, #session_id, #set_requested_url, #show_form, #stylesheets, #super_render, #user_sees_menu?

Instance Method Details

#buy_ticketsObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/controllers/calendar_controller.rb', line 27

def buy_tickets
  redirect_to "/" and return unless ["CalendarEntry"].include?(params[:item_model])
  @item = Kernel.const_get(params[:item_model]).find(params[:item_id])
  redirect_to "/" and return unless @item

  @item.tickets_remaining = @item.tickets_remaining - params[:quantity].to_i

  ts = TicketSale.new
  ts.firstname = params[:firstname]
  ts.lastname = params[:lastname]
  ts.email = params[:email]
  ts.unit_price = @item.ticket_price
  ts.tax_rate = @item.tax_rate
  ts.user_id = current_user.id if current_user
  ts.quantity = params[:quantity]
  ts.telephone = params[:telephone]
  @item.ticket_sales << ts
  @item.save 
  redirect_to "#{params[:after_url]}?sale_id=#{ts.id}"
end

#sell_tickets_setupObject

to handle ticket sales, the item model should include: alter table calendar_entries add sell_tickets tinyint default 0, add tickets_remaining integer default 0, add ticket_price float, add ticket_label varchar(200); it must also have a ‘name’ field



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/controllers/calendar_controller.rb', line 9

def sell_tickets_setup
  redirect_to "/" unless ["CalendarEntry"].include?(params[:item_model])
  item = Kernel.const_get(params[:item_model]).find(params[:item_id])
  redirect_to "/" unless item

  item.sell_tickets = 1 if current_user.admin?
  item.tickets_remaining = params[:quantity]
  item.ticket_price = params[:price]
  item.tax_rate = params[:tax_rate]
  item.seller_id = item.user_id
  item.save

  unless current_user.admin?  
      Notification.moderation_required("Ticket Sales", "Ticket sales set up for #{item.calendar.name}.  View: #{Preference.get_cached(_sid, 'host')}/admin/calendar_entries/#{item.id}", _sid).deliver if params[:item_model]=="CalendarEntry"
  end      
  redirect_to (params[:redirect] || "/") and return
end

#sold_as_csvObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'app/controllers/calendar_controller.rb', line 48

def sold_as_csv
  redirect_to "/" and return unless ["CalendarEntry"].include?(params[:item_model])
  item = Kernel.const_get(params[:item_model]).find(params[:item_id])
  redirect_to "/" and return unless item

  csv_headers("sold.csv")

  csv_string = CSV.generate do |csv|
    csv << ["id", "reference", "firstname", "lastname", "email", "telephone", "quantity", "price"]
    item.ticket_sales.each do |tick|
      csv << [ tick.id, tick.payment_reference, tick.firstname, tick.lastname, tick.email, tick.telephone, tick.quantity, tick.unit_price]
    end
  end

  render :text=>csv_string
end

#update_entryObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/controllers/calendar_controller.rb', line 65

def update_entry
  unless current_user
    redirect_to "/users/sign_in"
    return
  end

  params[:calendar_entry][:system_id] = _sid
  params[:calendar_entry][:location_attributes][:system_id] = _sid

  @calendar_entry = nil
  if params[:calendar_entry][:id].not_blank?
    if can?(:moderate, :calendar)
      @calendar_entry = CalendarEntry.find_sys_id(_sid, params[:calendar_entry][:id])
      save_okay = @calendar_entry.update_attributes(params[:calendar_entry])
    end
  else
    add_sid(:calendar_entry)
    @calendar_entry = CalendarEntry.new(params[:calendar_entry])
    @calendar_entry.location.address3 = ''
    @calendar_entry.user_id = current_user.id
    save_okay = @calendar_entry.save
  end

  if save_okay
    Activity.add(_sid, "Calendar entry '#{@calendar_entry.name}' on calendar '#{@calendar_entry.calendar.name}'", current_user.id, "Calendar")
    if can?(:moderate, :calendar)
      @calendar_entry.approved_at = Time.now
      @calendar_entry.save
    else
      Notification.moderation_required("Calendar Entry", "New entry made to calendar #{@calendar_entry.calendar.name}.  View: #{Preference.get_cached(_sid, 'host')}/admin/calendar_entries/#{@calendar_entry.id}", _sid).deliver
    end
    url = params[:success] 
    url ||= '/system/sell-tickets' 
    if url.include?('?')
      url += "&"
    else 
      url += "?"
    end
    url += "id=#{@calendar_entry.id}" if @calendar_entry
    redirect_to url and return
  else
    url = params[:edit_url]
    if url =~ /^\/admin\//
      render "/admin/calendar_entries/edit", :layout=>"cms"
    else
      render_page_by_url(params[:edit_url])
    end
  end
end