class EmployersController < ApplicationController before_action :set_employer, only: [:show, :edit, :update, :destroy] # GET /employers def index @employers = Employer.order(:last_name).page(params[:page]).per(5) # Adjust the number per page as needed end # GET /employers/:id def show Rails.logger.debug "Employer ID: #{params[:id]}" @employer = Employer.includes(employer_records: :participant).find(params[:id]) Rails.logger.debug "Employer: #{@employer.inspect}" end def new @employer = Employer.new end def create @employer = Employer.new(employer_params) if @employer.save assign_role_specific_forms_to(@employer) redirect_to @employer, notice: 'Employer was successfully created.' else render :new end end def edit end def update if @employer.update(employer_params) redirect_to @employer, notice: 'Employer was successfully updated.' else render :edit end end def destroy @employer = Employer.find_by(id: params[:id]) if @employer @employer.destroy redirect_to employers_url, notice: 'Employer was successfully deleted.' else redirect_to employers_url, alert: 'Employer record not found.' end end def search if params[:term].present? @employers = Employer.where( "first_name LIKE :term OR last_name LIKE :term", term: "%#{params[:term]}%" ) else @employers = Employer.none end render json: @employers.map { |e| { label: e.full_name, value: e.id } } end def link_employer @worker = Worker.find(params[:id]) employer_record = @worker.employer_records.new(employer_record_params) # Handle the logic for creating the employer_record # ... end def link_worker @employer = Employer.find(params[:id]) participant_id = params[:employer_record][:participant_id] # Assuming this is passed from the form start_date = params[:employer_record][:start_date] end_date = params[:employer_record][:end_date] employer_record = EmployerRecord.new( employer: @employer, participant_id: participant_id, start_date: start_date, end_date: end_date ) if employer_record.save redirect_to @employer, notice: 'Worker was successfully linked.' else flash.now[:alert] = employer_record.errors.full_messages.to_sentence render :show end rescue ActiveRecord::RecordNotFound # Handle case where Employer is not found redirect_to some_path, alert: 'Employer not found.' end def onboarding @employer = employer.find(params[:id]) @onboarding_items = @employer.onboarding_items.includes(:form) end private def set_employer @employer = Employer.find(params[:id]) end def employer_params params.require(:employer).permit( :first_name, :last_name, :address_line_1, :address_line_2, :city, :state, :zip, :phone, :email, :tin, :dob, :ssn, :gender ) end def employer_record_params params.require(:employer_record).permit(:employer_id, :start_date, :end_date) end def assign_role_specific_forms_to(employer) employer_role = FormRole.find_by(name: 'Employer') # Fetch forms associated with the "Employer" role forms_for_employer = employer_role.forms forms_for_employer.each do |form| # Create an onboarding item for each form for the newly created employer employer.onboarding_items.create(form: form) end end end