ozfortress/citadel

View on GitHub
app/services/leagues/rosters/creation_service.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Leagues
  module Rosters
    module CreationService
      include BaseService

      def call(league, team, params)
        params[:team] = team
        roster = league.rosters.new(params)

        roster.transaction do
          roster.save || rollback!

          notify_players(roster, league)
        end

        roster
      end

      private

      def notify_players(roster, league)
        msg = 'You have been entered in '\
              "#{league.name.truncate(48, separator: ' ')} "\
              'with '\
              "#{roster.name.truncate(48, separator: ' ')}."
        link = team_path(roster.team)

        roster.players.each do |player|
          Users::NotificationService.call(player.user, message: msg, link: link)
        end
      end
    end
  end
end