# frozen_string_literal: true

class UserMyModule < ApplicationRecord
  validates :user, presence: true, uniqueness: { scope: :my_module }
  validates :my_module, presence: true

  belongs_to :user, inverse_of: :user_my_modules, touch: true
  belongs_to :assigned_by, foreign_key: 'assigned_by_id', class_name: 'User', optional: true
  belongs_to :my_module, inverse_of: :user_my_modules, touch: true

  def log_activity(type_of, current_user)
    Activities::CreateActivityService
      .call(activity_type: type_of,
            owner: current_user,
            team: my_module.experiment.project.team,
            project: my_module.experiment.project,
            subject: my_module,
            message_items: { my_module: my_module.id,
                             user_target: user.id })
  end
end
