effective_cpd 0.0.1 → 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +89 -10
  3. data/app/controllers/admin/cpd_audit_level_questions_controller.rb +13 -0
  4. data/app/controllers/admin/cpd_audit_levels_controller.rb +13 -0
  5. data/app/controllers/admin/cpd_audit_reviews_controller.rb +13 -0
  6. data/app/controllers/admin/cpd_audits_controller.rb +41 -0
  7. data/app/controllers/effective/cpd_audit_reviews_controller.rb +60 -0
  8. data/app/controllers/effective/cpd_audits_controller.rb +55 -0
  9. data/app/controllers/effective/cpd_cycles_controller.rb +1 -0
  10. data/app/controllers/effective/cpd_statements_controller.rb +1 -3
  11. data/app/datatables/admin/effective_cpd_audit_level_questions_datatable.rb +30 -0
  12. data/app/datatables/admin/effective_cpd_audit_levels_datatable.rb +34 -0
  13. data/app/datatables/admin/effective_cpd_audit_reviews_datatable.rb +29 -0
  14. data/app/datatables/admin/effective_cpd_audits_datatable.rb +67 -0
  15. data/app/datatables/admin/effective_cpd_statements_datatable.rb +3 -3
  16. data/app/datatables/effective_cpd_available_audit_reviews_datatable.rb +37 -0
  17. data/app/datatables/effective_cpd_available_audits_datatable.rb +30 -0
  18. data/app/datatables/{effective_cpd_datatable.rb → effective_cpd_available_cycles_datatable.rb} +3 -4
  19. data/app/datatables/effective_cpd_completed_audit_reviews_datatable.rb +32 -0
  20. data/app/datatables/effective_cpd_completed_audits_datatable.rb +24 -0
  21. data/app/datatables/effective_cpd_completed_statements_datatable.rb +28 -0
  22. data/app/helpers/effective_cpd_audits_helper.rb +48 -0
  23. data/app/mailers/effective/cpd_mailer.rb +155 -3
  24. data/app/models/effective/cpd_activity.rb +16 -3
  25. data/app/models/effective/cpd_audit.rb +380 -0
  26. data/app/models/effective/cpd_audit_level.rb +87 -0
  27. data/app/models/effective/cpd_audit_level_question.rb +91 -0
  28. data/app/models/effective/cpd_audit_level_question_option.rb +34 -0
  29. data/app/models/effective/cpd_audit_level_section.rb +50 -0
  30. data/app/models/effective/cpd_audit_response.rb +86 -0
  31. data/app/models/effective/cpd_audit_response_option.rb +6 -0
  32. data/app/models/effective/cpd_audit_review.rb +222 -0
  33. data/app/models/effective/cpd_audit_review_item.rb +34 -0
  34. data/app/models/effective/cpd_category.rb +12 -3
  35. data/app/models/effective/cpd_cycle.rb +7 -0
  36. data/app/models/effective/cpd_rule.rb +3 -1
  37. data/app/models/effective/cpd_statement.rb +15 -8
  38. data/app/views/admin/cpd_activities/_form.html.haml +1 -1
  39. data/app/views/admin/cpd_audit_level_questions/_form.html.haml +100 -0
  40. data/app/views/admin/cpd_audit_levels/_form.html.haml +24 -0
  41. data/app/views/admin/cpd_audit_levels/_form_content_audit.html.haml +15 -0
  42. data/app/views/admin/cpd_audit_levels/_form_content_audit_review.html.haml +15 -0
  43. data/app/views/admin/cpd_audit_levels/_form_cpd_audit_level.html.haml +52 -0
  44. data/app/views/admin/cpd_audit_levels/_form_cpd_audit_level_section.html.haml +10 -0
  45. data/app/views/admin/cpd_audit_reviews/_cpd_audit_review.html.haml +1 -0
  46. data/app/views/admin/cpd_audit_reviews/_form.html.haml +13 -0
  47. data/app/views/admin/cpd_audits/_audit_reviewer_fields.html.haml +2 -0
  48. data/app/views/admin/cpd_audits/_auditee_fields.html.haml +2 -0
  49. data/app/views/admin/cpd_audits/_form.html.haml +46 -0
  50. data/app/views/admin/cpd_audits/_form_conflict.html.haml +24 -0
  51. data/app/views/admin/cpd_audits/_form_determination.html.haml +10 -0
  52. data/app/views/admin/cpd_audits/_form_exemption.html.haml +24 -0
  53. data/app/views/admin/cpd_audits/_form_extension.html.haml +24 -0
  54. data/app/views/admin/cpd_audits/_form_new.html.haml +28 -0
  55. data/app/views/admin/cpd_audits/_status.html.haml +121 -0
  56. data/app/views/admin/cpd_categories/_form.html.haml +1 -1
  57. data/app/views/admin/cpd_cycles/_form.html.haml +4 -4
  58. data/app/views/admin/cpd_cycles/_form_cpd_cycle.html.haml +3 -0
  59. data/app/views/admin/cpd_statements/_cpd_statement.html.haml +7 -0
  60. data/app/views/effective/cpd_audit_level_questions/_cpd_audit_level_question.html.haml +5 -0
  61. data/app/views/effective/cpd_audit_responses/_cpd_audit_response.html.haml +4 -0
  62. data/app/views/effective/cpd_audit_responses/_fields.html.haml +13 -0
  63. data/app/views/effective/cpd_audit_responses/fields/_choose_one.html.haml +1 -0
  64. data/app/views/effective/cpd_audit_responses/fields/_date.html.haml +2 -0
  65. data/app/views/effective/cpd_audit_responses/fields/_email.html.haml +2 -0
  66. data/app/views/effective/cpd_audit_responses/fields/_long_answer.html.haml +1 -0
  67. data/app/views/effective/cpd_audit_responses/fields/_number.html.haml +2 -0
  68. data/app/views/effective/cpd_audit_responses/fields/_select_all_that_apply.html.haml +1 -0
  69. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_1.html.haml +1 -0
  70. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_2.html.haml +1 -0
  71. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_3.html.haml +1 -0
  72. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_4.html.haml +1 -0
  73. data/app/views/effective/cpd_audit_responses/fields/_select_up_to_5.html.haml +1 -0
  74. data/app/views/effective/cpd_audit_responses/fields/_short_answer.html.haml +1 -0
  75. data/app/views/effective/cpd_audit_responses/fields/_upload_file.html.haml +1 -0
  76. data/app/views/effective/cpd_audit_responses/responses/_choose_one.html.haml +1 -0
  77. data/app/views/effective/cpd_audit_responses/responses/_date.html.haml +1 -0
  78. data/app/views/effective/cpd_audit_responses/responses/_email.html.haml +1 -0
  79. data/app/views/effective/cpd_audit_responses/responses/_long_answer.html.haml +1 -0
  80. data/app/views/effective/cpd_audit_responses/responses/_number.html.haml +1 -0
  81. data/app/views/effective/cpd_audit_responses/responses/_select_all_that_apply.html.haml +5 -0
  82. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_1.html.haml +1 -0
  83. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_2.html.haml +5 -0
  84. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_3.html.haml +5 -0
  85. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_4.html.haml +5 -0
  86. data/app/views/effective/cpd_audit_responses/responses/_select_up_to_5.html.haml +5 -0
  87. data/app/views/effective/cpd_audit_responses/responses/_short_answer.html.haml +1 -0
  88. data/app/views/effective/cpd_audit_responses/responses/_upload_file.html.haml +4 -0
  89. data/app/views/effective/cpd_audit_review_items/_cpd_audit_review_item.html.haml +6 -0
  90. data/app/views/effective/cpd_audit_review_items/_fields.html.haml +11 -0
  91. data/app/views/effective/cpd_audit_reviews/_conflict.html.haml +15 -0
  92. data/app/views/effective/cpd_audit_reviews/_cpd_audit_level_section.html.haml +23 -0
  93. data/app/views/effective/cpd_audit_reviews/_cpd_audit_review.html.haml +17 -0
  94. data/app/views/effective/cpd_audit_reviews/_cpd_statement.html.haml +15 -0
  95. data/app/views/effective/cpd_audit_reviews/_layout.html.haml +24 -0
  96. data/app/views/effective/cpd_audit_reviews/_recommendation.html.haml +9 -0
  97. data/app/views/effective/cpd_audit_reviews/_summary.html.haml +47 -0
  98. data/app/views/effective/cpd_audit_reviews/complete.html.haml +20 -0
  99. data/app/views/effective/cpd_audit_reviews/conflict.html.haml +21 -0
  100. data/app/views/effective/cpd_audit_reviews/cpd_audit_level_section.html.haml +43 -0
  101. data/app/views/effective/cpd_audit_reviews/cpd_statement.html.haml +35 -0
  102. data/app/views/effective/cpd_audit_reviews/information.html.haml +5 -0
  103. data/app/views/effective/cpd_audit_reviews/instructions.html.haml +10 -0
  104. data/app/views/effective/cpd_audit_reviews/questionnaire.html.haml +8 -0
  105. data/app/views/effective/cpd_audit_reviews/recommendation.html.haml +21 -0
  106. data/app/views/effective/cpd_audit_reviews/start.html.haml +10 -0
  107. data/app/views/effective/cpd_audit_reviews/statements.html.haml +29 -0
  108. data/app/views/effective/cpd_audit_reviews/submit.html.haml +14 -0
  109. data/app/views/effective/cpd_audit_reviews/waiting.html.haml +9 -0
  110. data/app/views/effective/cpd_audits/_conflict.html.haml +15 -0
  111. data/app/views/effective/cpd_audits/_cpd_audit.html.haml +12 -0
  112. data/app/views/effective/cpd_audits/_cpd_audit_level_section.html.haml +14 -0
  113. data/app/views/effective/cpd_audits/_exemption.html.haml +26 -0
  114. data/app/views/effective/cpd_audits/_extension.html.haml +30 -0
  115. data/app/views/effective/cpd_audits/_files.html.haml +12 -0
  116. data/app/views/effective/cpd_audits/_layout.html.haml +33 -0
  117. data/app/views/effective/cpd_audits/_summary.html.haml +54 -0
  118. data/app/views/effective/cpd_audits/_waiting.html.haml +6 -0
  119. data/app/views/effective/cpd_audits/complete.html.haml +24 -0
  120. data/app/views/effective/cpd_audits/conflict.html.haml +22 -0
  121. data/app/views/effective/cpd_audits/cpd_audit_level_section.html.haml +20 -0
  122. data/app/views/effective/cpd_audits/exemption.html.haml +19 -0
  123. data/app/views/effective/cpd_audits/extension.html.haml +21 -0
  124. data/app/views/effective/cpd_audits/files.html.haml +7 -0
  125. data/app/views/effective/cpd_audits/information.html.haml +5 -0
  126. data/app/views/effective/cpd_audits/instructions.html.haml +5 -0
  127. data/app/views/effective/cpd_audits/questionnaire.html.haml +5 -0
  128. data/app/views/effective/cpd_audits/start.html.haml +11 -0
  129. data/app/views/effective/cpd_audits/submit.html.haml +15 -0
  130. data/app/views/effective/cpd_audits/waiting.html.haml +24 -0
  131. data/app/views/effective/cpd_mailer/README.md +1 -0
  132. data/app/views/effective/cpd_mailer/cpd_audit_closed.liquid +15 -0
  133. data/app/views/effective/cpd_mailer/cpd_audit_conflict_resolved.liquid +15 -0
  134. data/app/views/effective/cpd_mailer/cpd_audit_conflicted.liquid +13 -0
  135. data/app/views/effective/cpd_mailer/cpd_audit_exemption_denied.liquid +13 -0
  136. data/app/views/effective/cpd_mailer/cpd_audit_exemption_granted.liquid +13 -0
  137. data/app/views/effective/cpd_mailer/cpd_audit_exemption_request.liquid +13 -0
  138. data/app/views/effective/cpd_mailer/cpd_audit_extension_denied.liquid +13 -0
  139. data/app/views/effective/cpd_mailer/cpd_audit_extension_granted.liquid +13 -0
  140. data/app/views/effective/cpd_mailer/cpd_audit_extension_request.liquid +13 -0
  141. data/app/views/effective/cpd_mailer/cpd_audit_opened.liquid +13 -0
  142. data/app/views/effective/cpd_mailer/cpd_audit_review_opened.liquid +15 -0
  143. data/app/views/effective/cpd_mailer/cpd_audit_review_ready.liquid +13 -0
  144. data/app/views/effective/cpd_mailer/cpd_audit_review_submitted.liquid +11 -0
  145. data/app/views/effective/cpd_mailer/cpd_audit_reviewed.liquid +13 -0
  146. data/app/views/effective/cpd_mailer/cpd_audit_submitted.liquid +13 -0
  147. data/app/views/effective/cpd_statement_activities/_cpd_statement_activity.html.haml +65 -0
  148. data/app/views/effective/cpd_statement_activities/_form.html.haml +9 -10
  149. data/app/views/effective/cpd_statements/_activities.html.haml +3 -64
  150. data/app/views/effective/cpd_statements/_activities_edit.html.haml +2 -0
  151. data/app/views/effective/cpd_statements/_activities_table.html.haml +64 -0
  152. data/app/views/effective/cpd_statements/_agreements.html.haml +19 -5
  153. data/app/views/effective/cpd_statements/_cpd_statement.html.haml +6 -3
  154. data/app/views/effective/cpd_statements/_summary.html.haml +26 -31
  155. data/app/views/effective/cpd_statements/activities.html.haml +1 -1
  156. data/app/views/effective/cpd_statements/agreements.html.haml +7 -1
  157. data/app/views/effective/cpd_statements/submit.html.haml +1 -1
  158. data/config/effective_cpd.rb +47 -10
  159. data/config/routes.rb +18 -1
  160. data/db/migrate/01_create_effective_cpd.rb.erb +157 -1
  161. data/db/seeds.rb +2 -1
  162. data/lib/effective_cpd.rb +42 -3
  163. data/lib/effective_cpd/version.rb +1 -1
  164. data/lib/generators/effective_cpd/install_generator.rb +16 -3
  165. metadata +168 -9
  166. data/app/datatables/effective_cpd_statements_datatable.rb +0 -23
  167. data/app/views/admin/cpd_statements/_form.html.haml +0 -6
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'CPD Audit exemption request from {{ auditee.name }}'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello Admin,
6
+
7
+ The auditee {{ auditee.name }} has requested an exemption.
8
+
9
+ Please process this exemption request.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'Your CPD Audit extension request was denied'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello {{ auditee.name }},
6
+
7
+ Your CPD Audit extension request has been denied.
8
+
9
+ The deadline remains.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'Your CPD Audit extension request was granted'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello {{ auditee.name }},
6
+
7
+ Your CPD Audit extension request has been granted.
8
+
9
+ Your deadline has been updated.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'CPD Audit extension request from {{ auditee.name }}'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello Admin,
6
+
7
+ The auditee {{ auditee.name }} has requested an extension.
8
+
9
+ Please process this extension request.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'You have been selected for CPD Audit'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello {{ auditee.name }},
6
+
7
+ You have been selected for CPD audit.
8
+
9
+ Please begin here.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,15 @@
1
+ ---
2
+ subject: 'You have been selected to CPD Audit Review {{ auditee.name }}'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello {{ reviewer.name }},
6
+
7
+ You have been selected to to perform a CPD Audit review of {{ auditee.name }}.
8
+
9
+ The auditee needs time to complete their audit questionnaire, so there is nothing to review just yet.
10
+
11
+ You will receive another email after the auditee has submitted their audit questionnaire.
12
+
13
+ {{ url }}
14
+
15
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'Your CPD Audit Review of {{ auditee.name }} is ready to review'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello {{ reviewer.name }},
6
+
7
+ The auditee {{ auditee.name }} has submitted their audit questionnaire.
8
+
9
+ It is now ready for you to review.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,11 @@
1
+ ---
2
+ subject: 'A CPD Audit Review of {{ auditee.name }} has been submitted'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello Admin,
6
+
7
+ The reviewer {{ reviewer.name }} has submitted their review of {{ auditee.name }}.
8
+
9
+ {{ url }}
10
+
11
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'The CPD Audit {{ auditee.name }} has been reviewed'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello Admin,
6
+
7
+ The auditee {{ auditee.name }} has been reviewed by all audit reviewers.
8
+
9
+ It's ready for your determination.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,13 @@
1
+ ---
2
+ subject: 'A CPD Audit questionnaire has been submitted and review can begin'
3
+ from: 'admin@example.com'
4
+ ---
5
+ Hello Admin,
6
+
7
+ The auditee {{ auditee.name }} has submitted their audit statement.
8
+
9
+ The audit reviewers have been notified and may now begin their reviews.
10
+
11
+ {{ url }}
12
+
13
+ Thank you
@@ -0,0 +1,65 @@
1
+ .cpd-statement-activity
2
+ - cpd_activity = cpd_statement_activity.cpd_activity
3
+ - rule = cpd_statement_activity.cpd_statement.cpd_cycle.rule_for(cpd_activity)
4
+
5
+ %p
6
+ = cpd_statement_activity
7
+ %br
8
+ %small.text-muted= rule.credit_description
9
+
10
+ - if cpd_activity.body.present?
11
+ .mb-3= cpd_activity.body
12
+
13
+ - if cpd_statement_activity.is_carry_over?
14
+ %p
15
+ %strong Carried Forward From
16
+ %br
17
+ = cpd_statement_activity.original.cpd_statement.cpd_cycle
18
+
19
+ .row.mb-3
20
+ .col-sm-8
21
+ .row
22
+ - if cpd_activity.amount_label.present?
23
+ .col
24
+ %strong #{cpd_activity.amount_label.titleize.pluralize}
25
+ %br
26
+ = cpd_statement_activity.amount
27
+
28
+ - if cpd_activity.amount2_label.present?
29
+ .col.text-center
30
+ %strong #{cpd_activity.amount2_label.to_s.titleize.pluralize} Articles written
31
+ = cpd_statement_activity.amount2
32
+
33
+ - if cpd_activity.amount_static?
34
+ .col
35
+ %strong One (1) #{cpd_activity}:
36
+ %br
37
+ 1
38
+
39
+ .col-sm-4
40
+ .row
41
+ .col.text-center
42
+ %strong= cpd_credits_label.titleize
43
+ %br
44
+ - if cpd_statement_activity.reduced_messages.present?
45
+ %span{title: cpd_statement_activity.reduced_messages.values.join("\n\n")}= "#{cpd_statement_activity.score} *"
46
+ - else
47
+ = cpd_statement_activity.score.to_i
48
+
49
+ .col.text-center
50
+ %strong Carry
51
+ %br
52
+ = cpd_statement_activity.carry_forward.to_i
53
+
54
+ - if cpd_statement_activity.files.present?
55
+ %p
56
+ %strong Supporting Documents
57
+
58
+ %ul
59
+ - cpd_statement_activity.files.each do |file|
60
+ = link_to(file.filename, url_for(file), target: '_blank')
61
+
62
+ %p
63
+ %strong Description
64
+ %br
65
+ = cpd_statement_activity.description
@@ -1,7 +1,7 @@
1
1
  - url = (cpd_statement_activity.persisted? ? effective_cpd.cpd_statement_cpd_statement_activity_path(cpd_statement_activity.cpd_statement, cpd_statement_activity) : effective_cpd.cpd_statement_cpd_statement_activities_path(cpd_statement_activity.cpd_statement))
2
- - readonly = cpd_statement_activity.locked? || local_assigns[:readonly]
2
+ - locked = cpd_statement_activity.locked?
3
3
 
4
- = effective_form_with(model: cpd_statement_activity, url: (readonly ? '#' : url), remote: true, class: 'cpd-statement-activity-form') do |f|
4
+ = effective_form_with(model: cpd_statement_activity, url: (locked ? '#' : url), remote: true, class: 'cpd-statement-activity-form', readonly: locked, disabled: locked) do |f|
5
5
  - statement = cpd_statement_activity.cpd_statement
6
6
  - activity = cpd_statement_activity.cpd_activity
7
7
  - rule = statement.cpd_cycle.rule_for(activity)
@@ -11,7 +11,7 @@
11
11
  - if activity.body.present?
12
12
  = activity.body
13
13
 
14
- - if cpd_statement_activity.is_carry_over? && (current_user.id == cpd_statement_activity.cpd_statement.user_id)
14
+ - if cpd_statement_activity.is_carry_over?
15
15
  .alert.alert-warning
16
16
  This activity is read-only because it was carried forward from
17
17
  = cpd_statement_activity.original.cpd_statement.cpd_cycle
@@ -40,22 +40,21 @@
40
40
  .row
41
41
  .col
42
42
  - if activity.amount_label.present?
