effective_cpd 0.0.1 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
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