You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/services/create_add_department_apply...

44 lines
1.2 KiB

class CreateAddDepartmentApplyService < ApplicationService
Error = Class.new(StandardError)
attr_reader :user, :params
def initialize(user, params)
@user = user
@params = params
end
def call
name = params[:name].to_s.strip
raise Error, '名称不能为空' if name.blank?
school = School.find_by(id: params[:school_id])
raise Error, '学校/单位不存在' if school.blank?
department = Department.new
department.name = name
department.school = school
ActiveRecord::Base.transaction do
department.save!
attrs = {
user_id: user.id, department: department, school: school,
name: department.name, remarks: params[:remarks], status: 0,
}
apply = ApplyAddDepartment.create!(attrs)
unless user.professional_certification?
user.user_extension.update!(department_id: department.id)
end
# 向管理员发送通知
message = AppliedMessage.new(user_id: 1, status: 0, applied_user_id: user.id, viewed: 0,
applied_id: apply.id, applied_type: 'ApplyAddDepartment', name: department.name)
message.save(validate: false)
end
department
end
end