43
- = f.number_field :amount, label: activity.amount_label.titleize, required: true, readonly: readonly, disabled: readonly
43
+ = f.number_field :amount, label: activity.amount_label.titleize.pluralize, required: true
44
44
 
45
45
  - if activity.amount2_label.present?
46
- = f.number_field :amount2, label: activity.amount2_label.titleize, required: true, readonly: readonly, disabled: readonly
46
+ = f.number_field :amount2, label: activity.amount2_label.titleize.pluralize, required: true
47
47
 
48
- - if activity.amount_label.blank? && activity.amount2_label.blank?
48
+ - if activity.amount_static?
49
49
  = f.hidden_field :amount, value: 1
50
50
  %p One (1) #{activity}
51
51
 
52
- - unless readonly && f.object.files.blank?
53
- = f.file_field :files, label: 'Supporting Documents', required: activity.requires_upload_file?, disabled: readonly
52
+ = f.file_field :files, label: 'Supporting Documents', required: activity.requires_upload_file?
54
53
 
55
54
  .col
56
- = f.text_area :description, placeholder: 'Please provide any additional information about this activity', readonly: readonly, disabled: readonly
55
+ = f.text_area :description, placeholder: 'Please provide any additional information about this activity'
57
56
 
58
- - unless readonly
57
+ - unless locked
59
58
  = f.hidden_field :cpd_category_id
