def create
@partner = Partner.new(params[:partner])
if(params[:partner_request_id])
@partner_request = PartnerRequest.find(params[:partner_request_id])
end
unless (params['other_messaging_type'])
@partner.other_messaging_type = nil
end
@admin_contact_email = Email.find_or_create_by_address(
params[:admin_contact_email])
if(@admin_contact_email.account)
@account = @admin_contact_email.account
@partner.account = @account
else
@account = @partner.build_account
@account.password = Account.generate_random_password(8)
end
if (@account.address)
@address = Contact.new
@address.build_address
@address.attributes = params[:address]
@account.contacts << @address
else
@address = @account.build_address(params[:address]) # general contact
end
@address.person_optional = true
@address.account = @account
@partner.general_contact = @address
@admin_contact = @partner.build_admin_contact(params[:admin_contact])
@admin_contact.address = @address.address
@admin_contact.account = @account
@admin_contact_email.account = @account
@admin_contact.emails << @admin_contact_email
@account.contacts << @admin_contact
if @partner.tech_contact_same_as_admin?
@partner.tech_contact = @partner.admin_contact
else
@tech_contact = @partner.build_tech_contact(params[:tech_contact])
@tech_contact.address = @address.address
@tech_contact.account = @account
@tech_contact_email = Email.find_or_create_by_address(
params[:tech_contact_email])
@tech_contact.emails << @tech_contact_email
@tech_contact_email.require_account = false
@account.contacts << @tech_contact
end
@website = @partner.build_website(params[:website])
if ((params[:commit] == 'Create Partner') && @partner.save)
flash[:success] = 'Partner Created'
if (@partner_request)
@partner_request.set_accepted
@partner_request.partner = @partner
@partner_request.save_without_validation
end
redirect_to edit_images_partner_url(:id => @partner.id)
else
if @partner.valid?
@confirmation = true if (params[:commit] == 'Review Partner')
end
setup_form
render :action => 'new'
end
end
Refactorings
No refactoring yet !
I came across this monster method in a controller and it looks like it needs a diet.