allow review and approve
This commit is contained in:
@@ -2,7 +2,7 @@ class MedicalReleasesController < ApplicationController
|
||||
include ProjectContext, MedicalReleaseContext
|
||||
|
||||
before_action :set_project, only: [:index]
|
||||
before_action :set_medical_release, only: [:destroy]
|
||||
before_action :set_medical_release, only: [:destroy, :review, :approve]
|
||||
|
||||
include ProjectLayout
|
||||
|
||||
@@ -18,6 +18,19 @@ class MedicalReleasesController < ApplicationController
|
||||
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
|
||||
|
||||
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}"
|
||||
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
|
||||
|
||||
def valid_answers
|
||||
|
||||
@@ -15,6 +15,14 @@ class MedicalReleasePolicy < ReleasePolicy
|
||||
user.manager? || user.account_manager?
|
||||
end
|
||||
|
||||
def review?
|
||||
user.account_manager?
|
||||
end
|
||||
|
||||
def approve?
|
||||
review?
|
||||
end
|
||||
|
||||
def edit_photos?
|
||||
true
|
||||
end
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
<tr id="<%= dom_id(medical_release) %>">
|
||||
<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>
|
||||
<% if medical_release.photo.attached? %>
|
||||
<%= image_tag medium_variant(medical_release.photo), class: "img-fluid" %>
|
||||
@@ -37,6 +49,9 @@
|
||||
<% 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 %>
|
||||
<% 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?) %>
|
||||
<%= link_to fa_icon("download fw", text: "Download"), [medical_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||
<% end %>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th data-behavior="all-selectable"><%= check_box_tag "medical_release_ids[]", false, false %></th>
|
||||
<th><%= t '.table_headers.approved'%></th>
|
||||
<th></th>
|
||||
<th><%= MedicalRelease.human_attribute_name(:person_name) %></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:
|
||||
notice: The material release has been updated
|
||||
medical_releases:
|
||||
approve:
|
||||
release_approved: Medical release has been approved
|
||||
custom_validation_errors:
|
||||
question_answer_is_required: answer is required
|
||||
destroy:
|
||||
@@ -785,9 +787,16 @@ en:
|
||||
notes: Notes
|
||||
signed_at: Date Signed
|
||||
tags: Tags
|
||||
approved: Approved
|
||||
medical_release:
|
||||
actions:
|
||||
manage: Manage
|
||||
messages:
|
||||
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||
review:
|
||||
actions:
|
||||
approve: Approve
|
||||
heading: Review Medical Release
|
||||
misc_releases:
|
||||
destroy:
|
||||
alert: The misc release has been deleted
|
||||
|
||||
@@ -274,6 +274,8 @@ es:
|
||||
create: Create Live Stream (ES)
|
||||
update: Save Changes (ES)
|
||||
create: 'Crear %{model}'
|
||||
medical_release:
|
||||
update: Approve (ES)
|
||||
update: 'Actualizar %{model}'
|
||||
location_releases:
|
||||
form:
|
||||
@@ -284,8 +286,20 @@ es:
|
||||
photos:
|
||||
dropzone_label: Tap to take a photo of Licensed Material (optional) (ES)
|
||||
medical_releases:
|
||||
approve:
|
||||
release_approved: Medical release has been approved (ES)
|
||||
custom_validation_errors:
|
||||
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:
|
||||
appearance_releases:
|
||||
create:
|
||||
|
||||
@@ -137,12 +137,20 @@ Rails.application.routes.draw do
|
||||
end
|
||||
|
||||
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|
|
||||
resources release, only: [], concerns: :taggable
|
||||
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]
|
||||
|
||||
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_state 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'),
|
||||
('20200622180507'),
|
||||
('20200625144713'),
|
||||
('20200702152130');
|
||||
('20200702152130'),
|
||||
('20200707155717');
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user