Browse Source

Added sections to the cover letter

pull/1/head
rodley82 1 year ago
parent
commit
cd95de39b4
  1. 4
      .gitignore
  2. 32
      app/admin/users_admin.rb
  3. 13
      app/models/cover_letter.rb
  4. 32
      app/views/templates/awesome/coverletter.html.erb
  5. 7
      db/migrate/20241104003755_add_sections_to_cover_letter.rb
  6. 5
      db/schema.rb

4
.gitignore

@ -31,9 +31,11 @@
/public/assets
/db/*.bu
# Ignore master key for decrypting credentials and more.
/config/master.key
.vscode
*.tex
*.log

32
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

13
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

32
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}

7
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

5
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

Loading…
Cancel
Save