Sprankelprachtig aan/afmeldsysteem

activities_controller.rb 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. class Api::ActivitiesController < ApiController
  2. before_action :set_activity, only: [:show, :response_summary]
  3. before_action :require_membership!, only: [:show, :reponse_summary]
  4. before_action :api_require_admin!, only: [:index]
  5. # GET /api/activities
  6. # GET /api/activities.json
  7. def index
  8. @activities = Activity.all
  9. end
  10. # GET /api/activities/1
  11. # GET /api/activities/1.json
  12. def show
  13. end
  14. # GET /api/activities/1/response_summary
  15. # GET /api/activities/1/response_summary.json
  16. def response_summary
  17. as = @activity
  18. .participants
  19. .joins(:person)
  20. .order('people.first_name ASC')
  21. present = as
  22. .where(attending: true)
  23. unknown = as
  24. .where(attending: nil)
  25. absent = as
  26. .where(attending: false)
  27. presentnames = present
  28. .map{|p| p.person.first_name }
  29. unknownnames = unknown
  30. .map{|p| p.person.first_name }
  31. absentnames = absent
  32. .map{|p| p.person.first_name }
  33. if presentnames.count > 0
  34. present_mess = I18n.t('activities.participant.these_present', count: present.count, names: presentnames.join(', '))
  35. else
  36. present_mess = I18n.t('activities.participant.none_present')
  37. end
  38. if unknownnames.count > 0
  39. unknown_mess = I18n.t('activities.participant.these_unknown', count: unknown.count, names: unknownnames.join(', '))
  40. else
  41. unknown_mess = I18n.t('activities.participant.none_unknown')
  42. end
  43. if absentnames.count > 0
  44. absent_mess = I18n.t('activities.participant.these_absent', count: absent.count, names: absentnames.join(', '))
  45. else
  46. absent_mess = I18n.t('activities.participant.none_absent')
  47. end
  48. @summary = {
  49. present: {
  50. count: present.count,
  51. names: presentnames,
  52. message: present_mess
  53. },
  54. unknown: {
  55. count: unknown.count,
  56. names: unknownnames,
  57. message: unknown_mess
  58. },
  59. absent: {
  60. count: absent.count,
  61. names: absentnames,
  62. message: absent_mess
  63. }
  64. }
  65. end
  66. private
  67. # Use callbacks to share common setup or constraints between actions.
  68. def set_activity
  69. @activity = Activity.find(params[:id])
  70. @group = @activity.group
  71. end
  72. end