Newer
Older
dmpopidor / app / controllers / guidances_controller.rb
@Marta Ribeiro Marta Ribeiro on 3 Jun 2016 7 KB DMPonline4 - RAILS 4.0 (#4)
class GuidancesController < ApplicationController

  # GET /guidances
  # GET /guidances.json
  def admin_index
    if user_signed_in? && current_user.is_org_admin? then
	    @guidances = Guidance.by_organisation(current_user.organisation_id)
	    @guidance_groups = GuidanceGroup.where('organisation_id = ?', current_user.organisation_id )


	    respond_to do |format|
	      format.html # index.html.erb
	      format.json { render json: @guidances }
	    end
    else
			render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
		end
  end

  # GET /guidances/1
  # GET /guidances/1.json
  def admin_show
    if user_signed_in? && current_user.is_org_admin? then
	    @guidance = Guidance.find(params[:id])

	    respond_to do |format|
	      format.html # show.html.erb
	      format.json { render json: @guidance }
	    end
   end
  end

  def admin_new
    if user_signed_in? && current_user.is_org_admin? then
	    @guidance = Guidance.new
			@dmptemplates = Dmptemplate.funders_and_own_templates(current_user.organisation_id)
			@phases = nil
			@dmptemplates.each do |template|
				if @phases.nil? then
					@phases = template.phases.find(:all,:order => 'number ASC')
				else
					@phases = @phases + template.phases.find(:all,:order => 'number ASC')
				end
			end
			@versions = nil
			@phases.each do |phase|
				if @versions.nil? then
					@versions = phase.versions.find(:all,:order => 'title ASC')
				else
					@versions = @versions + phase.versions.find(:all,:order => 'title ASC')
				end
			end
			@sections = nil
			@versions.each do |version|
				if @sections.nil? then
					@sections = version.sections.find(:all,:order => 'number ASC')
				else
					@sections = @sections + version.sections.find(:all,:order => 'number ASC')
				end
			end
			@questions = nil
			@sections.each do |section|
				if @questions.nil? then
					@questions = section.questions.find(:all,:order => 'number ASC')
				else
					@questions = @questions + section.questions.find(:all,:order => 'number ASC')
				end
			end
	    respond_to do |format|
	      format.html
	    end
   	end
	end

	#setup variables for use in the dynamic updating
	def update_phases
    # updates phases, versions, sections and questions based on template selected
    dmptemplate = Dmptemplate.find(params[:dmptemplate_id])
    # map to title and id for use in our options_for_select
    @phases = dmptemplate.phases.map{|a| [a.title, a.id]}.insert(0, "Select a phase")
    @versions = dmptemplate.versions.map{|s| [s.title, s.id]}.insert(0, "Select a version")
    @sections = dmptemplate.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section")
    @questions = dmptemplate.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question")

  end

 def update_versions
    # updates versions, sections and questions based on phase selected
    phase = Phase.find(params[:phase_id])
    # map to name and id for use in our options_for_select
    @versions = phase.versions.map{|s| [s.title, s.id]}.insert(0, "Select a version")
    @sections = phase.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section")
    @questions = phase.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question")
  end

  def update_sections
    # updates sections and questions based on version selected
    version = Version.find(params[:version_id])
    # map to name and id for use in our options_for_select
    @sections = version.sections.map{|s| [s.title, s.id]}.insert(0, "Select a section")
    @questions = version.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question")
  end

  def update_questions
    # updates songs based on artist selected
    section = Section.find(params[:section_id])
    @questions = section.questions.map{|s| [s.text, s.id]}.insert(0, "Select a question")
  end


  # GET /guidances/1/edit
  def admin_edit
  	if user_signed_in? && current_user.is_org_admin? then
      @guidance = Guidance.find(params[:id])
      @dmptemplates = Dmptemplate.funders_and_own_templates(current_user.organisation_id)
			@phases = nil
			@dmptemplates.each do |template|
				if @phases.nil? then
					@phases = template.phases.find(:all,:order => 'number ASC')
				else
					@phases = @phases + template.phases.find(:all,:order => 'number ASC')
				end
			end
			@versions = nil
			@phases.each do |phase|
				if @versions.nil? then
					@versions = phase.versions.find(:all,:order => 'title ASC')
				else
					@versions = @versions + phase.versions.find(:all,:order => 'title ASC')
				end
			end
			@sections = nil
			@versions.each do |version|
				if @sections.nil? then
					@sections = version.sections.find(:all,:order => 'number ASC')
				else
					@sections = @sections + version.sections.find(:all,:order => 'number ASC')
				end
			end
			@questions = nil
			@sections.each do |section|
				if @questions.nil? then
					@questions = section.questions.find(:all,:order => 'number ASC')
				else
					@questions = @questions + section.questions.find(:all,:order => 'number ASC')
				end
			end
    else
			render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
		end
  end

  # POST /guidances
  # POST /guidances.json
  def admin_create
    if user_signed_in? && current_user.is_org_admin? then
	    @guidance = Guidance.new(params[:guidance])
	    @guidance.text = params["guidance-text"]
	    @guidance.question_id = params["question_id"]
        if @guidance.published == true then
            @gg = GuidanceGroup.find(@guidance.guidance_group_ids).first
            
            if @gg.published == false || @gg.published.nil? then
                @gg.published = true
                @gg.save
            end

        end

	    respond_to do |format|
	      if @guidance.save
	        format.html { redirect_to admin_show_guidance_path(@guidance), notice: I18n.t('org_admin.guidance.created_message') }
	        format.json { render json: @guidance, status: :created, location: @guidance }
	      else
	        format.html { render action: "new" }
	        format.json { render json: @guidance.errors, status: :unprocessable_entity }
	      end
	    end
    else
			render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
		end
  end

  # PUT /guidances/1
  # PUT /guidances/1.json
  def admin_update
 		if user_signed_in? && current_user.is_org_admin? then
   		@guidance = Guidance.find(params[:id])

			@guidance.text = params["guidance-text"]

			@guidance.question_id = params["question_id"]

	    respond_to do |format|
	      if @guidance.update_attributes(params[:guidance])
	        format.html { redirect_to admin_show_guidance_path(params[:guidance]), notice: I18n.t('org_admin.guidance.updated_message') }
	        format.json { head :no_content }
	      else
	        format.html { render action: "edit" }
	        format.json { render json: @guidance.errors, status: :unprocessable_entity }
	      end
	    end
    else
			render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
		end
  end


  # DELETE /guidances/1
  # DELETE /guidances/1.json
  def admin_destroy
  	if user_signed_in? && current_user.is_org_admin? then
	   	@guidance = Guidance.find(params[:id])
	    @guidance.destroy

	    respond_to do |format|
	      format.html { redirect_to admin_index_guidance_path }
	      format.json { head :no_content }
	    end
	 	else
			render(:file => File.join(Rails.root, 'public/403.html'), :status => 403, :layout => false)
		end

	end



end