60
59
  = f.hidden_field :cpd_activity_id
61
60
 
@@ -1,64 +1,3 @@
1
- .cpd-statement-activities
2
- .row
3
- .col-8
4
- .col-2.score
5
- %strong= cpd_credits_label.titleize
6
- .col-2.carry-forward
7
- %strong Carry Forward
8
-
9
- - effective_cpd_categories.each do |category|
10
- - statement_activities = cpd_statement.cpd_statement_activities.select { |a| a.cpd_category_id == category.id }
11
- - next if statement_activities.blank?
12
-
13
- - rule = cpd_statement.cpd_cycle.rule_for(category)
14
-
15
- .statement-activity-category
16
- %h3
17
- #{category}
18
- %small
19
- = cpd_statement.score_per_category[category.id].to_i
20
- - if rule.max_credits_per_cycle.present?
21
- = '/'
22
- = rule.max_credits_per_cycle
23
-
24
- .progress.my-2
25
- - valuenow = cpd_statement.score_per_category[category.id]
26
- - valuemax = (rule.max_credits_per_cycle || 1)
27
- - width = ((valuenow * 100.0) / valuemax)
28
-
29
- .progress-bar{role: 'progressbar', style: "width: #{width}%", 'aria-valuenow': valuenow, 'aria-valuemin': 0, 'aria-valuemax': valuemax}
30
-
31
- - statement_activities.each do |statement_activity|
32
- .statement-activity.mb-3
33
- .statement-activity-content.row
34
- .col-8
35
- = link_to('#', 'data-cpd-edit-activity': true) do
36
- = icon('plus-circle', class: 'small-1')
37
- = statement_activity.cpd_activity
38
- - if statement_activity.is_carry_over?
39
- %br
40
- %small carried forward from #{statement_activity.original_cycle}
41
-
42
- .col-2.score
43
- - if statement_activity.reduced_messages.present?
44
- %span{title: statement_activity.reduced_messages.values.join("\n\n")}= "#{statement_activity.score} *"
45
- - else
46
- = statement_activity.score.to_i
47
-
48
- .col-2.carry-forward
49
- = statement_activity.carry_forward.to_i
50
-
51
- .statement-activity-form.row{style: 'display: none;'}
52
- .col
53
- .border.px-3
54
- = render('effective/cpd_statement_activities/form', cpd_statement_activity: statement_activity, readonly: local_assigns[:readonly])
55
-
56
- %hr
57
-
58
- .row
59
- .col-8
60
- %h4 Total #{cpd_credits_label} in statement
61
- .col-2.score
62
- %h4= cpd_statement.score.to_i
63
- .col-2.carry-forward
64
- %h4= cpd_statement.carry_forward.to_i
1
+ = card('Activities') do
2
+ = render('effective/cpd_statements/activities_table', cpd_statement: cpd_statement) do |cpd_statement_activity|
3
+ = render('effective/cpd_statement_activities/cpd_statement_activity', cpd_statement_activity: cpd_statement_activity)
@@ -0,0 +1,2 @@
1
+ = render('effective/cpd_statements/activities_table', cpd_statement: cpd_statement) do |cpd_statement_activity|
2
+ = render('effective/cpd_statement_activities/form', cpd_statement_activity: cpd_statement_activity)
@@ -0,0 +1,64 @@
1
+ .cpd-statement-activities
2
+ .row{style: 'margin-top: -2rem'}
3
+ .col-8
4
+ .col-2.score
5
+ %strong= cpd_credits_label.titleize
6
+ .col-2.carry-forward
7
+ %strong Carry Forward
8
+
9
+ - effective_cpd_categories.each do |category|
10
+ - statement_activities = cpd_statement.cpd_statement_activities.select { |a| a.cpd_category_id == category.id }
11
+ - next if statement_activities.blank?
12
+
13
+ - rule = cpd_statement.cpd_cycle.rule_for(category)
14
+
15
+ .statement-activity-category
16
+ %h3
17
+ #{category}
18
+ %small
19
+ = cpd_statement.score_per_category[category.id].to_i
20
+ - if rule.max_credits_per_cycle.present?
21
+ = '/'
22
+ = rule.max_credits_per_cycle
23
+
24
+ .progress.my-2
25
+ - valuenow = cpd_statement.score_per_category[category.id]
26
+ - valuemax = (rule.max_credits_per_cycle || 1)
27
+ - width = ((valuenow * 100.0) / valuemax)
28
+
29
+ .progress-bar{role: 'progressbar', style: "width: #{width}%", 'aria-valuenow': valuenow, 'aria-valuemin': 0, 'aria-valuemax': valuemax}
30
+
31
+ - statement_activities.each do |statement_activity|
32
+ .statement-activity.mb-3
33
+ .statement-activity-content.row
34
+ .col-8
35
+ = link_to('#', 'data-cpd-edit-activity': true) do
36
+ = icon('plus-circle', class: 'small-1')
37
+ = statement_activity.cpd_activity
38
+ - if statement_activity.is_carry_over?
39
+ %br
40
+ %small carried forward from #{statement_activity.original_cycle}
41
+
42
+ .col-2.score
43
+ - if statement_activity.reduced_messages.present?
44
+ %span{title: statement_activity.reduced_messages.values.join("\n\n")}= "#{statement_activity.score} *"
45
+ - else
46
+ = statement_activity.score.to_i
47
+
48
+ .col-2.carry-forward
49
+ = statement_activity.carry_forward.to_i
50
+
51
+ .statement-activity-form.row{style: 'display: none;'}
52
+ .col
53
+ .border.p-3
54
+ = yield(statement_activity)
55
+
56
+ %hr
57
+
58
+ .row
59
+ .col-8
60
+ %h4 Total #{cpd_credits_label} in statement
61
+ .col-2.score
62
+ %h4= cpd_statement.score.to_i
63
+ .col-2.carry-forward
64
+ %h4= cpd_statement.carry_forward.to_i
@@ -1,6 +1,20 @@
1
- %h2 Agreements
2
- = f.check_box :confirm_read, label: "Yes, I have read the above content and agreements"
3
- = f.check_box :confirm_factual, label: "Yes, I declare all provided information to be factual and complete"
1
+ = card('Agreements') do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Read all contents and agreements
6
+ %td= cpd_statement.confirm_read ? 'Yes' : 'No'
4
7
 
