# frozen_string_literal: true

module ReleaseTools
  module UpdatePaths
    class FinishNotification
      include ::SemanticLogger::Loggable

      def initialize(previous_version:, version:, status:)
        @previous_version = previous_version
        @version = version
        @status = status
      end

      def execute
        logger.info('Sending Slack notification for update paths QA job')

        return if SharedStatus.dry_run?

        ReleaseTools::Slack::ReleaseJobEndNotifier.new(
          job_type: "Update paths QA from #{previous_version} to #{version}",
          status: status,
          release_type: release_type
        ).send_notification
      end

      private

      attr_reader :previous_version, :version, :status

      def release_type
        patch? ? :patch : :monthly
      end

      def patch?
        ReleaseTools::Version.new(version).patch?
      end
    end
  end
end
