Files
old-holivud2/app/controllers/video_analyses/unreleased_appearances_controller.rb
2020-05-31 22:38:19 +02:00

78 lines
2.2 KiB
Ruby

class VideoAnalyses::UnreleasedAppearancesController < ApplicationController
before_action :set_video, except: [:edit, :update, :destroy]
def new
@unreleased_appearance = @video.unreleased_appearances.build(unreleased_appearance_params)
@edl_events_data = build_presenter.present
@unreleased_appearance.attributes = @edl_events_data[:edl_attributes]
end
def create
@unreleased_appearance = @video.unreleased_appearances.build(unreleased_appearance_params)
@unreleased_appearance.save
@unreleased_appearances_data = UnreleasedAppearancesPresenter.new.present(@video.unreleased_appearances)
end
def edit
@unreleased_appearance = find_unreleased_appearance
@video = @unreleased_appearance.video
@edl_events_data = build_presenter.present
end
def update
unreleased_appearance = find_unreleased_appearance
unreleased_appearance.update(unreleased_appearance_params)
@unreleased_appearances_data = UnreleasedAppearancesPresenter.new.present(unreleased_appearance.video.unreleased_appearances)
end
def destroy
unreleased_appearance = find_unreleased_appearance
video = unreleased_appearance.video
unreleased_appearance.destroy
@unreleased_appearances_data = UnreleasedAppearancesPresenter.new.present(video.unreleased_appearances)
end
private
def build_presenter
EdlEventsPresenter.new(EdlEventGateway.new(FilesForRequest.new(@video), @unreleased_appearance.appears_at, @unreleased_appearance.appears_at))
end
def unreleased_appearance_params
params
.require(:unreleased_appearance)
.permit(
:notes,
:time_elapsed,
:channel,
:timecode_in,
:timecode_out,
:duration,
:source_file_name,
:clip_name,
:description,
:note_category
)
end
def unreleased_appearances
if @video
policy_scope(@video.unreleased_appearances)
else
policy_scope(UnreleasedAppearance)
end
end
def videos
policy_scope(Video)
end
def find_unreleased_appearance
authorize unreleased_appearances.find(params[:id])
end
def set_video
@video = authorize videos.find(params[:video_id])
end
end