|
|
|
@@ -0,0 +1,99 @@ |
|
|
|
class ComposesController < ApplicationController |
|
|
|
before_action :require_login, except: [:index] |
|
|
|
before_action :find_compose, except: [:index, :new,:create] |
|
|
|
|
|
|
|
def index |
|
|
|
@order_type = params[:order] || "created_at" |
|
|
|
@search_name = params[:search] |
|
|
|
composes = Compose.compose_includes |
|
|
|
if @search_name.present? |
|
|
|
composes = composes.where("title like ?", "%#{@search_name}%") |
|
|
|
end |
|
|
|
composes = composes.order("#{@order_type} desc") |
|
|
|
@page = params[:page] || 1 |
|
|
|
@limit = params[:limit] || 15 |
|
|
|
@composes_size = composes.size |
|
|
|
@composes = composes.page(@page).per(@limit) |
|
|
|
end |
|
|
|
|
|
|
|
def new |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
def create |
|
|
|
ActiveRecord::Base.transaction do |
|
|
|
begin |
|
|
|
@compose = Compose.new(compose_params.merge(user_id: current_user.id)) |
|
|
|
if @compose.save |
|
|
|
ComposeUser.create!(user_id: current_user.id, compose_id: @compose.id, is_manager: 1) |
|
|
|
normal_status(0,"组织创建成功") |
|
|
|
else |
|
|
|
error_messages = @compose.errors.messages[:title][0] |
|
|
|
normal_status(-1,"组织创建失败:#{error_messages}") |
|
|
|
end |
|
|
|
rescue Exception => e |
|
|
|
tip_exception("#{e}") |
|
|
|
raise ActiveRecord::Rollback |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def edit |
|
|
|
|
|
|
|
end |
|
|
|
|
|
|
|
def update |
|
|
|
if @compose.update_attributes(compose_params) |
|
|
|
normal_status(0,"组织更新成功") |
|
|
|
else |
|
|
|
error_messages = @compose.errors.messages[:title][0] |
|
|
|
normal_status(-1,"组织更新失败:#{error_messages}") |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def destroy |
|
|
|
if @compose.destroy |
|
|
|
normal_status(0,"组织删除成功") |
|
|
|
else |
|
|
|
normal_status(-1,"组织删除失败,请稍后重试") |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def show |
|
|
|
compose_projects_ids = @compose&.compose_projects&.pluck(:project_id) |
|
|
|
search = params[:search] |
|
|
|
if compose_projects_ids.size > 0 |
|
|
|
compose_projects = Project.where(id: compose_projects_ids) |
|
|
|
|
|
|
|
if search.present? |
|
|
|
compose_projects = compose_projects.where("name like ? ", "%#{search.to_s.strip}%") |
|
|
|
end |
|
|
|
else |
|
|
|
compose_projects = [] |
|
|
|
end |
|
|
|
|
|
|
|
@compose_projects_size = compose_projects.size |
|
|
|
|
|
|
|
if @compose_projects_size > 0 |
|
|
|
@page = params[:page] || 1 |
|
|
|
@limit = params[:limit] || 15 |
|
|
|
@compose_projects = compose_projects.page(@page).per(@limit) |
|
|
|
else |
|
|
|
@compose_projects = compose_projects |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def compose_params |
|
|
|
params.require(:compose).permit(:user_id, :title, :description, :show_mode, :compose_mode, :compose_users_count, :compose_projects_count) |
|
|
|
end |
|
|
|
|
|
|
|
def find_compose |
|
|
|
@compose = Compose.find(params[:compose_id]) |
|
|
|
unless @compose.present? |
|
|
|
normal_status(-1, "组织不存在") |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
end |