From 08b49a4263def59ec3f0caebc353d1232a1fe3db Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Thu, 30 Nov 2023 19:08:55 +0000 Subject: [PATCH] Add categories to jobs --- app/controllers/jobs_controller.rb | 1 + app/models/job.rb | 2 ++ app/models/job_category.rb | 11 +++++++++++ app/views/jobs/_form.html.erb | 4 ++++ app/views/jobs/_job.html.erb | 1 + app/views/jobs/index.html.erb | 2 +- app/views/jobs/show.html.erb | 2 ++ config/locales/en.yml | 1 + db/migrate/20231130180634_add_category_id_to_jobs.rb | 5 +++++ 9 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 app/models/job_category.rb create mode 100644 db/migrate/20231130180634_add_category_id_to_jobs.rb diff --git a/app/controllers/jobs_controller.rb b/app/controllers/jobs_controller.rb index dc5a5a9..3893048 100644 --- a/app/controllers/jobs_controller.rb +++ b/app/controllers/jobs_controller.rb @@ -52,6 +52,7 @@ class JobsController < ApplicationController :budget, :name, :description, + :category_id, time_budgets_attributes: [:id, :category_id, :hours, :job_id, :_destroy] ) end diff --git a/app/models/job.rb b/app/models/job.rb index 0cc18b6..e9d65bb 100644 --- a/app/models/job.rb +++ b/app/models/job.rb @@ -7,6 +7,8 @@ class Job < ActiveRecord::Base presence: true belongs_to :project + belongs_to :category, class_name: "JobCategory" + has_many :time_entries, dependent: :restrict_with_error has_many :time_budgets, dependent: :destroy accepts_nested_attributes_for :time_budgets, allow_destroy: true diff --git a/app/models/job_category.rb b/app/models/job_category.rb new file mode 100644 index 0000000..056014c --- /dev/null +++ b/app/models/job_category.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class JobCategory < Enumeration + has_many :jobs, foreign_key: :category_id + + OptionName = :enumeration_job_category + + def option_name + OptionName + end +end diff --git a/app/views/jobs/_form.html.erb b/app/views/jobs/_form.html.erb index 4db76f9..f07d65a 100644 --- a/app/views/jobs/_form.html.erb +++ b/app/views/jobs/_form.html.erb @@ -9,6 +9,10 @@ <%= f.label :description %> <%= f.text_area :description %> +

+ <%= f.label :category %> + <%= f.collection_select :category_id, JobCategory.all, :id, :name %> +

<%= f.label :starts_on %> <%= f.date_field :starts_on %> diff --git a/app/views/jobs/_job.html.erb b/app/views/jobs/_job.html.erb index 2e240ca..a27480e 100644 --- a/app/views/jobs/_job.html.erb +++ b/app/views/jobs/_job.html.erb @@ -1,5 +1,6 @@ <%= link_to job.name, project_job_path(job.project, job) %> + <%= job.category&.name || "Unassigned" %> <%= format_date(job.starts_on) %> <%= format_date(job.ends_on) %> <%= job.project_id %> diff --git a/app/views/jobs/index.html.erb b/app/views/jobs/index.html.erb index b455453..f0b3969 100644 --- a/app/views/jobs/index.html.erb +++ b/app/views/jobs/index.html.erb @@ -12,11 +12,11 @@ Name + Category Starts on Ends on Project External project - Total budget Progress diff --git a/app/views/jobs/show.html.erb b/app/views/jobs/show.html.erb index 43d9766..3d526b4 100644 --- a/app/views/jobs/show.html.erb +++ b/app/views/jobs/show.html.erb @@ -14,6 +14,8 @@

+
Category:
+
<%= @job.category&.name || "Unassigned" %>
Starts on:
<%= format_date(@job.starts_on) %>
Ends on:
diff --git a/config/locales/en.yml b/config/locales/en.yml index 6704079..8d7dd82 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3,3 +3,4 @@ en: field_job: Job enumeration_time_budget_category: Time budget categories + enumeration_job_category: Job categories diff --git a/db/migrate/20231130180634_add_category_id_to_jobs.rb b/db/migrate/20231130180634_add_category_id_to_jobs.rb new file mode 100644 index 0000000..52015e8 --- /dev/null +++ b/db/migrate/20231130180634_add_category_id_to_jobs.rb @@ -0,0 +1,5 @@ +class AddCategoryIdToJobs < ActiveRecord::Migration[6.1] + def change + add_column :jobs, :category_id, :integer + end +end