12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- require 'sinatra'
- require 'sequel'
- # require 'mailgun-ruby'
- # require 'envyable'
- # env.yml mit den unten verwendeten ENV anleg
- # Envyable.load("#{File.dirname(__FILE__)}/config/env.yml")
- #
- DB = Sequel.connect("sqlite://form.db")
- class SchuelerBasisdaten < Sequel::Model(:'SchuelerBasisdaten.dat')
- def volljaehrig?(geburtsdatum)
- n = DateTime.now
- g = DateTime.parse(geburtsdatum)
- g >> 12*18 < n
- end
- def before_save
- self[:"Schulpflicht erf."] ||= volljaehrig?(self[:"Geburtsdatum"]) ? "J" : "N"
- super
- end
- end
- class SchuelerZusatzdaten < Sequel::Model(:'SchuelerZusatzdaten.dat')
- end
- class SchuelerErzieher < Sequel::Model(:'SchuelerErzieher.dat')
- end
- class SchuelerTelefonnummern < Sequel::Model(:'SchuelerTelefonnummern.dat')
- end
- configure do
- enable :sessions
- set :session_secret, (ENV['S_SESSION_SECRET'] || 'your_secret')
- end
- helpers do
- def partial(template, locals = {})
- slim template, :layout => false, :locals => locals
- end
- end
- get '/' do
- slim :form, :locals => {:keys => []}
- end
- post '/bewerbung' do
- p params
- keys = []
- entries = []
- params.keys.each do |k|
- keys << "Ausbildung" if params["Ausbildung"].empty?
- keys << "Taetigkeit" if params["Taetigkeit"].empty?
- next unless k.include?(".dat")
- keys << params[k].keys.select{|kk| puts kk; params[k][kk].empty? && !kk.include?("2.Person")}.map{|kk| k+"["+kk+"]"}
- entries << Module.const_get(k.chomp(".dat")).new(params[k])
- end
- if keys.flatten!.empty?
- entries.each do |e|
- e[:Vorname] ||= params["SchuelerBasisdaten.dat"]["Vorname"]
- e[:Nachname] ||= params["SchuelerBasisdaten.dat"]["Nachname"]
- e[:Geburtsdatum]||= params["SchuelerBasisdaten.dat"]["Geburtsdatum"]
- e.save
- end
- "ok"
- else
- slim :form, :locals => {:keys => keys}
- end
- end
|