diff --git a/app/controllers/medical_releases_controller.rb b/app/controllers/medical_releases_controller.rb
index 9c48ce0..46a19c8 100644
--- a/app/controllers/medical_releases_controller.rb
+++ b/app/controllers/medical_releases_controller.rb
@@ -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
diff --git a/app/models/medical_release.rb b/app/models/medical_release.rb
index 5d0692d..c520d8e 100644
--- a/app/models/medical_release.rb
+++ b/app/models/medical_release.rb
@@ -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
diff --git a/app/policies/medical_release_policy.rb b/app/policies/medical_release_policy.rb
index 8866337..9ce60ce 100644
--- a/app/policies/medical_release_policy.rb
+++ b/app/policies/medical_release_policy.rb
@@ -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
diff --git a/app/views/medical_releases/_medical_release.html.erb b/app/views/medical_releases/_medical_release.html.erb
index 29c4b73..74cc105 100644
--- a/app/views/medical_releases/_medical_release.html.erb
+++ b/app/views/medical_releases/_medical_release.html.erb
@@ -1,5 +1,17 @@
| <%= check_box_tag "medical_release_ids[]", medical_release.id, false %> |
+
+ <% 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 %>
+
+ <% end %>
+ |
<% 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 %>
diff --git a/app/views/medical_releases/index.html.erb b/app/views/medical_releases/index.html.erb
index e056d0f..abba148 100644
--- a/app/views/medical_releases/index.html.erb
+++ b/app/views/medical_releases/index.html.erb
@@ -22,6 +22,7 @@
| <%= check_box_tag "medical_release_ids[]", false, false %> |
+ <%= t '.table_headers.approved'%> |
|
<%= MedicalRelease.human_attribute_name(:person_name) %> |
<%= MedicalRelease.human_attribute_name(:contact_info) %> |
diff --git a/app/views/medical_releases/review.html.erb b/app/views/medical_releases/review.html.erb
new file mode 100644
index 0000000..a74f39b
--- /dev/null
+++ b/app/views/medical_releases/review.html.erb
@@ -0,0 +1,16 @@
+
+ <%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
+
+
+
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d09ddeb..06d3c44 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -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
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 439e747..2c8b910 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -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:
diff --git a/config/routes.rb b/config/routes.rb
index d43bfb9..cc855b2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -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
diff --git a/db/migrate/20200707155717_add_approval_info_columns_to_medical_releases.rb b/db/migrate/20200707155717_add_approval_info_columns_to_medical_releases.rb
new file mode 100644
index 0000000..00fa2c7
--- /dev/null
+++ b/db/migrate/20200707155717_add_approval_info_columns_to_medical_releases.rb
@@ -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
diff --git a/db/structure.sql b/db/structure.sql
index 51b4216..616c0ac 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -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');
|