diff --git a/app/controllers/employer_records_controller.rb b/app/controllers/employer_records_controller.rb index c3fe581..eb6e34e 100644 --- a/app/controllers/employer_records_controller.rb +++ b/app/controllers/employer_records_controller.rb @@ -30,6 +30,15 @@ class EmployerRecordsController < ApplicationController end end + def link_participant + @employer_record = EmployerRecord.new(employer_record_params) + if @employer_record.save + redirect_to employer_path(@employer_record.employer), notice: 'Participant was successfully linked.' + else + render 'show' # Or where you want to redirect in case of failure + end + end + def destroy if @employer_record @@ -49,6 +58,6 @@ class EmployerRecordsController < ApplicationController end def employer_record_params - params.require(:employer_record).permit(:participant_id, :employer_id, :start_date, :end_date) + params.require(:employer_record).permit(:employer_id, :participant_id, :start_date, :end_date) end end diff --git a/app/controllers/employers_controller.rb b/app/controllers/employers_controller.rb index 6f39409..72b77d3 100644 --- a/app/controllers/employers_controller.rb +++ b/app/controllers/employers_controller.rb @@ -8,7 +8,9 @@ class EmployersController < ApplicationController # GET /employers/:id def show + Rails.logger.debug "Employer ID: #{params[:id]}" @employer = Employer.includes(:employer_records, :direct_participants).find(params[:id]) + Rails.logger.debug "Employer: #{@employer.inspect}" @employer_records = @employer.employer_records.includes(:participant) end @@ -68,8 +70,31 @@ class EmployersController < ApplicationController # 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 + private def set_employer diff --git a/app/views/employers/show.html.erb b/app/views/employers/show.html.erb index da7afe2..0a6d880 100644 --- a/app/views/employers/show.html.erb +++ b/app/views/employers/show.html.erb @@ -96,7 +96,31 @@ <% else %>

No linked participants.

<% end %> - + + + <%= form_with(model: [@employer, EmployerRecord.new], url: link_participant_employer_records_path, method: :post, class: 'row g-3') do |form| %> +
+ <%= form.label :participant_name, "Add New Participant", class: 'form-label' %> + <%= text_field_tag :participant_name, nil, id: 'participant-autocomplete', class: 'form-control', placeholder: 'Start typing participant name...' %> + <%= hidden_field_tag 'employer_record[participant_id]', nil, id: 'selected-participant-id' %> +
+ +
+ <%= form.label :start_date, class: 'form-label' %> + <%= form.date_field :start_date, class: 'form-control' %> +
+ +
+ <%= form.label :end_date, class: 'form-label' %> + <%= form.date_field :end_date, class: 'form-control' %> +
+ +
+ <%= form.submit "Link Participant", class: 'btn btn-dark' %> +
+<% end %> + +

Linked Workers

@@ -133,11 +157,86 @@ <% else %>

No linked workers.

<% end %> + + <%= form_with(model: EmployerRecord.new, url: link_worker_employer_path(@employer), method: :post, class: 'row g-3') do |form| %> +
+ <%= form.label :worker_name, "Add New Worker", class: 'form-label' %> + <%= text_field_tag :worker_name, nil, id: 'worker-autocomplete', class: 'form-control', placeholder: 'Start typing worker name...' %> + <%= hidden_field_tag 'employer_record[worker_id]', nil, id: 'selected-worker-id' %> +
+ +
+ <%= form.label :start_date, class: 'form-label' %> + <%= form.date_field :start_date, class: 'form-control', name: 'employer_record[start_date]' %> +
+ +
+ <%= form.label :end_date, class: 'form-label' %> + <%= form.date_field :end_date, class: 'form-control', name: 'employer_record[end_date]' %> +
+ +
+ <%= form.submit "Link Worker", class: 'btn btn-dark' %> +
+ <% end %> +
- - \ No newline at end of file +<%# JavaScript for Participant Autocomplete %> + + + + + + +<%# JavaScript for Worker Autocomplete %> + + diff --git a/config/routes.rb b/config/routes.rb index 785d22d..3335097 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -37,14 +37,17 @@ Rails.application.routes.draw do end resources :employments, only: [:edit, :update, :destroy] + resources :employer_records, only: [:edit, :update, :destroy] do - collection do - post 'link_participant' - end + post 'link_participant', on: :collection end + resources :service_contracts resources :employers do + member do + post "link_worker" + end get 'search', on: :collection end