teddim/gCamp

View on GitHub
app/controllers/projects_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
class ProjectsController < ApplicationController

  before_action :find_project, only: [:show, :update, :destroy, :edit]
  before_action :project_member, only: [:show, :update, :destroy, :edit]
  before_action :project_owner, only: [ :update, :destroy, :edit]

  def index
    @projects = Project.all
    tracker_api = TrackerAPI.new
    if current_user.pivotal_token
      @tracker_projects = tracker_api.projects(current_user.pivotal_token)
    end
  end

  def new
    @project = Project.new
    @membership = Membership.new
    @page_name = "New"
  end

  def create
    @project = Project.new(project_params)
    if @project.save
      @membership = Membership.new(role: "owner", project_id: @project.id, user_id: current_user.id)
      @membership.save
      flash[:notice] = "Project was successfully created"
      redirect_to project_tasks_path(@project)
    else
      @page_name = "New"
      render :new
    end
  end

  def edit
    @project = Project.find(params[:id])
    @page_name = "Edit"
  end

  def update
    @project = Project.find(params[:id])
    if @project.update(project_params)
      flash[:notice] = "Project was successfully updated"
      redirect_to project_path(@project)
    else
      @page_name = "Edit"
      render :edit
    end
  end

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

  def destroy
    project = Project.find(params[:id])
    project.destroy
    flash[:notice] = "Project was successfully deleted"
    redirect_to projects_path
  end

  private

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

  def project_params
    params.require(:project).permit(:name)
  end

  def membership_params
    params.require(:membership).permit(:role, :project_id, :user_id)
  end
end