Created
December 5, 2016 19:45
-
-
Save ckk-scratch/1c1bce7960eecaef5ceb56083d25888a to your computer and use it in GitHub Desktop.
Event Notifications
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%tr | |
%td{:style => "padding: 25px; text-align: left; font-family: sans-serif; font-size: 15px; mso-height-rule: exactly; line-height: 20px; color: #555555;"} | |
%p | |
You have been sent event details by | |
%i= "#{@user.name ? @user.name : @user.email}." | |
%p | |
Please direct all event matters to your organization's responsible party, or to the Scratch Events Operations Manager. | |
%i | |
%p | |
="- Scratch Events " | |
%tr | |
%td{:style => "padding: 0px 30px 30px 30px; text-align: left; font-family: sans-serif; font-size: 15px; mso-height-rule: exactly; line-height: 20px; color: #555555;"} | |
%h2 | |
Event Details | |
.event-item.relative | |
%strong | |
%i Name | |
%span : | |
= @event.name.split(' - ')[0] | |
.event-item.relative | |
%strong | |
%i Start | |
%span : | |
= @event.start.strftime("%B %e, %l:%M %p") | |
.event-item.relative | |
%strong | |
%i End | |
%span : | |
= @event.end.strftime("%B %e, %l:%M %p") | |
- if @event.description | |
.event-item.relative | |
%strong | |
%i Event Description | |
%span : | |
= @event.description | |
.event-item.relative | |
%strong | |
%i City | |
%span : | |
= "#{@event.venue.city} #{@event.venue.state}" | |
%hr | |
%h2 | |
Venue | |
.detail-wrapper | |
.col.col-md-6.relative | |
.event-item.relative | |
%strong | |
%i Name | |
%span : | |
- if @event.type == "Cruise" || @event.venue.name == nil | |
= @event.type | |
- else | |
= @event.venue.name | |
.event-item.relative | |
%strong | |
%i Address | |
%span : | |
/ = link_to @event.venue.address ? @event.venue.address : @event.venue.city, "https://www.google.com/maps/place/#{@event.venue.latlon.split(',')[0]},#{@event.venue.latlon.split(',')[1]}", target: '_blank' | |
= link_to @event.venue.address ? @event.venue.address : @event.venue.city, "http://maps.google.com/maps?q=#{@event.venue.address} #{@event.venue.city} #{@event.venue.state}", target: '_blank' | |
- if @event.venue.timezone | |
.event-item.relative | |
%strong | |
%i Timezone | |
%span : | |
= @event.venue.timezone | |
%hr | |
%h2 | |
Operations Manager | |
- if @event.operations_manager | |
.detail-wrapper | |
.event-item.relative | |
%strong | |
%i Name | |
%span : | |
= @event.operations_manager.name | |
.event-item.relative | |
%strong | |
%i Email | |
%span : | |
= mail_to @event.operations_manager.email | |
- else | |
.detail-wrapper | |
.event-item.relative | |
%strong | |
%i Name | |
%span : | |
Casey Rueben | |
.event-item.relative | |
%strong | |
%i Email | |
%span : | |
= mail_to 'casey@scratch.com' | |
%hr | |
%h2 | |
Talent | |
.detail-wrapper | |
- if @event.confirmed_events_users.exists? | |
- @event.confirmed_events_users.order(:arrival_time).each_with_index do |eu, i| | |
- if i != 0 | |
%hr | |
.event-item.relative | |
%strong | |
%i Name | |
%span : | |
= eu.user.name | |
.event-item.relative | |
%strong | |
%i DJ Name | |
%span : | |
= eu.user.artist_name | |
- if eu.talent_role | |
.event-item.relative | |
%strong | |
%i Role | |
%span : | |
= eu.talent_role | |
- if eu.arrival_time | |
.event-item.relative | |
%strong | |
%i Arrival Time | |
%span : | |
= eu.arrival_time.strftime("%B %e, %l:%M %p") | |
.event-item.relative | |
%strong | |
%i Phone | |
%span : | |
%a{href: "tel:#{eu.user.sms_number}"}= eu.user.sms_number | |
- else | |
%i.fa.fa-check-square{"aria-hidden" => "true"} | |
%strong | |
%i Talent booking in progress |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class EventMailer < ActionMailer::Base | |
layout 'scratch_events_mail' | |
def event_details(current_user_id, recipient, event_id) | |
@user = User.find(current_user_id) | |
@event = Event.find event_id | |
mail(to: recipient, subject: "Scratch: Event Detail #{@event.start.strftime('%m-%d-%Y')}") | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class EventsController < ApplicationController | |
authorize_resource | |
before_filter :fetch_events, except: [:new, :fm_sync] | |
before_filter :authenticate_current_user | |
def dashboard | |
store_location | |
case params[:view] | |
when 'month' | |
@event_group ||= @all_events.order('start DESC').group_by { |t| t.start.beginning_of_month } | |
when 'year' | |
@event_group ||= @all_events.order('start DESC').group_by { |t| t.start.beginning_of_year } | |
when 'state' | |
@event_group = @all_events.joins(:venue).group("locations.state").select("locations.state").count | |
when 'venue' | |
@event_group = @all_events.joins(:venue).group("locations.name").select("locations.name").count | |
else | |
@event_group ||= @all_events.order('start DESC').group_by { |t| t.start.beginning_of_month } | |
end | |
end | |
def venue_events | |
if params[:state] | |
@value = params[:state] | |
@venue_events = @all_events.order('start DESC').joins(:venue).where('locations.state = ?', @value) | |
else params[:venue] | |
@value = params[:venue] | |
@venue_events = @all_events.order('start DESC').joins(:venue).where('locations.name = ?', @value) | |
end | |
respond_to do |format| | |
format.js { render :action => 'venue_events.js.erb', :layout => false } | |
end | |
end | |
def list_download | |
@event_scope = params["event_scope"] unless params["event_scope"].blank? | |
@q = @all_events.ransack(params[:q]) | |
@q.sorts = "start ASC" if @q.sorts.empty? | |
case @event_scope | |
when "all" | |
relation = @q.result | |
when "past" | |
relation = @q.result.where("events.end < ?", Time.zone.today) | |
else | |
# Upcoming is default | |
relation = @q.result.where("events.end >= ?", Time.zone.today) | |
end | |
events = relation | |
respond_to do |format| | |
format.csv { send_data events.to_csv, filename: "ScratchEvents_#{Time.now.strftime("%B_%d_%Y")}.csv" } | |
end | |
end | |
def index | |
store_location | |
if params[:view] == 'list_view' | |
list_index | |
elsif params[:view] == 'calendar_view' || action_name == 'day_show' | |
@all_events = current_user.all_events | |
render :calendar_index | |
else | |
list_index | |
end | |
end | |
def group_by_day | |
self.start.to_date.to_s(:db) | |
end | |
def day_show | |
store_location(request.url.chomp(".js")) | |
range = params[:date].to_datetime.beginning_of_day..params[:date].to_datetime.end_of_day | |
@events = @all_events.where(start: range) | |
respond_to do |format| | |
format.js { render :action => 'day_show.js.erb', :layout => false} | |
format.html | |
end | |
end | |
def show | |
@event = Event.find(params[:id]) | |
@messages = @event.messages | |
@return_to = stored_location_or_default(events_path) | |
unless current_user.admin_or_manager? || (current_user.company && current_user.company.events.include?(@event)) | |
flash[:error] = "Looks like a permissions error. Email techteam@scratch.com to get this fixed" | |
redirect_to '/' | |
end | |
end | |
def email_event | |
EventMailer.delay.event_details(current_user.id, params[:recipient], params[:event_id]) | |
flash[:notice] = "Successfully sent event details to #{params[:recipient]}" | |
redirect_to action: "show", id: params[:event_id] | |
end | |
def fm_sync | |
@event = Event.find(params[:id]) | |
begin | |
FilemakerEventWorker.perform_async(@event.id) | |
flash[:success] = "Filemaker sync scheduled." | |
rescue => e | |
flash[:error] = e.message | |
end | |
redirect_to event_path(@event) | |
end | |
private | |
def list_index | |
@event_scope = params["event_scope"] unless params["event_scope"].blank? | |
@q = @all_events.ransack(params[:q]) | |
@q.sorts = "start ASC" if @q.sorts.empty? | |
case @event_scope | |
when "all" | |
relation = @q.result | |
when "past" | |
relation = @q.result.where("events.end < ?", Time.zone.today) | |
else | |
# Upcoming is default | |
relation = @q.result.where("events.end >= ?", Time.zone.today) | |
end | |
@events = relation.paginate(page: params[:page]) | |
render :list_index | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.dashboard-page-container#event-show-wrapper.relative | |
.col.col-md-10.col-md-offset-1#event-show-nav | |
.pull-left | |
= link_to(@return_to, class: "btn btn-large btn-primary") do | |
%span.glyphicon.glyphicon-arrow-left | |
%span{style: "position: relative;float: right;margin-left: 10px;top: 4px;"} Back | |
.pull-right | |
= render partial: "events/event_detail_modal" | |
.col.col-md-10.col-md-offset-1 | |
.well | |
.col.col-md-4 | |
.event-title.relative | |
/ = "#{@event.type} Details" | |
Event Details | |
.detail-wrapper | |
.event-item.relative | |
%span Name: | |
%i | |
= @event.name.split(' - ')[0] | |
.event-item.relative | |
%span Start: | |
= display_time(@event.start) | |
.event-item.relative | |
%span End: | |
= display_time(@event.end) | |
- if @event.description | |
.event-item.relative | |
%span Event Description: | |
= @event.description | |
%hr{style: 'color: rgba(0,0,0,0.0);'} | |
- if @event.operations_manager | |
.detail-wrapper | |
.event-item.relative | |
%i Scratch Events Manager: | |
= mail_to @event.operations_manager.email, @event.operations_manager.name | |
- else | |
.detail-wrapper | |
.event-item.relative | |
%i Scratch Events Manager: | |
= mail_to 'casey@scratch.com', 'Casey Rueben' | |
.col.col-md-4 | |
.event-title.relative Venue | |
.detail-wrapper | |
.col.col-md-12.relative | |
.event-item.relative | |
%span Name: | |
- if @event.type == "Cruise" || @event.venue.name == nil | |
= @event.type | |
- else | |
= @event.venue.name | |
.event-item.relative | |
%span Address: | |
/ = link_to @event.venue.address ? @event.venue.address : @event.venue.city, "https://www.google.com/maps/place/#{@event.venue.latlon.split(',')[0]},#{@event.venue.latlon.split(',')[1]}", target: '_blank' | |
= link_to @event.venue.address ? @event.venue.address : @event.venue.city, "http://maps.google.com/maps?q=#{@event.venue.address} #{@event.venue.city} #{@event.venue.state}", target: '_blank' | |
%p | |
%span Location: | |
= "#{@event.venue.city} #{@event.venue.state}" | |
- if @event.venue.store_number | |
.event-item.relative | |
%span Store Number: | |
= "#{@event.venue.store_number} " | |
- if @event.venue.timezone | |
.event-item.relative | |
%span Timezone: | |
= @event.venue.timezone | |
.col.col-md-4#venue-map-wrapper | |
.event-title.relative Map | |
%iframe{:allowfullscreen => "", :frameborder => "0", :height => "250", :src => "https://www.google.com/maps/embed/v1/search?key=#{Rails.application.secrets.google_api_key}&q=#{@event.venue.address} #{@event.venue.city} #{@event.venue.state}", :style => "border:0", :width => "450"} | |
.col.col-md-12 | |
.event-title.relative Talent | |
.detail-wrapper | |
- if @event.confirmed_events_users.exists? | |
- @event.confirmed_events_users.order(:arrival_time).each_with_index do |eu, i| | |
.col.col-md-4.talent-block{style: 'margin-bottom: 20px;'} | |
.event-item.relative | |
%span Name: | |
= eu.user.name | |
.event-item.relative | |
%span DJ Name: | |
= eu.user.artist_name | |
- if eu.talent_role | |
.event-item.relative | |
%span Role: | |
= eu.talent_role | |
- if eu.arrival_time | |
.event-item.relative | |
%span Arrival Time: | |
= display_time(eu.arrival_time) | |
- if eu.end >= Date.today | |
.event-item.relative | |
%span Phone: | |
%a{href: "tel:#{eu.user.sms_number}"}= eu.user.sms_number | |
- else | |
%i Talent booking in progress | |
- if current_user.admin_or_manager? | |
- if !@messages.empty? | |
.col.col-md-12 | |
.event-title.relative Messages | |
= render partial: "messages/messages" | |
.col.col-md-12 | |
.event-title.relative Admin | |
= link_to "Sync this Event with FM", fm_sync_event_path(@event), method: :post, class: "btn btn-primary" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment