effective_cpd 0.0.1 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +122 -10
  3. data/app/assets/javascripts/effective_cpd/activities.js +6 -0
  4. data/app/controllers/admin/cpd_audit_level_questions_controller.rb +13 -0
  5. data/app/controllers/admin/cpd_audit_levels_controller.rb +13 -0
  6. data/app/controllers/admin/cpd_audit_reviews_controller.rb +13 -0
  7. data/app/controllers/admin/cpd_audits_controller.rb +41 -0
  8. data/app/controllers/admin/cpd_special_rules_controller.rb +13 -0
  9. data/app/controllers/effective/cpd_audit_reviews_controller.rb +60 -0
  10. data/app/controllers/effective/cpd_audits_controller.rb +55 -0
  11. data/app/controllers/effective/cpd_cycles_controller.rb +1 -0
  12. data/app/controllers/effective/cpd_statements_controller.rb +1 -3
  13. data/app/datatables/admin/effective_cpd_audit_level_questions_datatable.rb +30 -0
  14. data/app/datatables/admin/effective_cpd_audit_levels_datatable.rb +34 -0
  15. data/app/datatables/admin/effective_cpd_audit_reviews_datatable.rb +29 -0
  16. data/app/datatables/admin/effective_cpd_audits_datatable.rb +67 -0
  17. data/app/datatables/admin/effective_cpd_special_rules_datatable.rb +23 -0
  18. data/app/datatables/admin/effective_cpd_statements_datatable.rb +3 -3
  19. data/app/datatables/effective_cpd_available_audit_reviews_datatable.rb +37 -0
  20. data/app/datatables/effective_cpd_available_audits_datatable.rb +30 -0
  21. data/app/datatables/{effective_cpd_datatable.rb → effective_cpd_available_cycles_datatable.rb} +3 -4
  22. data/app/datatables/effective_cpd_completed_audit_reviews_datatable.rb +32 -0
  23. data/app/datatables/effective_cpd_completed_audits_datatable.rb +24 -0
  24. data/app/datatables/effective_cpd_completed_statements_datatable.rb +28 -0
  25. data/app/helpers/effective_cpd_audits_helper.rb +48 -0
  26. data/app/helpers/effective_cpd_helper.rb +10 -0
  27. data/app/mailers/effective/cpd_mailer.rb +155 -3
  28. data/app/models/concerns/effective_cpd_user.rb +29 -0
  29. data/app/models/effective/cpd_activity.rb +16 -3
  30. data/app/models/effective/cpd_audit.rb +380 -0
  31. data/app/models/effective/cpd_audit_level.rb +87 -0
  32. data/app/models/effective/cpd_audit_level_question.rb +91 -0
  33. data/app/models/effective/cpd_audit_level_question_option.rb +34 -0
  34. data/app/models/effective/cpd_audit_level_section.rb +50 -0
  35. data/app/models/effective/cpd_audit_response.rb +86 -0
  36. data/app/models/effective/cpd_audit_response_option.rb +6 -0
  37. data/app/models/effective/cpd_audit_review.rb +222 -0
  38. data/app/models/effective/cpd_audit_review_item.rb +34 -0
  39. data/app/models/effective/cpd_category.rb +12 -3
  40. data/app/models/effective/cpd_cycle.rb +18 -2
  41. data/app/models/effective/cpd_rule.rb +23 -6
  42. data/app/models/effective/cpd_scorer.rb +23 -1
  43. data/app/models/effective/cpd_special_rule.rb +54 -0
  44. data/app/models/effective/cpd_special_rule_mate.rb +6 -0
  45. data/app/models/effective/cpd_statement.rb +25 -11
  46. data/app/views/admin/cpd_activities/_form.html.haml +1 -1
  47. data/app/views/admin/cpd_audit_level_questions/_form.html.haml +100 -0
  48. data/app/views/admin/cpd_audit_levels/_form.html.haml +24 -0
  49. data/app/views/admin/cpd_audit_levels/_form_content_audit.html.haml +15 -0
  50. data/app/views/admin/cpd_audit_levels/_form_content_audit_review.html.haml +15 -0
  51. data/app/views/admin/cpd_audit_levels/_form_cpd_audit_level.html.haml +52 -0
  52. data/app/views/admin/cpd_audit_levels/_form_cpd_audit_level_section.html.haml +10 -0
  53. data/app/views/admin/cpd_audit_reviews/_cpd_audit_review.html.haml +1 -0
  54. data/app/views/admin/cpd_audit_reviews/_form.html.haml +13 -0
  55. data/app/views/admin/cpd_audits/_audit_reviewer_fields.html.haml +2 -0
  56. data/app/views/admin/cpd_audits/_auditee_fields.html.haml +2 -0
  57. data/app/views/admin/cpd_audits/_form.html.haml +46 -0
  58. data/app/views/admin/cpd_audits/_form_conflict.html.haml +24 -0
  59. data/app/views/admin/cpd_audits/_form_determination.html.haml +10 -0
  60. data/app/views/admin/cpd_audits/_form_exemption.html.haml +24 -0
  61. data/app/views/admin/cpd_audits/_form_extension.html.haml +24 -0
  62. data/app/views/admin/cpd_audits/_form_new.html.haml +28 -0
  63. data/app/views/admin/cpd_audits/_status.html.haml +121 -0
  64. data/app/views/admin/cpd_categories/_form.html.haml +1 -1
  65. data/app/views/admin/cpd_cycles/_form.html.haml +6 -3
  66. data/app/views/admin/cpd_cycles/_form_content.html.haml +8 -0
  67. data/app/views/admin/cpd_cycles/_form_cpd_cycle.html.haml +3 -0
  68. data/app/views/admin/cpd_cycles/_form_cpd_rules.html.haml +12 -7
  69. data/app/views/admin/cpd_cycles/_form_cpd_special_rules.html.haml +4 -0
  70. data/app/views/admin/cpd_special_rules/_form.html.haml +18 -0
  71. data/app/views/admin/cpd_statements/_cpd_statement.html.haml +7 -0
  72. data/app/views/effective/cpd_audit_level_questions/_cpd_audit_level_question.html.haml +5 -0
  73. data/app/views/effective/cpd_audit_responses/_cpd_audit_response.html.haml +4 -0
  74. data/app/views/effective/cpd_audit_responses/_fields.html.haml +13 -0
  75. data/app/views/effective/cpd_audit_responses/fields/_choose_one.html.haml +1 -0
  76. data/app/views/effective/cpd_audit_responses/fields/_date.html.haml +2 -0
  77. data/app/views/effective/cpd_audit_responses/fields/_email.html.haml +2 -0
  78. data/app/views/effective/cpd_audit_responses/fields/_long_answer.html.haml +1 -0
  79. data/app/views/effective/cpd_audit_responses/fields/_number.html.haml +2 -0
  80. data/app/views/effective/cpd_audit_responses/fields/_select_all_that_apply.html.haml +1 -0
  81. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_1.html.haml +1 -0
  82. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_2.html.haml +1 -0
  83. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_3.html.haml +1 -0
  84. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_4.html.haml +1 -0
  85. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_5.html.haml +1 -0
  86. data/app/views/effective/cpd_audit_responses/fields/_short_answer.html.haml +1 -0
  87. data/app/views/effective/cpd_audit_responses/fields/_upload_file.html.haml +1 -0
  88. data/app/views/effective/cpd_audit_responses/responses/_choose_one.html.haml +1 -0
  89. data/app/views/effective/cpd_audit_responses/responses/_date.html.haml +1 -0
  90. data/app/views/effective/cpd_audit_responses/responses/_email.html.haml +1 -0
  91. data/app/views/effective/cpd_audit_responses/responses/_long_answer.html.haml +1 -0
  92. data/app/views/effective/cpd_audit_responses/responses/_number.html.haml +1 -0
  93. data/app/views/effective/cpd_audit_responses/responses/_select_all_that_apply.html.haml +5 -0
  94. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_1.html.haml +1 -0
  95. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_2.html.haml +5 -0
  96. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_3.html.haml +5 -0
  97. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_4.html.haml +5 -0
  98. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_5.html.haml +5 -0
  99. data/app/views/effective/cpd_audit_responses/responses/_short_answer.html.haml +1 -0
  100. data/app/views/effective/cpd_audit_responses/responses/_upload_file.html.haml +4 -0
  101. data/app/views/effective/cpd_audit_review_items/_cpd_audit_review_item.html.haml +6 -0
  102. data/app/views/effective/cpd_audit_review_items/_fields.html.haml +11 -0
  103. data/app/views/effective/cpd_audit_reviews/_conflict.html.haml +15 -0
  104. data/app/views/effective/cpd_audit_reviews/_cpd_audit_level_section.html.haml +23 -0
  105. data/app/views/effective/cpd_audit_reviews/_cpd_audit_review.html.haml +17 -0
  106. data/app/views/effective/cpd_audit_reviews/_cpd_statement.html.haml +15 -0
  107. data/app/views/effective/cpd_audit_reviews/_layout.html.haml +24 -0
  108. data/app/views/effective/cpd_audit_reviews/_recommendation.html.haml +9 -0
  109. data/app/views/effective/cpd_audit_reviews/_summary.html.haml +47 -0
  110. data/app/views/effective/cpd_audit_reviews/complete.html.haml +20 -0
  111. data/app/views/effective/cpd_audit_reviews/conflict.html.haml +21 -0
  112. data/app/views/effective/cpd_audit_reviews/cpd_audit_level_section.html.haml +43 -0
  113. data/app/views/effective/cpd_audit_reviews/cpd_statement.html.haml +35 -0
  114. data/app/views/effective/cpd_audit_reviews/information.html.haml +5 -0
  115. data/app/views/effective/cpd_audit_reviews/instructions.html.haml +10 -0
  116. data/app/views/effective/cpd_audit_reviews/questionnaire.html.haml +8 -0
  117. data/app/views/effective/cpd_audit_reviews/recommendation.html.haml +21 -0
  118. data/app/views/effective/cpd_audit_reviews/start.html.haml +10 -0
  119. data/app/views/effective/cpd_audit_reviews/statements.html.haml +29 -0
  120. data/app/views/effective/cpd_audit_reviews/submit.html.haml +14 -0
  121. data/app/views/effective/cpd_audit_reviews/waiting.html.haml +9 -0
  122. data/app/views/effective/cpd_audits/_conflict.html.haml +15 -0
  123. data/app/views/effective/cpd_audits/_cpd_audit.html.haml +12 -0
  124. data/app/views/effective/cpd_audits/_cpd_audit_level_section.html.haml +14 -0
  125. data/app/views/effective/cpd_audits/_exemption.html.haml +26 -0
  126. data/app/views/effective/cpd_audits/_extension.html.haml +30 -0
  127. data/app/views/effective/cpd_audits/_files.html.haml +12 -0
  128. data/app/views/effective/cpd_audits/_layout.html.haml +33 -0
  129. data/app/views/effective/cpd_audits/_summary.html.haml +54 -0
  130. data/app/views/effective/cpd_audits/_waiting.html.haml +6 -0
  131. data/app/views/effective/cpd_audits/complete.html.haml +24 -0
  132. data/app/views/effective/cpd_audits/conflict.html.haml +22 -0
  133. data/app/views/effective/cpd_audits/cpd_audit_level_section.html.haml +20 -0
  134. data/app/views/effective/cpd_audits/exemption.html.haml +19 -0
  135. data/app/views/effective/cpd_audits/extension.html.haml +21 -0
  136. data/app/views/effective/cpd_audits/files.html.haml +7 -0
  137. data/app/views/effective/cpd_audits/information.html.haml +5 -0
  138. data/app/views/effective/cpd_audits/instructions.html.haml +5 -0
  139. data/app/views/effective/cpd_audits/questionnaire.html.haml +5 -0
  140. data/app/views/effective/cpd_audits/start.html.haml +11 -0
  141. data/app/views/effective/cpd_audits/submit.html.haml +15 -0
  142. data/app/views/effective/cpd_audits/waiting.html.haml +24 -0
  143. data/app/views/effective/cpd_mailer/README.md +1 -0
  144. data/app/views/effective/cpd_mailer/cpd_audit_closed.liquid +15 -0
  145. data/app/views/effective/cpd_mailer/cpd_audit_conflict_resolved.liquid +15 -0
  146. data/app/views/effective/cpd_mailer/cpd_audit_conflicted.liquid +13 -0
  147. data/app/views/effective/cpd_mailer/cpd_audit_exemption_denied.liquid +13 -0
  148. data/app/views/effective/cpd_mailer/cpd_audit_exemption_granted.liquid +13 -0
  149. data/app/views/effective/cpd_mailer/cpd_audit_exemption_request.liquid +13 -0
  150. data/app/views/effective/cpd_mailer/cpd_audit_extension_denied.liquid +13 -0
  151. data/app/views/effective/cpd_mailer/cpd_audit_extension_granted.liquid +13 -0
  152. data/app/views/effective/cpd_mailer/cpd_audit_extension_request.liquid +13 -0
  153. data/app/views/effective/cpd_mailer/cpd_audit_opened.liquid +13 -0
  154. data/app/views/effective/cpd_mailer/cpd_audit_review_opened.liquid +15 -0
  155. data/app/views/effective/cpd_mailer/cpd_audit_review_ready.liquid +13 -0
  156. data/app/views/effective/cpd_mailer/cpd_audit_review_submitted.liquid +11 -0
  157. data/app/views/effective/cpd_mailer/cpd_audit_reviewed.liquid +13 -0
  158. data/app/views/effective/cpd_mailer/cpd_audit_submitted.liquid +13 -0
  159. data/app/views/effective/cpd_statement_activities/_cpd_statement_activity.html.haml +65 -0
  160. data/app/views/effective/cpd_statement_activities/_form.html.haml +10 -10
  161. data/app/views/effective/cpd_statements/_activities.html.haml +3 -64
  162. data/app/views/effective/cpd_statements/_activities_edit.html.haml +2 -0
  163. data/app/views/effective/cpd_statements/_activities_new.html.haml +3 -0
  164. data/app/views/effective/cpd_statements/_activities_table.html.haml +64 -0
  165. data/app/views/effective/cpd_statements/_agreements.html.haml +19 -5
  166. data/app/views/effective/cpd_statements/_cpd_statement.html.haml +6 -3
  167. data/app/views/effective/cpd_statements/_layout.html.haml +3 -4
  168. data/app/views/effective/cpd_statements/_summary.html.haml +26 -31
  169. data/app/views/effective/cpd_statements/activities.html.haml +1 -1
  170. data/app/views/effective/cpd_statements/agreements.html.haml +7 -1
  171. data/app/views/effective/cpd_statements/submit.html.haml +2 -3
  172. data/config/effective_cpd.rb +49 -10
  173. data/config/routes.rb +19 -1
  174. data/db/migrate/01_create_effective_cpd.rb.erb +175 -1
  175. data/db/seeds.rb +16 -13
  176. data/lib/effective_cpd.rb +42 -3
  177. data/lib/effective_cpd/engine.rb +7 -0
  178. data/lib/effective_cpd/version.rb +1 -1
  179. data/lib/generators/effective_cpd/install_generator.rb +18 -3
  180. metadata +175 -9
  181. data/app/datatables/effective_cpd_statements_datatable.rb +0 -23
  182. data/app/views/admin/cpd_statements/_form.html.haml +0 -6
@@ -0,0 +1,20 @@
1
+ = render('layout') do
2
+ - raise('expected a completed cpd_audit_review') unless resource.completed?
3
+
4
+ .text-center
5
+ .row
6
+ .col-2
7
+ .col-8
8
+ .alert.alert-success Audit Review Submitted!
9
+
10
+ %p
11
+ The following audit review was successfully submitted at
12
+ = succeed('.') do
13
+ = resource.submitted_at.strftime('%F')
14
+
15
+ %p Thank you for your review.
16
+
17
+ .mb-4= render(resource)
18
+
19
+ %br
20
+ .text-center= link_to 'Home', root_path, class: 'btn btn-primary'
@@ -0,0 +1,21 @@
1
+ = render('layout') do
2
+ %p You have been selected to conduct a #{resource.cpd_audit.cpd_audit_level} audit with the following auditee:
3
+
4
+ %ul
5
+ %li #{resource.cpd_audit.user} <#{mail_to(resource.cpd_audit.user.email)}>
6
+
7
+ %p The deadline to declare a conflict of interest is: #{resource.deadline_to_conflict_of_interest.strftime('%F')}.
8
+
9
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
10
+ = f.hidden_field :current_step
11
+
12
+ = f.radios :conflict_of_interest, cpd_audit_conflict_of_interest_collection,
13
+ inline: true, required: true
14
+
15
+ = f.show_if :conflict_of_interest, true do
16
+ = f.text_area :conflict_of_interest_reason, required: true
17
+
18
+ %hr
19
+ = f.text_area :comments, label: 'Reviewer comments'
20
+
21
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,43 @@
1
+ = render('layout') do
2
+ - cpd_audit_level_section = resource.cpd_audit.cpd_audit_level_section(step)
3
+ - raise("no cpd audit section for #{step}") if cpd_audit_level_section.blank?
4
+
5
+ %h2 Review Section
6
+ %p Please review auditee responses to the #{cpd_audit_level_section} section:
7
+
8
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
9
+ = f.hidden_field :current_step
10
+
11
+ - if cpd_audit_level_section.top_content.present?
12
+ .mb-2= cpd_audit_level_section.top_content
13
+
14
+ %table.table.table-hover
15
+ %thead
16
+ %th Question and #{resource.cpd_audit.user}'s Response
17
+ %th #{resource.user}'s Review
18
+ %tbody
19
+ - cpd_audit_level_section.cpd_audit_level_questions.each_with_index do |cpd_audit_level_question, index|
20
+ - cpd_audit_response = resource.cpd_audit.cpd_audit_response(cpd_audit_level_question)
21
+ - next if cpd_audit_response.new_record?
22
+
23
+ - cpd_audit_review_item = resource.cpd_audit_review_item(cpd_audit_response)
24
+
25
+ %tr
26
+ %td
27
+ .mb-3= render(cpd_audit_level_question)
28
+
29
+ %p
30
+ %strong Auditee Response:
31
+
32
+ .mb-3= render(cpd_audit_response)
33
+ %td
34
+ = f.fields_for :cpd_audit_review_items, cpd_audit_review_item do |fi|
35
+ = render('/effective/cpd_audit_review_items/fields', f: fi, cpd_audit_review: resource)
36
+
37
+ - if cpd_audit_level_section.bottom_content.present?
38
+ .mb-2= cpd_audit_level_section.bottom_content
39
+
40
+ %hr
41
+ = f.text_area :comments, label: 'Reviewer comments'
42
+
43
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,35 @@
1
+ = render('layout') do
2
+ - cpd_statement = resource.cpd_statement(step)
3
+ - raise("no cpd statement for #{step}") if cpd_statement.blank?
4
+
5
+ %h2 Review Statement
6
+ .mb-3
7
+ = collapse("#{cpd_statement.to_s}...", card_class: 'mb-3') do
8
+ = render('effective/cpd_statements/cpd_statement', cpd_statement: cpd_statement)
9
+
10
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
11
+ = f.hidden_field :current_step
12
+
13
+ %h2 Review Activities
14
+ %p Please review the following activities:
15
+
16
+ %table.table.table-hover
17
+ %thead
18
+ %th #{resource.cpd_audit.user}'s #{cpd_statement}
19
+ %th #{resource.user}'s Review
20
+ %tbody
21
+ - cpd_statement.cpd_statement_activities.each do |cpd_statement_activity|
22
+ - cpd_audit_review_item = resource.cpd_audit_review_item(cpd_statement_activity)
23
+
24
+ %tr
25
+ %td
26
+ .mb-3
27
+ = render('/effective/cpd_statement_activities/cpd_statement_activity', cpd_statement_activity: cpd_statement_activity)
28
+ %td
29
+ = f.fields_for :cpd_audit_review_items, cpd_audit_review_item do |fi|
30
+ = render('/effective/cpd_audit_review_items/fields', f: fi, cpd_audit_review: resource)
31
+
32
+ %hr
33
+ = f.text_area :comments, label: 'Reviewer comments'
34
+
35
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,5 @@
1
+ = render('layout') do
2
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
3
+ = f.hidden_field :current_step
4
+
5
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,10 @@
1
+ = render('layout') do
2
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
3
+ = f.hidden_field :current_step
4
+
5
+ %hr
6
+
7
+ %p The following rolling comments will be displayed for your use on each step.
8
+ = f.text_area :comments, label: 'Reviewer comments'
9
+
10
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,8 @@
1
+ = render('layout') do
2
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
3
+ = f.hidden_field :current_step
4
+
5
+ %hr
6
+ = f.text_area :comments, label: 'Reviewer comments'
7
+
8
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,21 @@
1
+ = render('layout') do
2
+ .mb-3
3
+ = collapse('Show / hide audit review...', card_class: '') do
4
+ = render(resource)
5
+
6
+ %p Please provide your final recommendation on #{resource.cpd_audit.user}:
7
+
8
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
9
+ = f.hidden_field :current_step
10
+
11
+ - recommendations = resource.cpd_audit_level.recommendations
12
+
13
+ - if recommendations.length > 3
14
+ = f.select :recommendation, recommendations
15
+ - else
16
+ = f.radios :recommendation, recommendations, inline: true
17
+
18
+ %hr
19
+ = f.text_area :comments, label: 'Reviewer comments'
20
+
21
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,10 @@
1
+ = render('layout') do
2
+ %p You have been selected to conduct a #{resource.cpd_audit.cpd_audit_level} audit with the following auditee:
3
+
4
+ %ul
5
+ %li #{resource.cpd_audit.user} <#{mail_to(resource.cpd_audit.user.email)}>
6
+
7
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
8
+ = f.hidden_field :current_step
9
+
10
+ = f.submit 'Start', center: true
@@ -0,0 +1,29 @@
1
+ = render('layout') do
2
+ - auditee = resource.cpd_audit.user
3
+
4
+ %h2 Review Statements
5
+ %p #{auditee} has submitted the following statements:
6
+
7
+ - datatable = EffectiveCpdCompletedStatementsDatatable.new(user_id: auditee.id, actions: false)
8
+
9
+ - if datatable.blank?(self)
10
+ %p
11
+ %strong There are no completed CPD statements from #{auditee}.
12
+ - else
13
+ = render_datatable(datatable, simple: true)
14
+
15
+ %h2 All Statements
16
+ %p Click to expand any statements
17
+
18
+ - datatable.collection.sorted.each do |cpd_statement|
19
+ .mb-3
20
+ = collapse("#{cpd_statement.to_s}...", card_class: 'mb-3') do
21
+ = render('effective/cpd_statements/cpd_statement', cpd_statement: cpd_statement)
22
+
23
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
24
+ = f.hidden_field :current_step
25
+
26
+ %hr
27
+ = f.text_area :comments, label: 'Reviewer comments'
28
+
29
+ = f.submit 'Save and Continue', center: true
@@ -0,0 +1,14 @@
1
+ = render('layout') do
2
+ %p Please review your recommendations before submitting.
3
+
4
+ %p
5
+ Once submitted you
6
+ %strong will not
7
+ be able to change your recommendation.
8
+
9
+ .mb-4= render(resource)
10
+
11
+ = effective_form_with(model: resource, url: wizard_path(step), method: :put) do |f|
12
+ = f.hidden_field :current_step
13
+
14
+ = f.submit 'Submit Audit Review', center: true
@@ -0,0 +1,9 @@
1
+ = render('layout') do
2
+ %h2 Next Step
3
+ %p= cpd_audit_summary_text(resource.cpd_audit)
4
+
5
+ %p
6
+ You may not continue at this time.
7
+ Please wait for an email when this audit becomes available for review.
8
+
9
+ %p Thank you and have a great day!
@@ -0,0 +1,15 @@
1
+ = card(cpd_audit.wizard_step_title(step)) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Conflict of Interest
6
+ %td
7
+ - if cpd_audit.conflict_of_interest?
8
+ Yes, there is a conflict of interest
9
+ - else
10
+ No conflict of interest
11
+
12
+ - if cpd_audit.conflict_of_interest?
13
+ %tr
14
+ %th Reason
15
+ %td= cpd_audit.conflict_of_interest_reason
@@ -0,0 +1,12 @@
1
+ .effective-cpd-audit
2
+ = render('effective/cpd_audits/summary', cpd_audit: cpd_audit)
3
+
4
+ - steps = cpd_audit.required_steps.select { |step| cpd_audit.has_completed_step?(step) }
5
+ - blacklist = [:start, :information, :instructions, :waiting, :questionnaire, :submit, :complete]
6
+
7
+ - (steps - blacklist).each do |step|
8
+ - if cpd_audit.dynamic_wizard_steps.keys.include?(step)
9
+ - cpd_audit_level_section = cpd_audit.cpd_audit_level_section(step) || raise("no cpd audit section for #{step}")
10
+ = render("effective/cpd_audits/cpd_audit_level_section", cpd_audit: cpd_audit, step: step, cpd_audit_level_section: cpd_audit_level_section)
11
+ - else
12
+ = render("effective/cpd_audits/#{step}", cpd_audit: cpd_audit, step: step)
@@ -0,0 +1,14 @@
1
+ = card(cpd_audit.wizard_step_title(step)) do
2
+ %table.table.table-hover
3
+ %thead
4
+ %tr
5
+ %th Question
6
+ %th Response
7
+
8
+ %tbody
9
+ - cpd_audit_level_section.cpd_audit_level_questions.each do |cpd_audit_level_question|
10
+ - cpd_audit_response = cpd_audit.cpd_audit_response(cpd_audit_level_question)
11
+
12
+ %tr
13
+ %td= cpd_audit_level_question
14
+ %td= render('effective/cpd_audit_responses/cpd_audit_response', cpd_audit_response: cpd_audit_response)
@@ -0,0 +1,26 @@
1
+ = card(cpd_audit.wizard_step_title(step)) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Exemption
6
+ %td
7
+ - if cpd_audit.was_exemption_requested?
8
+ Yes, an exemption has been requested
9
+ - else
10
+ No exemption request
11
+
12
+ - if cpd_audit.was_exemption_requested?
13
+ %tr
14
+ %th Reason
15
+ %td= cpd_audit.exemption_request_reason
16
+
17
+ %tr
18
+ %th Status
19
+ %td
20
+ %span.badge.badge-secondary
21
+ - if cpd_audit.exemption_requested?
22
+ Requested
23
+ - elsif cpd_audit.was_exemption_granted?
24
+ Granted
25
+ - elsif cpd_audit.was_exemption_denied?
26
+ Denied
@@ -0,0 +1,30 @@
1
+ = card(cpd_audit.wizard_step_title(step)) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Extension
6
+ %td
7
+ - if cpd_audit.was_extension_requested?
8
+ Yes, an extension has been requested
9
+ - else
10
+ No extension request
11
+
12
+ - if cpd_audit.was_extension_requested?
13
+ %tr
14
+ %th Requested Date
15
+ %td= cpd_audit.extension_request_date&.strftime('%F')
16
+
17
+ %tr
18
+ %th Reason
19
+ %td= cpd_audit.exemption_request_reason
20
+
21
+ %tr
22
+ %th Status
23
+ %td
24
+ %span.badge.badge-secondary
25
+ - if cpd_audit.extension_requested?
26
+ Requested
27
+ - elsif cpd_audit.was_extension_granted?
28
+ Granted
29
+ - elsif cpd_audit.was_extension_denied?
30
+ Denied
@@ -0,0 +1,12 @@
1
+ = card(cpd_audit.wizard_step_title(step)) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Files
6
+ %td
7
+ - if cpd_audit.files.blank?
8
+ None
9
+ - else
10
+ %ul
11
+ - cpd_audit.files.each do |file|
12
+ %li= link_to(file.filename, url_for(file), target: '_blank')
@@ -0,0 +1,33 @@
1
+ .row
2
+ .col-3
3
+ = render_wizard_sidebar(resource)
4
+
5
+ - last_3_cycles = Effective::CpdCycle.sorted.where('start_at <= ?', Time.zone.now).last(3)
6
+ - last_3_scores = Effective::CpdStatement.where(cpd_cycle: last_3_cycles, user: resource.user).sum(&:score)
7
+
8
+ %table.table.mt-4
9
+ %tbody
10
+ - if resource.due_date.present? && !resource.was_submitted?
11
+ %tr{title: "#{resource} is due on #{resource.due_date.strftime('%F')}"}
12
+ %td
13
+ %h4= (resource.due_date - Time.zone.now.to_date).to_i.abs
14
+
15
+ %td
16
+ = (Time.zone.now > resource.due_date) ? 'days overdue' : 'days left to submit'
17
+
18
+ %tr
19
+ %td
20
+ %h4= last_3_scores.to_i
21
+
22
+ %td #{cpd_credits_label} in last 3 #{cpd_cycles_label} (including this #{cpd_cycle_label})
23
+
24
+ .col-9
25
+ %h1= @page_title
26
+
27
+ - if resource.cpd_audit_level.rich_text_all_steps_audit_content.present?
28
+ .mb-2= resource.cpd_audit_level.rich_text_all_steps_audit_content
29
+
30
+ - if resource.cpd_audit_level.send("rich_text_#{step}_audit_content").present?
31
+ .mb-2= resource.cpd_audit_level.send("rich_text_#{step}_audit_content")
32
+
33
+ = yield
@@ -0,0 +1,54 @@
1
+ = card(cpd_audit) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Auditee
6
+ %td
7
+ = cpd_audit.user
8
+ %br
9
+ %small= mail_to cpd_audit.user.email
10
+
11
+ - if request.path.start_with?('/admin') && respond_to?(:edit_admin_user_path)
12
+ %tr
13
+ %th User
14
+ %td= link_to(cpd_audit.user, edit_admin_user_path(cpd_audit.user))
15
+
16
+ %tr
17
+ %th Audit Reviewer
18
+ %td
19
+ - cpd_audit.cpd_audit_reviews.each do |cpd_audit_review|
20
+ %p
21
+ = cpd_audit_review.user
22
+ %br
23
+ %small= mail_to cpd_audit_review.user.email
24
+
25
+ %tr
26
+ %th Date of notification
27
+ %td= cpd_audit.notification_date.strftime('%F')
28
+
29
+ - if cpd_audit.extension_date.present?
30
+ %tr
31
+ %th Approved date of extension
32
+ %td= cpd_audit.extension_date.strftime('%F')
33
+
34
+ %tr
35
+ %th Due date
36
+ %td= cpd_audit.due_date.strftime('%F')
37
+
38
+ - if cpd_audit.completed?
39
+ %tr
40
+ %th Submitted on
41
+ %td= cpd_audit.submitted_at.strftime('%F')
42
+
43
+ %tr
44
+ %th Status
45
+ %td
46
+ %span.badge.badge-secondary= cpd_audit.status
47
+
48
+ %tr
49
+ %th Determination
50
+ %td= cpd_audit.determination.presence || '-'
51
+
52
+ %tr
53
+ %th Summary
54
+ %td= cpd_audit_summary_text(cpd_audit)