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