Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
j_platform / app / controllers / j_platform / admin / projects_controller.rb
Size: Mime:
module JPlatform
  class Admin::ProjectsController < AdminController
    include Concerns::FileUpload

    before_action :ajax_only, only: [:new, :edit]

    def new
      @project = Project.new
      render :new_edit
    end

    def create
      project_params = params.require(:project).permit(:name, :description, :avatar_string)

      encode_file!(project_params, :avatar_string, :avatar_name) if project_params.has_key?(:avatar_string)

      @project =  Project.new(project_params)
      @project.prefix_options[:client_id] = params[:client_id]

      if @project.save
        render partial: "/j_platform/admin/projects/project", locals: { project: @project }
      else
        render :new_edit, status: 422
      end
    end

    def show
      @project = Project.find(params[:id])
    end

    def edit
      @project = Project.find(params[:id], params: { q: Random.new_seed })
      case params[:content]
      when 'assign_members'
        @items = @project.client.client_memberships
        @assign_attribute = 'client_membership_ids'
        render "j_platform/admin/projects/assign_items"
      when 'assign_social_accounts'
        @items = @project.client.social_accounts
        @assign_attribute = 'social_account_ids'
        render "j_platform/admin/projects/assign_items"
      when 'assign_ticket_lists'
        @items = @project.client.ticket_lists
        @assign_attribute = 'ticket_list_ids'
        render "j_platform/admin/projects/assign_items"
      else
        render :new_edit
      end
    end

    def update
      project_params = params.require(:project).permit(:name, :description, :avatar_string, :client_id, :status, client_membership_ids: [], ticket_list_ids: [], social_account_ids: [])
      @project = Project.find(params[:id])

      encode_file!(project_params, :avatar_string, :avatar_name) if project_params.has_key?(:avatar_string)

      if @project.update_attributes(project_params)
        if project_params.has_key?(:status) || project_params.has_key?(:description) || project_params.has_key?(:avatar_string) || project_params.has_key?(:name)
          render partial: "/j_platform/admin/projects/project", locals: { project: @project }
        else
          render json: { status: 'success' }
        end
      else
        render :new_edit, status: 422
      end
    end

    def destroy
      @project = Project.find(params[:id])
      if @project.destroy
        flash[:notice] = t('project.messages.delete_success')
      else
        flash[:notice] = t('project.messages.delete_failed')
      end
      redirect_to admin_client_projects_path(@project.client)
    end
  end
end