checklists_controller.rb 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. class ChecklistsController < ApplicationController
  3. prepend_before_action :authenticate_and_authorize!
  4. def show_by_ticket
  5. checklist = Checklist.find_by ticket_id: params[:ticket_id]
  6. if checklist
  7. authorize!(checklist, :show?)
  8. assets = ApplicationModel::CanAssets.reduce([checklist] + checklist.items, {})
  9. render json: { id: checklist.id, assets: assets }
  10. return
  11. end
  12. render json: {}
  13. end
  14. def show
  15. model_show_render(Checklist, existing_checklist_params)
  16. end
  17. def create
  18. new_checklist = if params[:template_id].present?
  19. ChecklistTemplate.find_by(id: params[:template_id]).create_from_template!(ticket_id: params[:ticket_id])
  20. else
  21. Checklist.create!(name: '', ticket_id: params[:ticket_id]).tap do |checklist|
  22. Checklist::Item.create!(checklist_id: checklist.id, text: '')
  23. end
  24. end
  25. new_checklist.reload
  26. render json: { id: new_checklist.id, assets: new_checklist.assets({}) }, status: :created
  27. end
  28. def update
  29. model_update_render(Checklist, existing_checklist_params)
  30. end
  31. def destroy
  32. model_destroy_render(Checklist, existing_checklist_params)
  33. end
  34. private
  35. def existing_checklist_params
  36. params.permit(:id, :name, sorted_item_ids: [])
  37. end
  38. end