Il form invito è sulla pagina squadra, genera il link e manda la mail; in caso di errore SMTP resta la copia manuale. Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
766 B
Ruby
28 lines
766 B
Ruby
module Teams
|
|
class StaffAssignment
|
|
def self.call(team:, user:, staff_kind: "transmission", membership: nil)
|
|
new(team: team, user: user, staff_kind: staff_kind, membership: membership).call
|
|
end
|
|
|
|
def initialize(team:, user:, staff_kind: "transmission", membership: nil)
|
|
@team = team
|
|
@user = user
|
|
@staff_kind = "transmission"
|
|
@membership = membership
|
|
end
|
|
|
|
def call
|
|
StaffEmailValidator.assert_available!(
|
|
team: @team, email: @user.email, except_user: @user
|
|
)
|
|
|
|
ut = @membership || @user.user_teams.find_by!(team: @team)
|
|
return ut if ut.staff_kind == "transmission"
|
|
|
|
Entitlements.new(@team).assert_can_invite!
|
|
ut.update!(staff_kind: "transmission")
|
|
ut
|
|
end
|
|
end
|
|
end
|