36 lines
667 B
Ruby
36 lines
667 B
Ruby
# frozen_string_literal: true
|
|
|
|
module ResourceEvents
|
|
class ChangeStateService
|
|
attr_reader :resource, :user
|
|
|
|
def initialize(user:, resource:)
|
|
@user, @resource = user, resource
|
|
end
|
|
|
|
def execute(state)
|
|
ResourceStateEvent.create(
|
|
user: user,
|
|
issue: issue,
|
|
merge_request: merge_request,
|
|
state: ResourceStateEvent.states[state],
|
|
created_at: Time.zone.now)
|
|
|
|
resource.expire_note_etag_cache
|
|
end
|
|
|
|
private
|
|
|
|
def issue
|
|
return unless resource.is_a?(Issue)
|
|
|
|
resource
|
|
end
|
|
|
|
def merge_request
|
|
return unless resource.is_a?(MergeRequest)
|
|
|
|
resource
|
|
end
|
|
end
|
|
end
|