| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- class Team < ActiveRecord::Base
- validates :name, presence: true
- validates :description, presence: true
- def join(character, event)
- existing_row = CharTeam.where(char_id: character.id, team_id: id)
- if existing_row.empty?
- CharTeam.create(char_id: character.id, team_id: id, active: true)
- else
- existing_row.update(active: true)
- end
- end
- def leave(char)
- # Find the char_team row, update it to inactive
- ct = CharTeam.where(team_id: id).find_by!(char_id: char.id)
- ct.update(active: false)
- # Check if they have any members left in the team
- # Special Query
- sql = "SELECT * " +
- "FROM char_teams JOIN characters " +
- "ON char_teams.char_id = characters.id " +
- "WHERE characters.user_id = ? " +
- "AND char_teams.team_id = ? " +
- "and char_teams.active = true;"
- # Execute
- sql = ActiveRecord::Base.send(:sanitize_sql_array, [sql, char.user_id, id])
- remaining_chars = ActiveRecord::Base.connection.exec_query(sql)
- # Return if the user should have team role removed
- remaining_chars.count == 0
- rescue ActiveRecord::RecordNotFound => e
- error_embed(e.message)
- end
- def archive(event)
- # Update each character team status to false, then the team
- CharTeam.where(team_id: id).update(active: false)
- update(active: false)
- # Delete Server Role, and move channel
- event.server.role(role_id).delete('Archived Team')
- event.channel.category=(ENV['TEAM_ARCHIVES'])
- end
- end
|