5
- %h2 Resume
6
- = f.file_field :files, label: 'Attach resume', hint: 'Please attach your resume or other CPD related documents'
8
+ %tr
9
+ %th Declared all information factual
10
+ %td= cpd_statement.confirm_factual ? 'Yes' : 'No'
11
+
12
+ %tr
13
+ %th Attachments
14
+ %td
15
+ - if cpd_statement.files.blank?
16
+ None
17
+ - else
18
+ %ul
19
+ - cpd_statement.files.each do |file|
20
+ = link_to(file.filename, url_for(file), target: '_blank')
@@ -1,5 +1,8 @@
1
- = card(cpd_statement.cpd_cycle.to_s + ' Statement') do
1
+ .effective-cpd-statement
2
2
  = render('effective/cpd_statements/summary', cpd_statement: cpd_statement)
3
3
 
4
- = card('Activities') do
5
- = render('effective/cpd_statements/activities', cpd_statement: cpd_statement, readonly: true)
4
+ - steps = cpd_statement.required_steps.select { |step| cpd_statement.has_completed_step?(step) }
5
+ - blacklist = [:start, :submit, :complete]
6
+
7
+ - (steps - blacklist).each do |step|
8
+ = render("effective/cpd_statements/#{step}", cpd_statement: cpd_statement, step: step)
@@ -1,36 +1,31 @@
1
- %table.table
2
- %tbody
3
- %tr
4
- %th Name
5
- %td
6
- = cpd_statement.user
7
- %br
8
- %small= mail_to cpd_statement.user.email
1
+ = card(cpd_statement) do
2
+ %table.table
3
+ %tbody
4
+ %tr
5
+ %th Name
6
+ %td
7
+ = cpd_statement.user
8
+ %br
9
+ %small= mail_to cpd_statement.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_statement.user, edit_admin_user_path(cpd_statement.user))
9
15
 
