From 95dd6dca7e84f5047f6905fa52bc6c29d27b3336 Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 23 Jan 2024 00:14:10 -0600 Subject: [PATCH] Linked Workers are now editable and removeable from a Participant. Also created the associated Controller and Edit view for said actions. --- app/controllers/employments_controller.rb | 32 +++++++++++++++++++ app/helpers/employments_helper.rb | 2 ++ app/views/employments/edit.html.erb | 17 ++++++++++ app/views/participants/show.html.erb | 20 ++++++++---- config/routes.rb | 1 + .../employments_controller_test.rb | 7 ++++ 6 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 app/controllers/employments_controller.rb create mode 100644 app/helpers/employments_helper.rb create mode 100644 app/views/employments/edit.html.erb create mode 100644 test/controllers/employments_controller_test.rb diff --git a/app/controllers/employments_controller.rb b/app/controllers/employments_controller.rb new file mode 100644 index 0000000..17cfccd --- /dev/null +++ b/app/controllers/employments_controller.rb @@ -0,0 +1,32 @@ +class EmploymentsController < ApplicationController + before_action :set_employment, only: [:edit, :update, :destroy] + + def edit + # Edit view will be rendered + end + + def update + if @employment.update(employment_params) + redirect_to participant_path(@employment.participant), notice: 'Employment was successfully updated.' + else + render :edit + end + end + + def destroy + participant = @employment.participant + @employment.destroy + redirect_to participant_path(participant), notice: 'Employment was successfully removed.' + end + + private + + def set_employment + @employment = Employment.find(params[:id]) + end + + def employment_params + params.require(:employment).permit(:start_date, :end_date) + end + end + \ No newline at end of file diff --git a/app/helpers/employments_helper.rb b/app/helpers/employments_helper.rb new file mode 100644 index 0000000..55b49da --- /dev/null +++ b/app/helpers/employments_helper.rb @@ -0,0 +1,2 @@ +module EmploymentsHelper +end diff --git a/app/views/employments/edit.html.erb b/app/views/employments/edit.html.erb new file mode 100644 index 0000000..d122163 --- /dev/null +++ b/app/views/employments/edit.html.erb @@ -0,0 +1,17 @@ +

Edit Employment

+ +<%= form_with(model: @employment, url: employment_path(@employment), method: :patch) do |form| %> +
+ <%= form.label :start_date %> + <%= form.date_field :start_date %> +
+ +
+ <%= form.label :end_date %> + <%= form.date_field :end_date %> +
+ + <%= form.submit "Update Employment" %> +<% end %> + +<%= link_to 'Back to Participant', participant_path(@employment.participant) %> diff --git a/app/views/participants/show.html.erb b/app/views/participants/show.html.erb index 3c7e949..c924ebe 100644 --- a/app/views/participants/show.html.erb +++ b/app/views/participants/show.html.erb @@ -68,19 +68,25 @@ Worker Name Start Date End Date + Actions - <% @participant.employments.each do |employment| %> - - <%= employment.worker&.name || 'No Worker Assigned' %> - <%= employment.start_date.strftime('%B %d, %Y') if employment.start_date.present? %> - <%= employment.end_date.strftime('%B %d, %Y') if employment.end_date.present? %> - - <% end %> + <% @participant.employments.each do |employment| %> + + <%= employment.worker&.name || 'No Worker Assigned' %> + <%= employment.start_date.strftime('%B %d, %Y') if employment.start_date.present? %> + <%= employment.end_date.strftime('%B %d, %Y') if employment.end_date.present? %> + + <%= link_to 'Edit', edit_employment_path(employment), class: 'btn btn-sm btn-primary' %> + <%= link_to 'Remove', employment, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-sm btn-danger' %> + + + <% end %> + <%= form_with(model: [@participant, @employment], url: link_worker_participant_path(@participant), method: :post, class: 'row g-3') do |form| %>
<%= form.label :worker_id, "Select Worker", class: 'form-label' %> diff --git a/config/routes.rb b/config/routes.rb index fa584e5..bb519c8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -16,6 +16,7 @@ Rails.application.routes.draw do end resources :workers resources :vendors + resources :employments, only: [:edit, :update, :destroy] resources :employers do get 'search', on: :collection end diff --git a/test/controllers/employments_controller_test.rb b/test/controllers/employments_controller_test.rb new file mode 100644 index 0000000..f24393e --- /dev/null +++ b/test/controllers/employments_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class EmploymentsControllerTest < ActionDispatch::IntegrationTest + # test "the truth" do + # assert true + # end +end