allow review and approve

This commit is contained in:
Bilal
2020-07-07 17:19:04 +02:00
parent 19b1e75384
commit d70a19b7d5
11 changed files with 111 additions and 4 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 %>

View File

@@ -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>

View 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>

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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');