## Order Types
```ruby=
OrderTypeSeed.generate_order_types
AdminPermissionSeed.generate_admin_permissions
```
## Domains
```ruby=
domains_data = [
{ name: 'agent.com', genre: :agent, status: :active },
{ name: 'client.com', genre: :client, status: :active },
{ name: 'admin.com', genre: :admin, status: :active },
]
domains_data.each do |domain|
Domain.find_or_create_by domain
end
```
## Casino Platforms
```ruby
casino_platform_data = [
{ name: 'IM', service_name: 'im_esports', betting_record_system_name: 'imesport' },
{ name: 'MG+', service_name: 'mg_plus', betting_record_system_name: 'mgplus' },
{ name: 'JILI', service_name: 'jili', betting_record_system_name: 'jili' },
{ name: 'KA', service_name: 'ka_gaming', betting_record_system_name: 'ka' },
{ name: 'FB', service_name: 'fb_sport_book', betting_record_system_name: 'fb' },
{ name: 'IC', service_name: 'ic', betting_record_system_name: 'ic' }
]
casino_platform_data.each do |casino_platform|
object = CasinoPlatform.where(casino_platform).first_or_create
puts "find or create casino platform id: #{object.id}, name: #{object.name}, service_name: #{object.service_name}"
end
game_category_data = [
{ name: 'slot', sort: 1, status: :visible, genre: :settleable },
{ name: 'e_sport', sort: 2, status: :visible, genre: :settleable },
{ name: 'sport', sort: 3, status: :visible, genre: :settleable },
{ name: 'sabong', sort: 4, status: :visible, genre: :settleable }
].freeze
game_category_data.each do |game_category|
object = GameCategory.where(game_category).first_or_create
puts "find or create game category id: #{object.id}, name: #{object.name}, sort: #{object.sort}"
end
## Generate subplatform
sub_platform_data = [
{ name: 'Jili', casino_platform: 'jili', game_category: 'slot', code_name: :jili,
redirect_param: '', sort: 1, betting_record_system_name: 'jili' },
{ name: 'MG', casino_platform: 'mg_plus', game_category: 'slot', code_name: :mg_plus_slot,
redirect_param: '', sort: 2, betting_record_system_name: 'mg_plus_slot' },
{ name: 'KA', casino_platform: 'ka_gaming', game_category: 'slot', code_name: :ka,
redirect_param: '', sort: 3, betting_record_system_name: 'ka' },
{ name: 'IC', casino_platform: 'ic', game_category: 'sabong', code_name: :ic,
redirect_param: '', sort: 4, betting_record_system_name: 'ic' },
{ name: 'FB Sports', casino_platform: 'fb_sport_book', game_category: 'sport', code_name: :fb_sport, redirect_param: '', sort: 5, betting_record_system_name: 'fb' },
]
sub_platform_data.each do |sub_platform|
object = SubPlatform.where(name: sub_platform[:name],
casino_platform: CasinoPlatform.find_by_service_name(sub_platform[:casino_platform]),
game_category: GameCategory.find_by_name(sub_platform[:game_category]),
redirect_param: sub_platform[:redirect_param],
sort: sub_platform[:sort],
betting_record_system_name: sub_platform[:betting_record_system_name],
code_name: sub_platform[:code_name]).first_or_create
puts object.errors.full_messages
puts "find or create sub platform id: #{object.id}, name: #{object.name},
casino_platform: #{object.casino_platform.name},
game_category: #{object.game_category.name},
redirect_params: #{object.redirect_param},
sort: #{object.sort},
betting_record_system_name: #{object.betting_record_system_name}"
end
```
## Financial Tags
```ruby=
financial_tags_data = [
{ name: 'New Client', code: 'new_client', remark: :beginner },
{ name: 'Beginner', code: 'beginner', remark: :junior },
{ name: 'Advanced Client', code: 'advanced_client', remark: :experienced_client },
{ name: 'Vip Group A', code: 'vip_a', remark: 'vip_a' },
{ name: 'Vip Group B', code: 'vip_b', remark: 'vip_b' },
{ name: 'Vip Group C', code: 'vip_c', remark: 'vip_c' },
{ name: 'Violaters', code: 'violaters', remark: :beginner },
{ name: 'Huge amount', code: 'huge_amount', remark: :junior },
{ name: 'SEO', code: 'seo', remark: :beginner },
{ name: 'Test', code: 'test', remark: :beginner },
{ name: 'Dangerous', code: 'Dangerous', remark: :junior }
]
financial_tags_data.each do |financial_tag|
object = FinancialTag.where(financial_tag).first_or_create
puts "find or create financial tag id: #{object.id}, name: #{object.name}, code: #{object.code}"
end
payment_methods_data = [
{ name: 'USDT-ERC20', code: 'remit', currency: 'usdt' },
{ name: 'USDT-TRC20', code: 'remit_trc', currency: 'usdt' },
{ name: 'GCASH', code: 'gcash', currency: 'PHP' },
]
payment_methods_data.each do |payment_method|
object = PaymentMethod.where(payment_method).first_or_initialize
object.save if object.valid?
puts "find or create payment method id: #{object.id}, name: #{object.name}, code: #{object.code}, currency: #{object.currency}"
end
FinancialTag.all.each do |financial_tag|
PaymentMethod.all.each do |payment_method|
object = PaymentMethodConfig.where(financial_tag: financial_tag, payment_method: payment_method).first_or_create
puts "find or create payment method config
id: #{object.id}, financial_tag: #{financial_tag.name}, payment_method: #{payment_method.name}"
end
end
```
## MembershipTier
```ruby =
membership_tier_data = [
{
:tier=>{"name"=>"bronze", "next"=>"silver", "bet_amount_threshold"=>0, "vip_bonus"=>nil},
:rakeback=>{"baccarat"=>0.1e0, "sport"=>0.1e0, "e_sport"=>0.1e0, "slot"=>0.1e0, "lottery"=>0.1e0, "chess_game"=>0.0, "fishing_game"=>0.1e0, "sabong"=>0.0, "genre"=>"vip"},
:transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>400000}, :financial_tag=>"New Client"},
{:tier=>{"name"=>"silver", "next"=>"gold", "bet_amount_threshold"=>80000, "vip_bonus"=>128},
:rakeback=>{"baccarat"=>0.2e0, "sport"=>0.2e0, "e_sport"=>0.2e0, "slot"=>0.2e0, "lottery"=>0.2e0, "chess_game"=>0.0, "fishing_game"=>0.2e0, "sabong"=>0.0, "genre"=>"vip"}, :transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>640000}, :financial_tag=>"Beginner"},
{:tier=>{"name"=>"gold", "next"=>"platinum", "bet_amount_threshold"=>320000, "vip_bonus"=>288}, :rakeback=>{"baccarat"=>0.3e0, "sport"=>0.3e0, "e_sport"=>0.3e0, "slot"=>0.3e0, "lottery"=>0.3e0, "chess_game"=>0.0, "fishing_game"=>0.3e0, "sabong"=>0.0, "genre"=>"vip"},
:transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>640000}, :financial_tag=>"Advanced Client"},
{:tier=>{"name"=>"platinum", "next"=>"emerald", "bet_amount_threshold"=>400000, "vip_bonus"=>528}, :rakeback=>{"baccarat"=>0.4e0, "sport"=>0.4e0, "e_sport"=>0.4e0, "slot"=>0.4e0, "lottery"=>0.4e0, "chess_game"=>0.0, "fishing_game"=>0.4e0, "sabong"=>0.0, "genre"=>"vip"}, :transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>800000}, :financial_tag=>"Vip Group A"},
{:tier=>{"name"=>"emerald", "next"=>"ruby", "bet_amount_threshold"=>800000, "vip_bonus"=>768},
:rakeback=>{"baccarat"=>0.5e0, "sport"=>0.5e0, "e_sport"=>0.5e0, "slot"=>0.5e0, "lottery"=>0.5e0, "chess_game"=>0.0, "fishing_game"=>0.5e0, "sabong"=>0.0, "genre"=>"vip"},:transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>800000}, :financial_tag=>"Vip Group B"},
{:tier=>{"name"=>"ruby", "next"=>"diamond", "bet_amount_threshold"=>2400000, "vip_bonus"=>1088}, :rakeback=>{"baccarat"=>0.6e0, "sport"=>0.6e0, "e_sport"=>0.6e0, "slot"=>0.6e0, "lottery"=>0.6e0, "chess_game"=>0.0, "fishing_game"=>0.6e0, "sabong"=>0.0, "genre"=>"vip"}, :transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>800000}, :financial_tag=>"Vip Group C"},
{:tier=>{"name"=>"diamond", "next"=>"blue diamond", "bet_amount_threshold"=>4000000, "vip_bonus"=>1328}, :rakeback=>{"baccarat"=>0.7e0, "sport"=>0.7e0, "e_sport"=>0.7e0, "slot"=>0.7e0, "lottery"=>0.7e0, "chess_game"=>0.0, "fishing_game"=>0.7e0, "sabong"=>0.0, "genre"=>"vip"},
:transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>1600000}, :financial_tag=>"Vip Group C"},
{:tier=>{"name"=>"blue diamond", "next"=>nil, "bet_amount_threshold"=>6400000, "vip_bonus"=>2128}, :rakeback=>{"baccarat"=>0.8e0, "sport"=>0.8e0, "e_sport"=>0.8e0, "slot"=>0.8e0, "lottery"=>0.8e0, "chess_game"=>0.0, "fishing_game"=>0.8e0, "sabong"=>0.0, "genre"=>"vip"}, :transactions_setting=>{"withdraw_count_per_day"=>10, "withdraw_amount_per_day"=>1600000}, :financial_tag=>"Vip Group C"}
]
membership_tier_data.each do |data|
object = MembershipTier.where(data[:tier]).first_or_initialize
object.financial_tag = FinancialTag.find_by_name(data[:financial_tag])
object.rakeback ||= Rakeback.create(data[:rakeback])
object.transactions_setting ||= TransactionsSetting.create(data[:transactions_setting])
object.save
p '--------------------------------'
p object.errors.full_messages
end
```
## Some Not sure if needed
```ruby=
##generate promoted action category
# use name for translation
promoted_actions_category_data = [
{ display_name: '硬广', name: 'banner_ads' },
{ display_name: '競價', name: 'keyword_bids' },
{ display_name: '站群', name: 'multiple_websites_from_same_domain' },
{ display_name: 'app', name: 'app_marketing' },
{ display_name: '代理', name: 'agent_referrals' },
{ display_name: '电销', name: 'telemarketing' },
{ display_name: '社交', name: 'chatting' },
{ display_name: '直客', name: 'direct_client' },
{ display_name: '论坛', name: 'forum_articles_and_comments' },
{ display_name: 'SEO', name: 'search_engine_optimization' }
]
promoted_actions_category_data.each do |category|
object = PromotedActionsCategory.where(category).first_or_create
puts "find or create promoted actions category id: #{object.id}, display_name: #{object.display_name}, name: #{object.name}"
end
##generate direct_clients_rakeback_data
direct_clients_rakeback_data = {
baccarat: 0.6, sport: 0.6, e_sport: 0.6, slot: 0.6, lottery: 0.6, chess_game: 0, fishing_game: 0.6, sabong: 0, genre: 0
}
object = PromotionCode.find_or_create_by(name: 'direct_clients',
promoted_actions_category: PromotedActionsCategory.find_by_name(:direct_client),
financial_tag_genre: :fixed,
financial_tag: FinancialTag.find_by_remark(:beginner))
object.rakeback ||= Rakeback.create(direct_clients_rakeback_data)
puts "find or create promotion code id: #{object.id}, name: #{object.name}
find or create rakeback baccarat: #{object.rakeback.baccarat}, sport: #{object.rakeback.sport},
e_sport: #{object.rakeback.e_sport}, slot: #{object.rakeback.slot},
lottery: #{object.rakeback.lottery}, chess_game: #{object.rakeback.chess_game},
fishing_game: #{object.rakeback.fishing_game}, sabong: #{object.rakeback.sabong}"
##generate commission_tier_data
commission_tier_data = [
{ name: '1', prev: '', net_profit: 0, company_bet_result: 0, valid_client_count: 5, minimum_withdraw: 300.00,
commission_rate: 30.00, fee_rate: 0.00, baccarat_rate: 12.00, sport_rate: 15.00, e_sport_rate: 15.00,
slot_rate: 15.00, lottery_rate: 12.00, chess_game_rate: 10.00, fishing_game_rate: 15.00, sabong_rate: 0 },
{ name: '2', prev: '1', net_profit: 50000, company_bet_result: 50000, valid_client_count: 5, minimum_withdraw: 300.00,
commission_rate: 35.00, fee_rate: 0.00, baccarat_rate: 12.00, sport_rate: 15.00, e_sport_rate: 15.00,
slot_rate: 15.00, lottery_rate: 12.00, chess_game_rate: 10.00, fishing_game_rate: 15.00, sabong_rate: 0 },
{ name: '3', prev: '2', net_profit: 100000, company_bet_result: 100000, valid_client_count: 5, minimum_withdraw: 300.00,
commission_rate: 40.00, fee_rate: 0.00, baccarat_rate: 10.00, sport_rate: 15.00, e_sport_rate: 15.00,
slot_rate: 14.00, lottery_rate: 10.00, chess_game_rate: 10.00, fishing_game_rate: 14.00, sabong_rate: 0 },
{ name: '4', prev: '3', net_profit: 500000, company_bet_result: 500000, valid_client_count: 5, minimum_withdraw: 300.00,
commission_rate: 45.00, fee_rate: 0.00, baccarat_rate: 9.00, sport_rate: 15.00, e_sport_rate: 15.00,
slot_rate: 13.00, lottery_rate: 9.00, chess_game_rate: 10.00, fishing_game_rate: 13.00, sabong_rate: 0 }
]
commission_tier_data.each do |data|
object = CommissionTier.where(data).first_or_create
puts "find or create commission tier id: #{object.id}, name: #{object.name}, prev: #{object.prev}, net_profit: #{object.net_profit},
valid_client_count: #{object.valid_client_count}, minimum_withdraw: #{object.minimum_withdraw},
commission_rate: #{object.commission_rate}, fee_rate: #{object.fee_rate},
baccarat_rate: #{object.baccarat_rate}, sport_rate: #{object.sport_rate},
e_sport_rate: #{object.e_sport_rate}, slot_rate: #{object.slot_rate},
lottery_rate: #{object.lottery_rate}, chess_game_rate: #{object.chess_game_rate},
fishing_game_rate: #{object.fishing_game_rate}, sabong_rate: #{object.sabong_rate}"
end
##generate setting_data
setting_data = [
{ title: :android_version, code: :android_version, value: '1.0.0' },
{ title: :android_version_code, code: :android_version_code, value: '1' },
{ title: :android_download_link, code: :android_download_link, value: 'http://hjc1.30001a.info' },
{ title: :ios_version, code: :ios_version, value: '1.0.0' },
{ title: :ios_version_code, code: :ios_version_code, value: '1' },
{ title: :ios_download_link, code: :ios_download_link, value: 'http://hjc1.30001a.info' },
{ title: :app_priority_host, code: :app_priority_host, value: 'https://abc.gcgc55.com' },
{ title: :customer_service_link, code: :customer_service_link, value: 'http://h6kf.com' },
{ title: '需二步验证的部门', code: :forced_two_factor_departments, value: 'money, customer_service, risk, operation' },
{ title: '需二步验证的管理员', code: :forced_two_factor_users, value: '' }
]
setting_data.each do |data|
object = Setting.where(data).first_or_create
puts "find or create setting id: #{object.id}, title: #{object.title}, code: #{object.code}, value: #{object.value}"
end
object = Setting.where(title: 'CDN url', code: 'cdn_url').first_or_create
puts "find or create setting id: #{object.id}, title: #{object.title}, code: #{object.code}"
```
## whitelist
```ruby
ips = ['192.168.228.1', '103.43.215.138']
ips.each do |ip|
wl = Whitelist.new(ip: ip, status: :active, genre: :client)
wl.save
end
ips = ['192.168.228.1', '103.43.215.138']
ips.each do |ip|
wl = Whitelist.new(ip: ip, status: :active, genre: :admin)
wl.save
end
```
## Accounts
```ruby=
## generate admin position
admin_position_data = [
{ code: 'ceo', display_name: 'CEO' },
{ code: 'financial_staff', display_name: '財務組員' },
{ code: 'financial_manager', display_name: '財務主管' },
{ code: 'accounting_staff', display_name: '會計組員' },
{ code: 'accounting_manager', display_name: '會計主管' },
{ code: 'quality_assurance_engineer', display_name: '測試工程師' }, # add IT in translation
{ code: 'designer', display_name: '設計組員' }, # Add IT in translation
{ code: 'design_supervisor', display_name: '設計組長' }, # Add IT in translation
{ code: 'developer', display_name: '技術組員' },
{ code: 'information_technology_supervisor', display_name: '技術組長' },
{ code: 'information_technology_manager', display_name: '技術主管' },
{ code: 'telemarketing_staff', display_name: '電銷組員' },
{ code: 'telemarketing_supervisor', display_name: '電銷組長' },
{ code: 'telemarketing_manager', display_name: '電銷主管' },
{ code: 'customer_service_staff', display_name: '客服組員' },
{ code: 'customer_service_supervisor', display_name: '客服組長' },
{ code: 'customer_service_manager', display_name: '客服主管' },
{ code: 'temporary_permissions', display_name: '閒置人員' },
{ code: 'marketing_staff', display_name: '市場組員' },
{ code: 'marketing_supervisor', display_name: '市場組長' },
{ code: 'marketing_assistant', display_name: '市場助理' },
{ code: 'marketing_manager', display_name: '市場主管' },
{ code: 'technical_operations_staff', display_name: '運維組員' },
{ code: 'technical_operations_supervisor', display_name: '運維組長' },
{ code: 'technical_operations_manager', display_name: '運維主管' },
{ code: 'operations', display_name: '運營組員' },
{ code: 'operations_manager', display_name: '運營主管' },
{ code: 'risk_control_staff', display_name: '風控組員' },
{ code: 'risk_control_manager', display_name: '風控主管' }
]
admin_position_data.each do |position|
object = Admin::Position.where(position).first_or_create
puts "find or create position id: #{object.id}, code: #{object.code}, display_name: #{object.display_name}"
end
##generate admin department
admin_department_data = [
{ code: 'management', display_name: '綜合管理部門' },
{ code: 'money', display_name: '財務部門' },
{ code: 'accountant', display_name: '會計部門' },
{ code: 'developer', display_name: '技術部門' },
{ code: 'customer_service', display_name: '客服部門' },
{ code: 'other', display_name: '臨時部門' },
{ code: 'marketing', display_name: '市場部門' },
{ code: 'server', display_name: '運維部門' },
{ code: 'operation', display_name: '運營部門' },
{ code: 'risk', display_name: '風控部門' }
]
admin_department_data.each do |department|
object = Admin::Department.where(department).first_or_create
puts "find or create department id: #{object.id}, code: #{object.code}, display_name: #{object.display_name}"
end
```