forgeplus/app/services/projects/create_service.rb

66 lines
1.7 KiB
Ruby
Raw Normal View History

2020-03-09 00:40:16 +08:00
class Projects::CreateService < ApplicationService
attr_reader :user, :params
def initialize(user, params)
@user = user
@params = params
end
def call
2020-06-18 15:46:00 +08:00
Rails.logger.info("#############__________project_params______###########{project_params}")
2021-06-22 15:54:42 +08:00
raise Error, "user_id不正确." unless authroize_user_id_success
2020-06-18 15:46:00 +08:00
2020-03-09 00:40:16 +08:00
@project = Project.new(project_params)
ActiveRecord::Base.transaction do
if @project.save!
2020-10-21 11:45:55 +08:00
Project.update_common_projects_count!
2021-03-17 11:52:36 +08:00
ProjectUnit.init_types(@project.id)
2020-03-09 00:40:16 +08:00
Repositories::CreateService.new(user, @project, repository_params).call
else
2020-07-10 11:11:54 +08:00
Rails.logger.info("#############___________create_project_erros______###########{@project.errors.messages}")
2020-03-09 00:40:16 +08:00
end
end
@project
rescue => e
puts "create project service error: #{e.message}"
raise Error, e.message
end
private
2021-06-22 15:54:42 +08:00
def authroize_user_id_success
(user.id == params[:user_id].to_i) || (user.organizations.find_by_id(params[:user_id]).present?)
end
2020-03-09 00:40:16 +08:00
def project_params
{
name: params[:name],
user_id: params[:user_id],
description: params[:description],
project_category_id: params[:project_category_id],
project_language_id: params[:project_language_id],
2020-05-25 14:22:57 +08:00
is_public: repo_is_public,
2020-03-09 00:40:16 +08:00
ignore_id: params[:ignore_id],
license_id: params[:license_id],
2021-03-15 19:01:35 +08:00
website: params[:website],
identifier: params[:repository_name]
2020-03-09 00:40:16 +08:00
}
end
def repository_params
{
2020-06-18 15:46:00 +08:00
hidden: !repo_is_public,
2020-03-09 00:40:16 +08:00
user_id: params[:user_id],
identifier: params[:repository_name]
}
end
2020-06-18 15:46:00 +08:00
# def get_is_public
# params[:private] || false
# end
2020-03-30 09:47:45 +08:00
def repo_is_public
2020-06-18 15:46:00 +08:00
params[:private].blank? ? true : !params[:private]
2020-03-30 09:47:45 +08:00
end
2020-03-09 00:40:16 +08:00
end