orbit4-5/app/views/admin/members/download_export.xlsx.axlsx

161 lines
6.0 KiB
Plaintext

# encoding: utf-8
wb = xlsx_package.workbook
wb.add_worksheet(name: "Member") do |sheet|
row = [ "user_id", "password" ]
row2 = ["#{t("users.user_id")}(#{t("users.user_id_note")})", "#{t("users.new_password")}(#{t("users.new_password_note")})"]
row3 = ["text", "text"]
@site_in_use_locales.each_with_index do |locale, i|
row << "first_name(#{locale})"
row2 << "#{t("users.first_name")}(#{I18n.t(locale)})"
row3 << "text"
end
@site_in_use_locales.each_with_index do |locale, i|
row << "last_name(#{locale})"
row2 << "#{t("users.last_name")}(#{I18n.t(locale)})"
row3 << "text"
end
row << "email"
row2 << "#{t('users.email')}"
row3 << "text"
row << "sid"
row2 << "#{t('users.sid')}"
row3 << "text"
row << "office_tel"
row2 << "#{t('users.office_tel')}"
row3 << "text"
row << "sex"
row2 << "#{t('users.sex')}(male, female, unknown)"
row3 << "radio"
row << "birthday"
row2 << "#{t('users.birthday')}(yyyy/MM/dd)"
row3 << "date"
@site_in_use_locales.each_with_index do |locale, i|
row << "address(#{locale})"
row2 << "#{t("users.address")}(#{I18n.t(locale)})"
row3 << "text_area"
end
@site_in_use_locales.each_with_index do |locale, i|
row << "autobiography(#{locale})"
row2 << "#{t("users.autobiography")}(#{I18n.t(locale)})"
row3 << "text_area"
end
@field_type = {'text_field' => 'typeA', 'select' => 'typeB', 'date' => 'typeC', 'text_area' => 'typeD', 'radio_button' => 'typeE', 'checkbox' => 'typeE', 'address' => ''}
@date_type = {'format1' => 'yyyy/MM/dd hh:mm', 'format2' => 'yyyy/MM/dd', 'format3' => 'yyyy/MM', 'format4' => 'yyyy'}
@infos = MemberInfo.all
@infos.each do |info|
info.member_profile_fields.each do |member_profile_field|
if member_profile_field.markup == 'text_field' or member_profile_field.markup == 'text_area'
if member_profile_field[@field_type[member_profile_field.markup]]['cross_lang'] == 'true'
row << "#{info.key}-#{member_profile_field.key}"
row2 << "#{info.title}-#{member_profile_field.title}"
row3 << member_profile_field.markup
else
@site_in_use_locales.each_with_index do |locale, i|
row << "#{info.key}-#{member_profile_field.key}(#{locale})"
row2 << "#{info.title}-#{member_profile_field.title}(#{I18n.t(locale)})"
row3 << member_profile_field.markup
end
end
elsif member_profile_field.markup == 'date'
row << "#{info.key}-#{member_profile_field.key}"
row2 << "#{info.title}-#{member_profile_field.title}(#{@date_type[member_profile_field['typeC']['format']]})"
row3 << member_profile_field.markup
elsif member_profile_field.markup == 'select' or member_profile_field.markup == 'radio_button' or member_profile_field.markup == 'checkbox'
@option_list = member_profile_field[@field_type[member_profile_field.markup]]['option_list']
if !@option_list.blank?
@opdata = @option_list.collect{|p| "#{p[0]}=>#{p[1][I18n.locale.to_s]}"}
end
row << "#{info.key}-#{member_profile_field.key}"
row2 << "#{info.title}-#{member_profile_field.title}(#{@opdata.join(',')})"
elsif member_profile_field.markup == 'address'
@site_in_use_locales.each_with_index do |locale, i|
row << "#{info.key}-#{member_profile_field.key}(#{locale})"
row2 << "#{info.title}-#{member_profile_field.title}(#{I18n.t(locale)})"
row3 << member_profile_field.markup
end
else
row << "#{info.key}-#{member_profile_field.key}"
row2 << "#{info.title}-#{member_profile_field.title}"
row3 << member_profile_field.markup
end
end
end
@roles = Role.any_in(:key => @member_roles)
@roles.each do |role|
role_statuses = RoleStatus.where(role_id: role.id, :disable=> false).asc(:_id)
if !role_statuses.blank?
@statusdata = role_statuses.collect{|a,i| "#{a.key}=>#{a.title}"}
row << "#{role.key}-status"
row2 << "#{role.title}-#{t(:status)}(#{@statusdata.join(',')})"
row3 << "checkbox"
end
role.attribute_fields.asc(:created_at).each do |attribute_field|
if attribute_field.markup == 'text_field' or attribute_field.markup == 'text_area'
if attribute_field[@field_type[attribute_field.markup]]['cross_lang'] == 'true'
row << "#{role.key}-#{attribute_field.key}"
row2 << "#{role.title}-#{attribute_field.title}"
row3 << attribute_field.markup
else
@site_in_use_locales.each_with_index do |locale, i|
row << "#{role.key}-#{attribute_field.key}(#{locale})"
row2 << "#{role.title}-#{attribute_field.title}(#{I18n.t(locale)})"
row3 << attribute_field.markup
end
end
elsif attribute_field.markup == 'date'
row << "#{role.key}-#{attribute_field.key}"
row2 << "#{role.title}-#{attribute_field.title}(#{@date_type[attribute_field['typeC']['format']]})"
row3 << attribute_field.markup
elsif attribute_field.markup == 'select' or attribute_field.markup == 'radio_button' or attribute_field.markup == 'checkbox'
@option_list = attribute_field[@field_type[attribute_field.markup]]['option_list']
if !@option_list.blank?
@opdata = @option_list.collect{|p| "#{p[0]}=>#{p[1][I18n.locale.to_s]}"}
end
row << "#{role.key}-#{attribute_field.key}"
row2 << "#{role.title}-#{attribute_field.title}(#{@opdata.join(',')})"
row3 << attribute_field.markup
elsif attribute_field.markup == 'address'
@site_in_use_locales.each_with_index do |locale, i|
row << "#{role.key}-#{attribute_field.key}(#{locale})"
row2 << "#{role.title}-#{attribute_field.title}(#{I18n.t(locale)})"
row3 << attribute_field.markup
end
else
row << "#{role.key}-#{attribute_field.key}"
row2 << "#{role.title}-#{attribute_field.title}"
row3 << attribute_field.markup
end
end
end
sheet.add_row row
sheet.add_row row3
sheet.add_row row2
end