YaleSTC/shifts

View on GitHub
app/controllers/user_profile_fields_controller.rb

Summary

Maintainability
A
15 mins
Test Coverage
class UserProfileFieldsController < ApplicationController
  layout 'users'

  before_filter :require_department_admin
  def index
    @user_profile_fields = UserProfileField.all
  end

  def show
    @user_profile_field = UserProfileField.find(params[:id])
  end

  def profile
    @user_profile_fields = UserProfileField.where(department_id: @department.id)
  end

  def new
    @user_profile_field = UserProfileField.new
  end

  def create
    @user_profile_field = UserProfileField.new(params[:user_profile_field])
    @user_profile_field.department_id = @department.id
    begin
      UserProfileField.transaction do
        @user_profile_field.save
        @department.users.each do |user|
          UserProfileEntry.create!(user_profile_id: user.user_profile.id,
                                   user_profile_field_id: @user_profile_field.id)
        end
      end
      flash[:notice] = "Successfully created user profile field."
      redirect_to @user_profile_field
    rescue
      flash[:error] = "Something went wrong. Please try again."
      render action: 'new'
    end
  end

  def edit
    @user_profile_field = UserProfileField.find(params[:id])
  end

  def update
    @user_profile_field = UserProfileField.find(params[:id])
    if @user_profile_field.update_attributes(params[:user_profile_field])
      flash[:notice] = "Successfully updated user profile field."
      redirect_to @user_profile_field
    else
      render action: 'edit'
    end
  end

  def destroy
    @user_profile_field = UserProfileField.find(params[:id])
    @user_profile_field.destroy
    flash[:notice] = "Successfully destroyed user profile field."
    redirect_to user_profile_fields_url
  end
end