class Berichtsheft::Document
Implements the default document template for weekly reports.
Public Class Methods
new(user, activities, settings)
click to toggle source
# File lib/berichtsheft/document.rb, line 6 def initialize(user, activities, settings) @user = user @activities = activities @settings = settings end
Public Instance Methods
generate()
click to toggle source
# File lib/berichtsheft/document.rb, line 12 def generate pdf = Prawn::Document.new pdf.font_size 11 pdf.define_grid(columns: 3, rows: 9, gutter: 5) pdf.grid(0, 0).bounding_box do pdf.text "<b>Name und Vorname: </b>", inline_format: true pdf.move_down 5 pdf.text "<b>Ausbildungsabteilung: </b>", inline_format: true pdf.move_down 5 pdf.text "<b>Ausbildungsnachweis Nr.: </b>", inline_format: true end pdf.grid(0, 1).bounding_box do pdf.text "#{@user.last_name}, #{@user.first_name}", inline_format: true pdf.move_down 5 pdf.text "#{@user.department}" pdf.move_down 5 pdf.text "#{@activities.id_for_week} #{Prawn::Text::NBSP * 20}<b>" \ "vom: </b>#{@activities.start_date}", inline_format: true end pdf.grid(0, 2).bounding_box do pdf.move_down 35 pdf.text "#{Prawn::Text::NBSP * 10}<b>bis: " \ "</b>#{@activities.end_date}", inline_format: true end pdf.move_down -15 pdf.stroke_horizontal_rule pdf.move_down -10 data = [[ "Tag", "Ausgeführte Arbeiten", "Einzelstunden", "Gesamtstunden" ]] activities_for_monday = "" time_for_monday = "" @activities.for_monday.each do |activity| activities_for_monday += "#{activity["description"]}\n" time_for_monday += "#{activity["duration"]}\n" end data += [[ "Mo", activities_for_monday, time_for_monday, @activities.total_time_monday ]] activities_for_tuesday = "" time_for_tuesday = "" @activities.for_tuesday.each do |activity| activities_for_tuesday += "#{activity["description"]}\n" time_for_tuesday += "#{activity["duration"]}\n" end data += [[ "Di", activities_for_tuesday, time_for_tuesday, @activities.total_time_tuesday ]] activities_for_wednesday = "" time_for_wednesday = "" @activities.for_wednesday.each do |activity| activities_for_wednesday += "#{activity["description"]}\n" time_for_wednesday += "#{activity["duration"]}\n" end data += [[ "Mi", activities_for_wednesday, time_for_wednesday, @activities.total_time_wednesday ]] activities_for_thursday = "" time_for_thursday = "" @activities.for_thursday.each do |activity| activities_for_thursday += "#{activity["description"]}\n" time_for_thursday += "#{activity["duration"]}\n" end data += [[ "Do", activities_for_thursday, time_for_thursday, @activities.total_time_thursday ]] activities_for_friday = "" time_for_friday = "" @activities.for_friday.each do |activity| activities_for_friday += "#{activity["description"]}\n" time_for_friday += "#{activity["duration"]}\n" end data += [[ "Fr", activities_for_friday, time_for_friday, @activities.total_time_friday ]] pdf.move_down 20 pdf.table data, column_widths: { 0 => 30, 1 => 340, 2 => 85, 3 => 85 } do rows(1..5).height = 92 pdf.font_size(10) end pdf.move_down 20 pdf.text "Bemerkung des Ausbilders/Auszubildenden" note_field = [[""]] pdf.table note_field, column_widths: { 0 => 540 } do rows(0).height = 35 end pdf.move_down 20 footer_data = [["", "", "", ""]] footer_data += [[ "Auszubildender\nDatum und Unterschrift", "Ausbilder\nDatum und Unterschrift", "Gesetzlicher Vertreter\nDatum und Unterschrift", "Bemerkung" ]] pdf.table footer_data, column_widths: { 0 => 135, 1 => 135 , 2 => 135, 3 => 135 } do style(columns(0..3)) { |x| x.align = :center } rows(0..2).height = 35 end pdf.render_file("#{@settings.file_path}#{@activities.id_for_week}.pdf") end