Squad members from DataCache
This commit is contained in:
parent
20b66480ef
commit
2617375f46
@ -21,6 +21,7 @@ type DataCacheInterface interface {
|
|||||||
UpdateChatTitle(chatID int, newTitle string) (*dbmapping.Chat, error)
|
UpdateChatTitle(chatID int, newTitle string) (*dbmapping.Chat, error)
|
||||||
|
|
||||||
AddPlayerToSquad(relation *dbmapping.SquadPlayer) (int, error)
|
AddPlayerToSquad(relation *dbmapping.SquadPlayer) (int, error)
|
||||||
|
GetAllSquadMembers(squadID int) []dbmapping.SquadPlayerFull
|
||||||
GetAllSquadsChats() []dbmapping.Chat
|
GetAllSquadsChats() []dbmapping.Chat
|
||||||
GetAllSquadsWithChats() []dbmapping.SquadChat
|
GetAllSquadsWithChats() []dbmapping.SquadChat
|
||||||
GetAvailableSquadsChatsForUser(userID int) []dbmapping.Chat
|
GetAvailableSquadsChatsForUser(userID int) []dbmapping.Chat
|
||||||
|
@ -122,6 +122,21 @@ func (dc *DataCache) AddPlayerToSquad(relation *dbmapping.SquadPlayer) (int, err
|
|||||||
return insertedRelation.ID, nil
|
return insertedRelation.ID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAllSquadMembers returns all squad members by squad ID
|
||||||
|
func (dc *DataCache) GetAllSquadMembers(squadID int) []dbmapping.SquadPlayerFull {
|
||||||
|
players := []dbmapping.SquadPlayerFull{}
|
||||||
|
dc.squadsMutex.Lock()
|
||||||
|
for i := range dc.squadPlayers {
|
||||||
|
if i == squadID {
|
||||||
|
for j := range dc.squadPlayers[i] {
|
||||||
|
players = append(players, *dc.squadPlayers[i][j])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dc.squadsMutex.Unlock()
|
||||||
|
return players
|
||||||
|
}
|
||||||
|
|
||||||
// GetAllSquadsChats returns all chats belonging to squads
|
// GetAllSquadsChats returns all chats belonging to squads
|
||||||
func (dc *DataCache) GetAllSquadsChats() []dbmapping.Chat {
|
func (dc *DataCache) GetAllSquadsChats() []dbmapping.Chat {
|
||||||
chats := []dbmapping.Chat{}
|
chats := []dbmapping.Chat{}
|
||||||
|
@ -66,10 +66,7 @@ func (s *Squader) SquadInfo(update *tgbotapi.Update, playerRaw *dbmapping.Player
|
|||||||
message += c.Statistics.SquadStatictics(squad.Squad.ID)
|
message += c.Statistics.SquadStatictics(squad.Squad.ID)
|
||||||
message += "\n"
|
message += "\n"
|
||||||
|
|
||||||
squadMembers, ok := s.getPlayersForSquad(squad.Squad.ID)
|
squadMembers := c.DataCache.GetAllSquadMembers(squadID)
|
||||||
if !ok {
|
|
||||||
return "fail"
|
|
||||||
}
|
|
||||||
if len(squadMembers) > 0 {
|
if len(squadMembers) > 0 {
|
||||||
message += "Участники отряда:\n"
|
message += "Участники отряда:\n"
|
||||||
for i := range squadMembers {
|
for i := range squadMembers {
|
||||||
|
@ -12,51 +12,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Squader) getPlayersForSquad(squadID int) ([]dbmapping.SquadPlayerFull, bool) {
|
|
||||||
players := []dbmapping.SquadPlayerFull{}
|
|
||||||
playersRaw := []dbmapping.Player{}
|
|
||||||
squadPlayers := []dbmapping.SquadPlayer{}
|
|
||||||
|
|
||||||
squad, err := c.DataCache.GetSquadByID(squadID)
|
|
||||||
if err != nil {
|
|
||||||
c.Log.Error(err.Error())
|
|
||||||
return players, false
|
|
||||||
}
|
|
||||||
|
|
||||||
err = c.Db.Select(&playersRaw, c.Db.Rebind("SELECT p.* FROM players p, squads_players sp WHERE p.id = sp.player_id AND sp.squad_id=?"), squad.Squad.ID)
|
|
||||||
if err != nil {
|
|
||||||
c.Log.Error(err.Error())
|
|
||||||
return players, false
|
|
||||||
}
|
|
||||||
|
|
||||||
err = c.Db.Select(&squadPlayers, c.Db.Rebind("SELECT * FROM squads_players WHERE squad_id=?"), squad.Squad.ID)
|
|
||||||
if err != nil {
|
|
||||||
c.Log.Error(err.Error())
|
|
||||||
return players, false
|
|
||||||
}
|
|
||||||
|
|
||||||
for i := range playersRaw {
|
|
||||||
for ii := range squadPlayers {
|
|
||||||
if squadPlayers[ii].PlayerID == playersRaw[i].ID {
|
|
||||||
playerWithProfile := dbmapping.SquadPlayerFull{}
|
|
||||||
profile, err := c.DataCache.GetProfileByPlayerID(playersRaw[i].ID)
|
|
||||||
if err != nil {
|
|
||||||
c.Log.Error(err.Error())
|
|
||||||
} else {
|
|
||||||
playerWithProfile.Profile = *profile
|
|
||||||
playerWithProfile.Player = playersRaw[i]
|
|
||||||
playerWithProfile.Squad = *squad
|
|
||||||
playerWithProfile.UserRole = squadPlayers[ii].UserType
|
|
||||||
|
|
||||||
players = append(players, playerWithProfile)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return players, true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Squader) isUserAnyCommander(playerID int) bool {
|
func (s *Squader) isUserAnyCommander(playerID int) bool {
|
||||||
userRoles := c.DataCache.GetUserRolesInSquads(playerID)
|
userRoles := c.DataCache.GetUserRolesInSquads(playerID)
|
||||||
for i := range userRoles {
|
for i := range userRoles {
|
||||||
@ -146,10 +101,6 @@ func (s *Squader) AddUserToSquad(update *tgbotapi.Update, adderRaw *dbmapping.Pl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !c.Users.PlayerBetterThan(adderRaw, "admin") {
|
if !c.Users.PlayerBetterThan(adderRaw, "admin") {
|
||||||
if userType == "commander" {
|
|
||||||
return c.Talkers.AnyMessageUnauthorized(update)
|
|
||||||
}
|
|
||||||
|
|
||||||
userRoles := c.DataCache.GetUserRolesInSquads(adderRaw.ID)
|
userRoles := c.DataCache.GetUserRolesInSquads(adderRaw.ID)
|
||||||
isCommander := false
|
isCommander := false
|
||||||
for i := range userRoles {
|
for i := range userRoles {
|
||||||
|
Reference in New Issue
Block a user