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
        assign_role_specific_forms_to(@worker)
        redirect_to @worker, notice: 'Worker was successfully created.'
      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

    def onboarding
      @worker = worker.find(params[:id])
      @onboarding_items = @worker.onboarding_items.includes(:form)
    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

  def assign_role_specific_forms_to(worker)
    worker_role = FormRole.find_by(name: 'Worker')
    
    # Fetch forms associated with the "Worker" role
    forms_for_worker = worker_role.forms
    
    forms_for_worker.each do |form|
      # Create an onboarding item for each form for the newly created worker
      worker.onboarding_items.create(form: form)
    end
  end
    
  end