# encoding: utf-8 class Admin::SeminarsController < OrbitAdminController require 'axlsx' before_action ->(module_app = @app_title) { set_variables module_app } before_action :set_seminar, only: [:edit, :set_write_off, :seminar_signup, :destroy] def initialize super @app_title = "seminar" end def filter_fields(categories) { :category=>categories.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}} } end def index @categories = @module_app.categories.enabled @filter_fields = filter_fields(@categories) @table_fields = [:category, 'seminar.title', 'seminar.event_during', 'seminar.signup_during', 'seminar.signup_count', 'seminar.export'] if !params[:sort].blank? if params[:sort] == 'event_during' sort = {:seminar_start_date.to_sym=>params[:order]} elsif params[:sort] == 'signup_during' sort = {:signup_start_date.to_sym=>params[:order]} else sort = {params[:sort].to_sym=>params[:order]} end else sort = {:signup_start_date=>"desc"} end @seminars = SeminarMain.all.order_by(sort).with_categories(filters("category")) @seminars = search_data(@seminars,[:title]).page(params[:page]).per(10) if request.xhr? render :partial => "index" end end def export @seminar = SeminarMain.find(params[:id]) @seminar_signups = SeminarSignup.where(:seminar_main_id => params[:id]) respond_to do |format| format.xlsx { response.headers['Content-Disposition'] = 'attachment; filename="export.xlsx"' } end end def new @seminar = SeminarMain.new @seminar_items = SeminarItem.all end def create if !seminar_params['seminar_links_attributes'].nil? seminar_params['seminar_links_attributes'].each do |idx,link| seminar_params['seminar_links_attributes'].delete(idx.to_s) if link['url'].blank? end end seminar = SeminarMain.new(seminar_params) seminar.create_user_id = current_user.id seminar.update_user_id = current_user.id seminar.save redirect_to params['referer_url'] end def edit @seminar_items = SeminarItem.all end def update params[:seminar_main][:registration_status] = (params[:seminar_main][:registration_status] ? params[:seminar_main][:registration_status] : []) uid = params[:id].split('-').last @seminar = SeminarMain.find_by(:uid=>uid) if params[:seminar_main][:seminar_signup_fields] seminar_params[:seminar_signup_fields].each do |a| @field_name = 'seminar_main' field_status = a.last[:id].present? @attribute_field = SeminarSignupField.add_seminar_signup_field(@seminar, a.last, a.last[:id], field_status) @attribute = @seminar end flash.now[:notice] = "Updated Fields" @seminar.seminar_signup_fields.each{|t| t.destroy if t["to_delete"] == true} redirect_to admin_seminars_path else if !seminar_params['seminar_links_attributes'].nil? seminar_params['seminar_links_attributes'].each do |idx,link| seminar_params['seminar_links_attributes'].delete(idx.to_s) if link['url'].blank? end end @seminar.update_user_id = current_user.id if @seminar.update_attributes(seminar_params) @seminar.seminar_signup_fields.each{|t| t.destroy if t["to_delete"] == true} redirect_to params['referer_url'] else flash.now[:error] = t('update.error.category') render action: :edit end end end def set_write_off @seminar.donation_write_off_status = true @seminar.save redirect_to "/admin/seminars?page=#{params['page']}" end def destroy @seminar.destroy redirect_to "/admin/seminars" end def seminar_signup_field @field_name = 'seminar_main' @attribute = SeminarMain.find(params[:id]) @attribute_type = 'seminar' @class = 'seminars' end def seminar_signup if !params[:search].blank? @seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id, :name=>params[:search]).page(params[:page]).per(10) else @seminar_signups = SeminarSignup.where(:seminar_main_id => @seminar.id).page(params[:page]).per(10) end end def edit_seminar_signup @seminar_signup = SeminarSignup.find(params[:id]) @seminar = SeminarMain.find(@seminar_signup.seminar_main_id) end def delete_seminar_signup @seminar_signup = SeminarSignup.find(params[:id]) @seminar_id = @seminar_signup.seminar_main_id @seminar_signup.destroy redirect_to "/admin/seminars/@seminar_id.to_s/seminar_signup" end private def set_seminar @seminar = SeminarMain.find(params[:id]) end def seminar_params params.require(:seminar_main).permit! end end