obdev/app/controllers/vendors_controller.rb

87 lines
2.0 KiB
Ruby

class VendorsController < ApplicationController
def index
@vendors = Vendor.order(:name).page(params[:page]).per(5) # Adjust the number per page as needed
end
def show
@vendor = Vendor.find(params[:id])
@sorted_participants = @vendor.service_contracts.includes(:participant).map(&:participant).sort_by(&:last_name)
end
def new
@vendor = Vendor.new
end
def create
@vendor = Vendor.new(vendor_params)
if @vendor.save
assign_role_specific_forms_to(@vendor)
redirect_to @vendor, notice: 'Vendor was successfully created.'
else
render :new
end
end
def edit
@vendor = Vendor.find(params[:id])
end
def update
@vendor = Vendor.find(params[:id])
if @vendor.update(vendor_params)
redirect_to @vendor
else
render :edit
end
end
def destroy
@vendor = Vendor.find(params[:id])
@vendor.destroy
redirect_to vendors_path
end
def search
if params[:term].present?
@vendors = Vendor.where("name LIKE ?", "%#{params[:term]}%")
else
@vendors = Vendor.none
end
# Respond with a JSON array of vendor names and IDs
render json: @vendors.map { |vendor| { label: vendor.name, value: vendor.id } }
end
private
def vendor_params
params.require(:vendor).permit(
:name,
:address_line_1,
:address_line_2,
:city,
:state,
:zip,
:phone,
:email,
:dba,
:tin,
:contact
)
end
def assign_role_specific_forms_to(vendor)
vendor_role = FormRole.find_by(name: 'Vendor')
# Fetch forms associated with the "Vendor" role
forms_for_vendor = vendor_role.forms
forms_for_vendor.each do |form|
# Create an onboarding item for each form for the newly created vendor
vendor.onboarding_items.create(form: form)
end
end
end