Add ability to start lecture and redirect to recorded content.

This commit is contained in:
Joshua Coles 2023-10-04 15:00:23 +01:00
parent 0e0d26d06d
commit 7c96b2c2bc
11 changed files with 69 additions and 5 deletions

View File

@ -1 +1,14 @@
# Lecture Attendance Management System # Lecture Attendance Management System
## Alterations
### Continuum Mechanics
```ruby
continuum_mechanics = Course.find(nil)
continuum_mechanics.import_from_calendar!
continuum_mechanics.lectures.filter { |lecture| lecture.start_time.monday? }.map {|lecture| lecture.update!(kind: Lecture.kinds[:problems_class]) }
continuum_mechanics.lectures.find_by(start_time: '2023-10-02 08:15:00.000000').destroy!
continuum_mechanics.renumber_lectures!
```

View File

@ -2,6 +2,10 @@
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
.action-button {
@apply rounded bg-indigo-600 px-2 py-1 font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600;
}
/* /*
@layer components { @layer components {

View File

@ -0,0 +1,14 @@
class LectureController < ApplicationController
def start
lecture = Lecture.find(params[:id])
Toggl::start_time_entry(
description: lecture.title,
project_id: lecture.course.toggl_project,
)
if lecture.recording.present?
redirect_to lecture.recording.recording_url, allow_other_host: true
end
end
end

View File

@ -0,0 +1,2 @@
module LectureHelper
end

View File

@ -10,4 +10,17 @@ module Toggl
headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' } headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
).body) ).body)
end end
def self.start_time_entry(description:, project_id:)
HTTParty.post(
"http://localhost:3005/start_time_entry",
body: {
"created_with": "Attendance Tracker",
"description": description,
"duration": -1,
"project_id": project_id,
}.to_json,
headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/json' }
)
end
end end

View File

@ -61,6 +61,7 @@ class Course < ApplicationRecord
end end
end end
# What should this do for existing attendances?
def renumber_lectures! def renumber_lectures!
lectures.group_by(&:kind).each do |kind, lectures| lectures.group_by(&:kind).each do |kind, lectures|
lectures.sort_by(&:start_time).each_with_index do |lecture, index| lectures.sort_by(&:start_time).each_with_index do |lecture, index|

View File

@ -5,7 +5,7 @@ class Lecture < ApplicationRecord
enum :kind, [ enum :kind, [
:lecture, :lecture,
:problem_class, :problems_class,
], default: :lecture ], default: :lecture
def week_number def week_number

View File

@ -66,11 +66,14 @@
<td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500"> <td class="whitespace-nowrap px-3 py-4 text-sm text-gray-500">
<% if lecture.attendance.nil? %> <% if lecture.attendance.nil? %>
<button type="button" class="rounded bg-indigo-600 px-2 py-1 font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600"> <%= button_to "Start",
Start lectures_start_path(id: lecture.id),
</button> class: 'action-button'
%>
<% else %> <% else %>
<%= link_to "Open recording", lecture.recording&.recording_url %> <% if lecture.recording %>
<%= link_to "Open recording", lecture.recording&.recording_url %>
<% end %>
<% end %> <% end %>
</td> </td>
<% end %> <% end %>

View File

@ -0,0 +1,4 @@
<div>
<h1 class="font-bold text-4xl">Lecture#start</h1>
<p>Find me in app/views/lecture/start.html.erb</p>
</div>

View File

@ -9,4 +9,6 @@ Rails.application.routes.draw do
end end
root controller: :attendance_tracker, action: :index root controller: :attendance_tracker, action: :index
post '/lectures/:id/start', to: 'lecture#start', as: :lectures_start
end end

View File

@ -0,0 +1,8 @@
require "test_helper"
class LectureControllerTest < ActionDispatch::IntegrationTest
test "should get start" do
get lecture_start_url
assert_response :success
end
end