base_service.rb 917 B

123456789101112131415161718192021222324252627282930313233343536
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. class BaseService
  3. include HandlesErrors
  4. include HandlesCoreWorkflow
  5. attr_reader :current_user
  6. @@require_current_user = true # rubocop:disable Style/ClassVars
  7. def self.omit_current_user!
  8. @@require_current_user = false # rubocop:disable Style/ClassVars
  9. end
  10. def initialize(current_user: nil)
  11. if current_user.nil? && @require_current_user
  12. raise __('Need a valid user to create a new service object!')
  13. end
  14. @current_user = current_user
  15. end
  16. def execute(args)
  17. raise NotImplementedError
  18. end
  19. # Easy build method to directly get a service object for a defined class.
  20. def use_service(klass)
  21. klass.new(current_user: @current_user)
  22. end
  23. # Easy build method to directly call the 'execute' method of a service.
  24. def execute_service(klass, ...)
  25. use_service(klass).execute(...)
  26. end
  27. end