Class: Admin::ProjectsController
- Inherits:
 - 
      ApplicationController
      
        
- Object
 - ApplicationController
 - Admin::ProjectsController
 
 
- Defined in:
 - app/controllers/admin/projects_controller.rb
 
Constant Summary collapse
- BY_SCOPES =
 { 'not approved' => :unapproved, 'unallocated division' => :with_unallocated_budget_division, 'unallocated manager' => :with_unallocated_manager, 'all' => :all }.freeze
Instance Method Summary collapse
- #edit ⇒ Object
 - 
  
    
      #filter  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
rubocop:todo Metrics/AbcSize.
 - #index ⇒ Object
 - 
  
    
      #managed_update  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
rubocop:todo Metrics/MethodLength.
 - #show ⇒ Object
 - 
  
    
      #sort  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
rubocop:enable Metrics/MethodLength.
 - #update ⇒ Object
 
Instance Method Details
#edit ⇒ Object
      25 26 27 28 29 30 31 32  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 25 def edit if params[:id] == '0' render nothing: true else @project = Project.find(params[:id]) render partial: 'edit', locals: { project: @project } end end  | 
  
#filter ⇒ Object
rubocop:todo Metrics/AbcSize
      40 41 42 43 44 45 46 47 48 49 50 51 52 53 54  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 40 def filter # rubocop:todo Metrics/AbcSize filters = params[:filter] || {} by_scope = BY_SCOPES.fetch(filters[:by], :all) base_scope = Project.send(by_scope).in_state(filters[:status]).alphabetical # arel_table is used to generate the more complex like query projects = Project.arel_table scope = filters[:q].present? ? base_scope.where(projects[:name].matches("%#{filters[:q]}%")) : base_scope @projects = scope render partial: 'filtered_projects' end  | 
  
#index ⇒ Object
      16 17 18 19  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 16 def index @projects = Project.alphabetical @request_types = RequestType.alphabetical end  | 
  
#managed_update ⇒ Object
rubocop:todo Metrics/MethodLength
      61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 61 def managed_update # rubocop:todo Metrics/AbcSize @project = Project.find(params[:id]) :managed_update, @project if params[:project][:uploaded_data].present? document_settings = {} document_settings[:uploaded_data] = params[:project][:uploaded_data] doc = Document.create(document_settings) doc.documentable = @project doc.save end params[:project].delete(:uploaded_data) pre_approved = @project.approved? if @project.update(params[:project]) EventFactory.project_approved(@project, current_user) if pre_approved == false && @project.approved == true flash[:notice] = 'Your project has been updated' redirect_to controller: 'admin/projects', action: 'update', id: @project.id else logger.warn "Failed to update attributes: #{@project.errors.map(&:to_s)}" flash[:error] = 'Failed to update attributes for project!' render action: :show, id: @project.id and return end end  | 
  
#show ⇒ Object
      21 22 23  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 21 def show @project = Project.find(params[:id]) end  | 
  
#sort ⇒ Object
rubocop:enable Metrics/MethodLength
      90 91 92 93 94 95 96 97 98 99  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 90 def sort @projects = Project.all.sort_by(&:name) case params[:sort] when 'date' @projects = @projects.sort_by(&:created_at) when 'owner' @projects = @projects.sort_by(&:user_id) end render partial: 'projects' end  | 
  
#update ⇒ Object
      34 35 36 37 38  | 
    
      # File 'app/controllers/admin/projects_controller.rb', line 34 def update @project = Project.find(params[:id]) flash.now[:notice] = 'Your project has been updated' render partial: 'manage_single_project' end  |