From cd95de39b416280c3965a41cc51288af6c7174d3 Mon Sep 17 00:00:00 2001 From: rodley82 Date: Mon, 4 Nov 2024 12:01:03 +1100 Subject: [PATCH] Added sections to the cover letter --- .gitignore | 4 ++- app/admin/users_admin.rb | 32 +++++++++++++++++-- app/models/cover_letter.rb | 13 +++++++- .../templates/awesome/coverletter.html.erb | 32 ++++++++++++++++--- ...1104003755_add_sections_to_cover_letter.rb | 7 ++++ db/schema.rb | 5 ++- 6 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20241104003755_add_sections_to_cover_letter.rb diff --git a/.gitignore b/.gitignore index 4258c63..c788cec 100644 --- a/.gitignore +++ b/.gitignore @@ -31,9 +31,11 @@ /public/assets +/db/*.bu + # Ignore master key for decrypting credentials and more. /config/master.key - +.vscode *.tex *.log diff --git a/app/admin/users_admin.rb b/app/admin/users_admin.rb index c4f1ddf..6a8a0d6 100644 --- a/app/admin/users_admin.rb +++ b/app/admin/users_admin.rb @@ -17,14 +17,13 @@ Trestle.resource(:users) do toolbar.edit if admin && admin.actions.include?(:edit) toolbar.delete if admin && admin.actions.include?(:destroy) toolbar.link 'CV', instance, action: :generate, method: :get, style: :primary, icon: "fa fa-file-pdf", target: "_blank" + toolbar.link 'CLS', instance, action: :generate_cls, method: :get, style: :secondary, icon: "fa", target: "_blank" end end controller do def generate - user = admin.find_instance(params) - ac = ActionController::Base.new() - tex_content = ac.render_to_string(layout: false, template: 'templates/awesome/resume', locals: { "@user": user } ) + tex_content = generate_tex destination_dir = "#{Rails.root}/app/views/templates/awesome" `cd #{destination_dir} && make clean` File.open("#{destination_dir}/resume.tex", "w") do |f| @@ -33,9 +32,36 @@ Trestle.resource(:users) do `cd #{destination_dir} && make resume.pdf` render file: "#{destination_dir}/resume.pdf", layout: false end + + def generate_cls + tex_content = generate_tex + destination_dir = "#{Rails.root}/app/views/templates/awesome" + File.open("#{destination_dir}/resume.tex", "w") do |f| + f << tex_content + end + render file: "#{destination_dir}/resume.tex", layout: false + end + + def generate_cover + tex_content = generate_tex(template: "cover") + destination_dir = "#{Rails.root}/app/views/templates/awesome" + `cd #{destination_dir} && make clean` + File.open("#{destination_dir}/cover.tex", "w") do |f| + f << tex_content + end + `cd #{destination_dir} && make cover.pdf` + render file: "#{destination_dir}/cover.pdf", layout: false + end + + def generate_tex(template: "resume") + user = admin.find_instance(params) + ac = ActionController::Base.new() + ac.render_to_string(layout: false, template: "templates/awesome/#{template}", locals: { "@user": user } ) + end end routes do get :generate, on: :member + get :generate_cls, on: :member end end diff --git a/app/models/cover_letter.rb b/app/models/cover_letter.rb index 3e6ba8b..c1b0a3e 100644 --- a/app/models/cover_letter.rb +++ b/app/models/cover_letter.rb @@ -4,8 +4,19 @@ class CoverLetter < ApplicationRecord default_scope -> { order(order: :asc) } scope :active, -> { where.not(order: nil) } - def tex_paragraph csv_paragraphs.split(";").join("\n").tex_safe end + + def tex_why_me + why_me.tex_safe + end + + def tex_why_company + why_company.tex_safe + end + + def tex_why_role + why_role.tex_safe + end end diff --git a/app/views/templates/awesome/coverletter.html.erb b/app/views/templates/awesome/coverletter.html.erb index 44ddbeb..053e6e5 100644 --- a/app/views/templates/awesome/coverletter.html.erb +++ b/app/views/templates/awesome/coverletter.html.erb @@ -88,15 +88,14 @@ % The date on the letter, default is the date of compilation \letterdate{\today} % The title of the letter -\lettertitle{<%= @cover_letter.title.tex_safe %>} +\lettertitle{Job Application for <%= @cover_letter.title.tex_safe %>} % How the letter is opened -\letteropening{Dear Mr./Ms./Dr. LastName,} +\letteropening{To whom it may concern,} % How the letter is closed -\letterclosing{Sincerely,} +\letterclosing{Yours Sincerely,} % Any enclosures with the letter \letterenclosure[Attached]{Curriculum Vitae} - %------------------------------------------------------------------------------- \begin{document} @@ -121,6 +120,31 @@ <%= @cover_letter.tex_paragraph %> +<% if @cover_letter.about_me.present? %> +\lettersection{About Me} + +<%= @cover_letter.about_me.tex_safe %> + +<% end %> +%------------------------------------------------ + +<% if @cover_letter.why_company.present? %> + +\lettersection{Why <%= @cover_letter.company_name.tex_safe %> ?} + +<%= @cover_letter.why_company.tex_safe %> + +<% end %> +%------------------------------------------------ + +<% if @cover_letter.why_me.present? %> + +\lettersection{Why Me?} + +<%= @cover_letter.why_me.tex_safe %> + +<% end %> + \end{cvletter} diff --git a/db/migrate/20241104003755_add_sections_to_cover_letter.rb b/db/migrate/20241104003755_add_sections_to_cover_letter.rb new file mode 100644 index 0000000..60e4f09 --- /dev/null +++ b/db/migrate/20241104003755_add_sections_to_cover_letter.rb @@ -0,0 +1,7 @@ +class AddSectionsToCoverLetter < ActiveRecord::Migration[7.0] + def change + add_column :cover_letters, :about_me, :text + add_column :cover_letters, :why_company, :text + add_column :cover_letters, :why_me, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index 61d2427..e344d4b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_12_21_141217) do +ActiveRecord::Schema[7.0].define(version: 2024_11_04_003755) do create_table "cover_letters", force: :cascade do |t| t.string "title" t.string "company_name" @@ -21,6 +21,9 @@ ActiveRecord::Schema[7.0].define(version: 2022_12_21_141217) do t.text "csv_paragraphs" t.datetime "created_at", null: false t.datetime "updated_at", null: false + t.text "about_me" + t.text "why_company" + t.text "why_me" t.index ["user_id"], name: "index_cover_letters_on_user_id" end