10
- - if request.path.start_with?('/admin') && respond_to?(:edit_admin_user_path)
16
+ - if cpd_statement.completed?
11
17
  %tr
12
- %th User
13
- %td= link_to(cpd_statement.user, edit_admin_user_path(cpd_statement.user))
18
+ %th Completed
19
+ %td= cpd_statement.submitted_at.strftime('%F %H:%M')
14
20
 
15
- - if cpd_statement.completed?
16
21
  %tr
17
- %th Completed
18
- %td= cpd_statement.completed_at.strftime('%F %H:%M')
22
+ %th= cpd_cycle_label.titleize
23
+ %td= cpd_statement.cpd_cycle
19
24
 
20
- %tr
21
- %th= cpd_cycle_label.titleize
22
- %td= cpd_statement.cpd_cycle
23
- %tr
24
- %th Total #{cpd_credits_label.titleize}
25
- %td= cpd_statement.score
26
- %tr
27
- %th Carry Forward
28
- %td= cpd_statement.carry_forward
29
- %tr
30
- %th Attachments
31
- %td
32
- - if cpd_statement.files.blank?
33
- None
34
- - else
35
- - cpd_statement.files.each do |file|
36
- %div= link_to(file.filename, url_for(file), target: '_blank')
25
+ %tr
26
+ %th Total #{cpd_credits_label.titleize}
27
+ %td= cpd_statement.score
28
+
29
+ %tr
30
+ %th Carry Forward
31
+ %td= cpd_statement.carry_forward