colinschoen/enrollme

View on GitHub
app/controllers/submissions_controller.rb

Summary

Maintainability
A
45 mins
Test Coverage
class SubmissionsController < ApplicationController
    
    def new
        @submission = Submission.new
        render 'new'
    end
    
    def create
        @user = User.find_by_id(session[:user_id])
        @team = Team.find_by_id(@user.team.id)
        
        d1 = submission_params[:disc1id]
        d2 = submission_params[:disc2id]
        d3 = submission_params[:disc3id]
        
        if Discussion.valid_discs_for(@team).count == 1
            @submission = Submission.new(:disc1id => d1)
        elsif Discussion.valid_discs_for(@team).count == 2
            return redirect_to new_submission_path, notice: "Please choose 2 different discussions." if [d1, d2, d3].uniq.length == 1
            @submission = Submission.new(:disc1id => d1, :disc2id => d2)
        else
            return redirect_to new_submission_path, notice: "Please choose 3 different discussions." if [d1, d2, d3].uniq.length == 2 or [d1, d2, d3].uniq.length == 1
            @submission = Submission.new(submission_params)
        end
        
        @submission.team = @team
        
        @submission.save!
        @team.add_submission(@submission.id)
        
        return redirect_to team_path(@team), notice: "Thanks for submitting your team for enrollment."
    end
    
    def destroy
    end

    private
        def submission_params
            params.require(:submission).permit(:disc1id, :disc2id, :disc3id)
        end
end