# frozen_string_literal: true class CreateProjectService def initialize(user, team, params) @params = params @user = user @team = team end def call new_project = nil ActiveRecord::Base.transaction do @params[:created_by] = @user @params[:last_modified_by] = @user @project = @team.projects.new(@params) if @project.save @project.user_projects.create!(role: :owner, user: @user) create_project_activity new_project = @project else new_project = @project raise ActiveRecord::Rollback end end new_project end private def create_project_activity Activities::CreateActivityService .call(activity_type: :create_project, owner: @user, subject: @project, team: @team, project: @project, message_items: { project: @project.id }) end end