From 8e80dec57ac27f3e9ce6d3284b8aad8d8516f44b Mon Sep 17 00:00:00 2001
From: Tyler Lemburg <trlemburg@gmail.com>
Date: Fri, 17 Jun 2016 13:34:31 -0500
Subject: [PATCH] Agenda

---
 routes/admin/agenda.rb |  34 +++++++++++++
 views/admin/agenda.erb | 113 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 147 insertions(+)
 create mode 100644 routes/admin/agenda.rb
 create mode 100644 views/admin/agenda.erb

diff --git a/routes/admin/agenda.rb b/routes/admin/agenda.rb
new file mode 100644
index 0000000..fcd3a3a
--- /dev/null
+++ b/routes/admin/agenda.rb
@@ -0,0 +1,34 @@
+before '/:service_space_url_name/admin/agenda*' do
+	unless @user.has_permission?(Permission::SEE_AGENDA, @space)
+		raise Sinatra::NotFound
+	end
+end
+
+get '/:service_space_url_name/admin/agenda/' do
+	@breadcrumbs << {:text => 'Agenda'}
+	date = params[:date].nil? ? Time.now.midnight : Time.parse(params[:date])
+
+	reservations = Reservation.includes(:user, :resource, :event).in_day(date).order(:start_time)
+	events = Event.includes(:event_type).in_day(date).order(:start_time)
+
+	# get the hours for this day to show
+	hours = SpaceHour.where(:service_space_id => @space.id)
+		.where('effective_date <= ?', date.utc.strftime('%Y-%m-%d %H:%M:%S'))
+		.order(:effective_date => :desc, :id => :desc).all.to_a
+
+	correct_hour = nil
+
+	hours.each do |space_hour|
+		if date.wday == space_hour.day_of_week && (space_hour.effective_date.in_time_zone.midnight == date.in_time_zone.midnight || (!space_hour.one_off && space_hour.effective_date.in_time_zone.midnight <= date.in_time_zone.midnight))
+			correct_hour = space_hour
+			break
+		end
+	end
+
+	erb :'admin/agenda', :layout => :fixed, :locals => {
+		:reservations => reservations,
+		:events => events,
+		:date => date,
+		:space_hour => correct_hour
+	}
+end
\ No newline at end of file
diff --git a/views/admin/agenda.erb b/views/admin/agenda.erb
new file mode 100644
index 0000000..3be8c92
--- /dev/null
+++ b/views/admin/agenda.erb
@@ -0,0 +1,113 @@
+<form style="float: right; width: 320px;">
+    <div class="offset-field-group">
+        <label for="date">Go to another date:</label>
+        <div class="date-time-select">
+            <span class="wdn-icon-calendar"></span>
+            <input style="width: 90%;" id="date" name="date" title="Reservation Date" type="text" class="datepicker" value="<%= date.strftime('%m/%d/%Y') %>" />
+        </div>
+    </div>
+</form>
+
+<div id="pagetitle">
+	<h3>Today's Agenda<span class="wdn-subhead"><%= date.strftime('%B %d, %Y') %></h3>
+</div>
+
+
+<h4>
+Today's Hours
+</h4>
+<% unless space_hour.nil? %>
+    <%= space_hour.hours.map do |record|
+        start_time = date + record[:start].minutes
+        end_time = date + record[:end].minutes
+        "#{record[:status].capitalize_all}: #{start_time.in_time_zone.strftime('%l:%M %P')} - #{end_time.in_time_zone.strftime('%l:%M %P')}"
+    end.join(', ') %>
+<% else %>
+    The space is open all day.
+<% end %>
+
+<h4>
+Today's Reservations
+</h4>
+<% if reservations.empty? %>
+No reservations today. Hopefully someone will still come in to use the space!<br>
+<% else %>
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Tool</th>
+            <th>Time</th>
+        </tr>
+    </thead>
+    <tbody>
+    <% reservations.each do |reservation| %>
+        <tr>
+            <td>
+                <% if reservation.user %>
+                <%= reservation.user.full_name %>
+                <% elsif !reservation.event.nil? %>
+                <strong>Event:</strong> <%= reservation.event.title %>
+                <% end %>
+            </td>
+            <td>
+                <%= reservation.resource.name %>
+            </td>
+            <td>
+            	<%= reservation.start_time.in_time_zone.strftime('%l:%M %P') %><br>
+            	<%= reservation.length %> minutes
+            </td>
+        </tr>
+    <% end %>
+    </tbody>
+</table>
+<% end %>
+
+<h4>
+Today's Events
+</h4>
+<% if events.empty? %>
+No events today. Perhaps you'd like to create one?<br>
+<a href="/admin/events/create/" class="wdn-button wdn-button-brand">New Event</a>
+<% else %>
+<table>
+    <thead>
+        <tr>
+            <th>Title</th>
+            <th>Date/Location</th>
+            <th>Type</th>
+        </tr>
+    </thead>
+    <tbody>
+    <% events.each do |event| %>
+        <tr>
+            <td>
+                <a title="Edit Event" href="<%= event.edit_link %>"><%= event.title %></a>
+            </td>
+            <td>
+                <%= event.start_time.in_time_zone.strftime('%m/%d/%Y @ %l:%M %P') %><br>
+                <%= event.location.name %>
+            </td>
+            <td>
+                <%= event.type.name %>
+            </td>
+        </tr>
+    <% end %>
+    </tbody>
+</table>
+<br>
+<a href="/admin/events/" class="wdn-button wdn-button-triad">Go To Events</a>
+<% end %>
+
+<script type="text/javascript">
+WDN.initializePlugin('jqueryui', [function() {  
+    $ = require('jquery');
+    $('.datepicker').datepicker();
+    $("LINK[href^='//unlcms.unl.edu/wdn/templates_4.0/scripts/plugins/ui/css/jquery-ui.min.css']").remove();
+
+    $('#date').change(function () {
+        var date = $('#date').val().split('/');
+        window.location = window.location.href.split('?')[0] + '?date=' + date[2] + '-' + date[0] + '-' + date[1];
+    });
+}]);
+</script>
-- 
GitLab