docbrown/app/controllers/giveaways_controller.rb
Andy Zhao 263a74bcb6 Add more request specs (#460)
* Remove email blank onboarding redirect

* Add authorization specs for video upload

* Add registration spec

* Remove skip before actions for signup complete

* Use new param for abuse reports

* Remove else because it never runs

* Add more dashboard request specs

* Use let with no bang in case there are errors
2018-06-20 17:46:23 -04:00

112 lines
3.5 KiB
Ruby

class GiveawaysController < ApplicationController
# GET /giveaways/new
def new
@user = current_user
@errors = []
end
def edit
@user = current_user
@errors = []
end
# POST /giveaways
# POST /giveaways.json
# def create
# @user = User.new(giveaway_params)
#
# respond_to do |format|
# if @user.save
# format.html { redirect_to @user, notice: 'Giveaway was successfully created.' }
# format.json { render :show, status: :created, location: @user }
# else
# format.html { render :new }
# format.json { render json: @user.errors, status: :unprocessable_entity }
# end
# end
# end
# PATCH/PUT /giveaways/1
# PATCH/PUT /giveaways/1.json
def update
prevent_request_if_requested_twice
@user = current_user
@user.assign_attributes(user_params)
@errors = []
confirm_presence
respond_to do |format|
if @invalid_form
render :edit
return
end
@user.onboarding_package_requested_again = true if @user.onboarding_package_requested
@user.onboarding_package_requested = true
@user.onboarding_package_form_submmitted_at = Time.now.to_datetime
@user.personal_data_updated_at = Time.now.to_datetime
@user.shipping_validated_at = Time.now.to_datetime if user_params[:shipping_validated] == "1"
if @user.save!
format.html { redirect_to "/freestickers/edit" }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
accessible = [
:email,
:shipping_name,
:shipping_company,
:shipping_address,
:shipping_address_line_2,
:shipping_city,
:shipping_state,
:shipping_country,
:shipping_postal_code,
:shipping_validated,
:top_languages,
:experience_level,
:specialty,
:tabs_or_spaces,
:onboarding_package_requested,
:onboarding_package_form_submmitted_at,
:personal_data_updated_at,
:shirt_size,
:shirt_gender,
]
params.require(:user).permit(accessible)
end
def confirm_presence
unless user_params[:shipping_name].present?
@errors << "You need a shipping name"
@invalid_form = true
end
unless user_params[:shipping_address].present?
@errors << "You need a shipping address"
@invalid_form = true
end
unless user_params[:shipping_city].present?
@errors << "You need a shipping city"
@invalid_form = true
end
unless user_params[:shipping_country].present?
@errors << "You need a shipping country"
@invalid_form = true
end
unless user_params[:top_languages].present?
@errors << "You need to include your favorite languages. It's a spam filter."
@invalid_form = true
end
end
def prevent_request_if_requested_twice
return if current_user.onboarding_package_requested_again
end
end