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]) @employer_record = EmployerRecord.new @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