bewerbung.rb 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. require 'sinatra'
  2. require 'sequel'
  3. # require 'mailgun-ruby'
  4. # require 'envyable'
  5. # env.yml mit den unten verwendeten ENV anleg
  6. # Envyable.load("#{File.dirname(__FILE__)}/config/env.yml")
  7. #
  8. DB = Sequel.connect("sqlite://form.db")
  9. class SchuelerBasisdaten < Sequel::Model(:'SchuelerBasisdaten.dat')
  10. def volljaehrig?(geburtsdatum)
  11. n = DateTime.now
  12. g = DateTime.parse(geburtsdatum)
  13. g >> 12*18 < n
  14. end
  15. def before_save
  16. self[:"Schulpflicht erf."] ||= volljaehrig?(self[:"Geburtsdatum"]) ? "J" : "N"
  17. super
  18. end
  19. end
  20. class SchuelerZusatzdaten < Sequel::Model(:'SchuelerZusatzdaten.dat')
  21. end
  22. class SchuelerErzieher < Sequel::Model(:'SchuelerErzieher.dat')
  23. end
  24. class SchuelerTelefonnummern < Sequel::Model(:'SchuelerTelefonnummern.dat')
  25. end
  26. configure do
  27. enable :sessions
  28. set :session_secret, (ENV['S_SESSION_SECRET'] || 'your_secret')
  29. end
  30. helpers do
  31. def partial(template, locals = {})
  32. slim template, :layout => false, :locals => locals
  33. end
  34. end
  35. get '/' do
  36. slim :form, :locals => {:keys => []}
  37. end
  38. post '/bewerbung' do
  39. p params
  40. keys = []
  41. entries = []
  42. params.keys.each do |k|
  43. keys << "Ausbildung" if params["Ausbildung"].empty?
  44. keys << "Taetigkeit" if params["Taetigkeit"].empty?
  45. next unless k.include?(".dat")
  46. keys << params[k].keys.select{|kk| puts kk; params[k][kk].empty? && !kk.include?("2.Person")}.map{|kk| k+"["+kk+"]"}
  47. entries << Module.const_get(k.chomp(".dat")).new(params[k])
  48. end
  49. if keys.flatten!.empty?
  50. entries.each do |e|
  51. e[:Vorname] ||= params["SchuelerBasisdaten.dat"]["Vorname"]
  52. e[:Nachname] ||= params["SchuelerBasisdaten.dat"]["Nachname"]
  53. e[:Geburtsdatum]||= params["SchuelerBasisdaten.dat"]["Geburtsdatum"]
  54. e.save
  55. end
  56. "ok"
  57. else
  58. slim :form, :locals => {:keys => keys}
  59. end
  60. end