allow review and approve
This commit is contained in:
@@ -2,7 +2,7 @@ class MedicalReleasesController < ApplicationController
|
|||||||
include ProjectContext, MedicalReleaseContext
|
include ProjectContext, MedicalReleaseContext
|
||||||
|
|
||||||
before_action :set_project, only: [:index]
|
before_action :set_project, only: [:index]
|
||||||
before_action :set_medical_release, only: [:destroy]
|
before_action :set_medical_release, only: [:destroy, :review, :approve]
|
||||||
|
|
||||||
include ProjectLayout
|
include ProjectLayout
|
||||||
|
|
||||||
@@ -18,6 +18,19 @@ class MedicalReleasesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review
|
||||||
|
@project = @medical_release.project
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve
|
||||||
|
@project = @medical_release.project
|
||||||
|
|
||||||
|
@medical_release.approve_by(current_user)
|
||||||
|
if @medical_release.save
|
||||||
|
redirect_to [@project, :medical_releases], notice: t('.release_approved')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def medical_releases
|
def medical_releases
|
||||||
|
|||||||
@@ -100,6 +100,18 @@ class MedicalRelease < ApplicationRecord
|
|||||||
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def approve_by(user)
|
||||||
|
return unless approved_at.nil?
|
||||||
|
|
||||||
|
self.approved_by_user_name = user.full_name
|
||||||
|
self.approved_by_user_email = user.email
|
||||||
|
self.approved_at = DateTime.now
|
||||||
|
end
|
||||||
|
|
||||||
|
def approved?
|
||||||
|
approved_at.present?
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def valid_answers
|
def valid_answers
|
||||||
|
|||||||
@@ -15,6 +15,14 @@ class MedicalReleasePolicy < ReleasePolicy
|
|||||||
user.manager? || user.account_manager?
|
user.manager? || user.account_manager?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
|
|
||||||
def edit_photos?
|
def edit_photos?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,17 @@
|
|||||||
<tr id="<%= dom_id(medical_release) %>">
|
<tr id="<%= dom_id(medical_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if medical_release.approved? %>
|
||||||
|
<% if medical_release.approved_by_user_name.present? %>
|
||||||
|
<% tooltip_user_data = "#{medical_release.approved_by_user_name} [#{medical_release.approved_by_user_email}]" %>
|
||||||
|
<% else %>
|
||||||
|
<% tooltip_user_data = medical_release.approved_by_user_email %>
|
||||||
|
<% end %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if medical_release.photo.attached? %>
|
<% if medical_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
|
||||||
@@ -37,6 +49,9 @@
|
|||||||
<% if policy(medical_release.tags).new? %>
|
<% if policy(medical_release.tags).new? %>
|
||||||
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, medical_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, medical_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(MedicalRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: "Review"), review_medical_release_path(medical_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (medical_release.contract.attached? || medical_release.contract_template.present?) %>
|
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (medical_release.contract.attached? || medical_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= MedicalRelease.human_attribute_name(:person_name) %></th>
|
<th><%= MedicalRelease.human_attribute_name(:person_name) %></th>
|
||||||
<th><%= MedicalRelease.human_attribute_name(:contact_info) %></th>
|
<th><%= MedicalRelease.human_attribute_name(:contact_info) %></th>
|
||||||
|
|||||||
16
app/views/medical_releases/review.html.erb
Normal file
16
app/views/medical_releases/review.html.erb
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<div class="card shadow-sm">
|
||||||
|
<%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
|
||||||
|
<div class="card-body">
|
||||||
|
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||||
|
|
||||||
|
<%= bootstrap_form_with model: @medical_release, method: :patch, url: [:approve, @medical_release], local: true do |form| %>
|
||||||
|
<% form.hidden_field :approved, value: true %>
|
||||||
|
<div class="row align-items-center text-center mt-4">
|
||||||
|
<%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
|
||||||
|
<div class="col-9">
|
||||||
|
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -773,6 +773,8 @@ en:
|
|||||||
update:
|
update:
|
||||||
notice: The material release has been updated
|
notice: The material release has been updated
|
||||||
medical_releases:
|
medical_releases:
|
||||||
|
approve:
|
||||||
|
release_approved: Medical release has been approved
|
||||||
custom_validation_errors:
|
custom_validation_errors:
|
||||||
question_answer_is_required: answer is required
|
question_answer_is_required: answer is required
|
||||||
destroy:
|
destroy:
|
||||||
@@ -785,9 +787,16 @@ en:
|
|||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
tags: Tags
|
tags: Tags
|
||||||
|
approved: Approved
|
||||||
medical_release:
|
medical_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
|
review:
|
||||||
|
actions:
|
||||||
|
approve: Approve
|
||||||
|
heading: Review Medical Release
|
||||||
misc_releases:
|
misc_releases:
|
||||||
destroy:
|
destroy:
|
||||||
alert: The misc release has been deleted
|
alert: The misc release has been deleted
|
||||||
|
|||||||
@@ -274,6 +274,8 @@ es:
|
|||||||
create: Create Live Stream (ES)
|
create: Create Live Stream (ES)
|
||||||
update: Save Changes (ES)
|
update: Save Changes (ES)
|
||||||
create: 'Crear %{model}'
|
create: 'Crear %{model}'
|
||||||
|
medical_release:
|
||||||
|
update: Approve (ES)
|
||||||
update: 'Actualizar %{model}'
|
update: 'Actualizar %{model}'
|
||||||
location_releases:
|
location_releases:
|
||||||
form:
|
form:
|
||||||
@@ -284,8 +286,20 @@ es:
|
|||||||
photos:
|
photos:
|
||||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
||||||
medical_releases:
|
medical_releases:
|
||||||
|
approve:
|
||||||
|
release_approved: Medical release has been approved (ES)
|
||||||
custom_validation_errors:
|
custom_validation_errors:
|
||||||
question_answer_is_required: answer is required (ES)
|
question_answer_is_required: answer is required (ES)
|
||||||
|
review:
|
||||||
|
actions:
|
||||||
|
approve: Approve (ES)
|
||||||
|
heading: Review Medical Release (ES)
|
||||||
|
index:
|
||||||
|
table_headers:
|
||||||
|
approved: Approved (ES)
|
||||||
|
medical_release:
|
||||||
|
messages:
|
||||||
|
approved_tooltip: ""
|
||||||
public:
|
public:
|
||||||
appearance_releases:
|
appearance_releases:
|
||||||
create:
|
create:
|
||||||
|
|||||||
@@ -137,12 +137,20 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
|
|
||||||
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]
|
RELEASES = [:acquired_media_releases, :appearance_releases, :talent_releases, :material_releases, :location_releases]
|
||||||
ALL_RELEASES = RELEASES + [:music_releases, :medical_releases, :misc_releases]
|
ALL_RELEASES = RELEASES + [:music_releases, :misc_releases]
|
||||||
|
|
||||||
ALL_RELEASES.each do |release|
|
ALL_RELEASES.each do |release|
|
||||||
resources release, only: [], concerns: :taggable
|
resources release, only: [], concerns: :taggable
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Customization for medical releases
|
||||||
|
resources :medical_releases, only: [], concerns: :taggable do
|
||||||
|
member do
|
||||||
|
get :review
|
||||||
|
patch :approve
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :bulk_taggings, only: [:new, :create]
|
resources :bulk_taggings, only: [:new, :create]
|
||||||
|
|
||||||
namespace :api do
|
namespace :api do
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalInfoColumnsToMedicalReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :medical_releases, :approved_by_user_name, :text
|
||||||
|
add_column :medical_releases, :approved_by_user_email, :text
|
||||||
|
add_column :medical_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1045,7 +1045,10 @@ CREATE TABLE public.medical_releases (
|
|||||||
guardian_2_address_city character varying,
|
guardian_2_address_city character varying,
|
||||||
guardian_2_address_state character varying,
|
guardian_2_address_state character varying,
|
||||||
guardian_2_address_zip character varying,
|
guardian_2_address_zip character varying,
|
||||||
guardian_2_address_country character varying
|
guardian_2_address_country character varying,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -3902,6 +3905,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||||||
('20200619134853'),
|
('20200619134853'),
|
||||||
('20200622180507'),
|
('20200622180507'),
|
||||||
('20200625144713'),
|
('20200625144713'),
|
||||||
('20200702152130');
|
('20200702152130'),
|
||||||
|
('20200707155717');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user