Skip to content

Instantly share code, notes, and snippets.

@pabloDon
Created November 21, 2013 11:19
Show Gist options
  • Save pabloDon/7579946 to your computer and use it in GitHub Desktop.
Save pabloDon/7579946 to your computer and use it in GitHub Desktop.
Controlador. Proyecto interno de Clever Consulting
class FormsController < ApplicationController
before_filter :customer_can_review?, only: :review
before_filter :require_user, only: [:index, :show, :edit, :update, :destroy, :confirm]
# GET /forms
# GET /forms.json
def index
@forms = Form.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @forms }
end
end
# GET /forms/1
# GET /forms/1.json
def show
@form = Form.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @form }
format.pdf do
pdf = FormPdf.new(@form, view_context)
send_data pdf.render, filename: "form #{@form.contact_project_name}.pdf", type: "application/pdf"
end
end
end
# GET /forms/new
# GET /forms/new.json
def new
@form = Form.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @form }
end
end
# GET /forms/1/edit
def edit
@form = Form.find(params[:id])
end
# POST /forms
# POST /forms.json
def create
@form = Form.new(params[:form])
# pending: 1 => revisar por comercial
@form.pending = 1
respond_to do |format|
if @form.save
UserMailer.notify_create_to_commercial(@form).deliver
format.html { redirect_to root_url, notice: 'Tu formulario ha sido creado y enviado correctamente. Pronto nos pondremos en contacto contigo.' }
format.json { render json: @form, status: :created, location: @form }
else
format.html { render action: "new" }
format.json { render json: @form.errors, status: :unprocessable_entity }
end
end
end
# PUT /forms/1
# PUT /forms/1.json
def update
@form = Form.find(params[:id])
# pending: 0 => revisar por cliente
params[:form][:pending] = 0
respond_to do |format|
if @form.update_attributes(params[:form])
UserMailer.reject_form_email(@form).deliver
format.html { redirect_to forms_url, notice: 'Form was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @form.errors, status: :unprocessable_entity }
end
end
end
# DELETE /forms/1
# DELETE /forms/1.json
def destroy
@form = Form.find(params[:id])
@form.destroy
respond_to do |format|
format.html { redirect_to forms_url }
format.json { head :no_content }
end
end
# Revisión del formulario por parte del comercial
def review
@form = Form.find(params[:id])
end
# Reinicio de las sugerencias comentadas por el comercial
def restart_suggestions params
form = params[:form]
form[:step_1_review] = form[:step_2_review] = form[:step_7_review] = form[:step_8_review] = true
form[:step_1_review_desc] = form[:step_2_review_desc] = form[:step_7_review_desc] = form[:task_1_review_desc] = form[:task_2_review_desc] = form[:task_3_review_desc] = form[:task_4_review_desc] = form[:task_5_review_desc] = form[:task_6_review_desc] = form[:task_7_review_desc] = form[:task_8_review_desc] = form[:task_9_review_desc] = form[:task_10_review_desc] = ""
return form
end
# Actualización de la revisión, modificada respecto al update.
def update_review
@form = Form.find(params[:id])
# pending: 1 => a revisar por comercial
params[:form][:pending] = 1
respond_to do |format|
params[:form] = restart_suggestions params
if @form.update_attributes(params[:form])
UserMailer.notify_update_to_commercial(@form).deliver
format.html { redirect_to @form, notice: 'Form was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "review" }
format.json { render json: @form.errors, status: :unprocessable_entity }
end
end
end
# Confirmación de que el formulario es definitivo
def confirm
@form = Form.find(params[:id])
# pending: 2 => OK
@form.update_attributes(pending: 2)
UserMailer.confirm_form_email(@form).deliver
UserMailer.confirm_form_email_to_comercial(@form).deliver
redirect_to forms_path
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment