obdev/app/controllers/workers_controller.rb

86 lines
2.3 KiB
Ruby
Raw Normal View History

class WorkersController < ApplicationController
def index
@workers = Worker.order(:last_name).page(params[:page]).per(5) # Adjust the number per page as needed
end
def show
@worker = Worker.includes(:participants).find(params[:id])
@employments = @worker.employments
@employment = Employment.new # Initialize a new Employment instance
end
def new
@worker = Worker.new
end
def create
@worker = Worker.new(worker_params)
if @worker.save
redirect_to @worker
else
render :new
end
end
def edit
@worker = Worker.find(params[:id])
end
def update
@worker = Worker.find(params[:id])
if @worker.update(worker_params)
redirect_to @worker
else
render :edit
end
end
def destroy
@worker = Worker.find(params[:id])
@worker.destroy
redirect_to workers_path
end
def search
if params[:term]
# Assuming you want to search by first name or last name
@workers = Worker.where('first_name LIKE ? OR last_name LIKE ?', "%#{params[:term]}%", "%#{params[:term]}%")
else
@workers = Worker.all
end
# Format the response as needed by your autocomplete component
render json: @workers.map { |worker| { label: "#{worker.first_name} #{worker.last_name}", value: worker.id } }
end
def link_participant
@worker = Worker.find(params[:id])
# Assuming you're submitting the participant ID in your form
participant_id = params[:employment][:participant_id]
start_date = params[:employment][:start_date]
end_date = params[:employment][:end_date]
# Create the employment relationship
@employment = @worker.employments.build(participant_id: participant_id, start_date: start_date, end_date: end_date)
if @employment.save
redirect_to @worker, notice: 'Participant was successfully linked to the worker.'
else
render 'show', alert: 'Unable to link participant.'
end
end
private
def worker_params
params.require(:worker).permit(
:first_name, :last_name,
:address_line_1, :address_line_2, :city, :state, :zip,
:phone, :email, :dob, :ssn, :gender
)
end
end