@@ -12,15 +12,16 @@ import (
1212
1313func GetAllTeams () ([]models.GetTeam , error ) {
1414 var teams []models.GetTeam
15+ teamMap := make (map [string ]* models.GetTeam )
1516
16- query := `SELECT teams.name,teams.code, teams.leader_id, teams.round ,
17- users.first_name, users.last_name, users.id, users.reg_no,
18- ideas.title, ideas.description, ideas.track, ideas.github, ideas.figma, ideas.others ,
19- projects.name, projects.description, projects.github, projects.figma, projects.track, projects.others
20- FROM teams
21- INNER JOIN users ON users.team_id = teams.id
22- LEFT JOIN projects ON teams.id = projects.teamid
23- LEFT JOIN ideas ON teams.id = ideas.teamid`
17+ query := `SELECT teams.name, teams.code, teams.leader_id, teams.round,
18+ users.first_name, users.last_name, users.id, users.reg_no,
19+ ideas.title, ideas.description, ideas.track, ideas.github, ideas.figma, ideas.others,
20+ projects.name, projects.description, projects.github, projects.figma, projects.track, projects.others
21+ FROM teams
22+ INNER JOIN users ON users.team_id = teams.id
23+ LEFT JOIN projects ON teams.id = projects.teamid
24+ LEFT JOIN ideas ON teams.id = ideas.teamid`
2425
2526 rows , err := database .DB .Query (query )
2627 if err != nil {
@@ -35,6 +36,7 @@ func GetAllTeams() ([]models.GetTeam, error) {
3536
3637 for rows .Next () {
3738 var team models.GetTeam
39+
3840 values := make ([]sql.NullString , len (columns ))
3941 columnPointers := make ([]interface {}, len (columns ))
4042
@@ -45,11 +47,30 @@ func GetAllTeams() ([]models.GetTeam, error) {
4547 if err := rows .Scan (columnPointers ... ); err != nil {
4648 return teams , err
4749 }
50+ round , err := strconv .Atoi (values [3 ].String )
51+ if err != nil {
52+ return teams , err
53+ }
54+ teamCode := values [1 ].String
55+ if _ , ok := teamMap [teamCode ]; ! ok {
56+ team = models.GetTeam {
57+ TeamName : values [0 ].String ,
58+ TeamCode : teamCode ,
59+ LeaderID : uuid .MustParse (values [2 ].String ),
60+ Round : round ,
61+ Ideas : models.Idea {},
62+ Project : models.Project {},
63+ Users : []models.GetUser {},
64+ }
65+ teamMap [teamCode ] = & team
66+ }
4867
49- team .TeamName = values [0 ].String
50- team .TeamCode = values [1 ].String
51- team .LeaderID = uuid .MustParse (values [2 ].String )
52- team .Round , _ = strconv .Atoi (values [3 ].String )
68+ user := models.GetUser {
69+ FullName : values [4 ].String + " " + values [5 ].String ,
70+ RegNo : values [7 ].String ,
71+ ID : uuid .MustParse (values [6 ].String ),
72+ IsLeader : values [7 ].String == values [2 ].String ,
73+ }
5374
5475 if values [8 ].Valid {
5576 team .Ideas = models.Idea {
@@ -72,23 +93,11 @@ func GetAllTeams() ([]models.GetTeam, error) {
7293 Others : values [19 ].String ,
7394 }
7495 }
96+ teamMap [teamCode ].Users = append (teamMap [teamCode ].Users , user )
97+ }
7598
76- var isLeader bool
77- if values [7 ].Valid {
78- isLeader = values [7 ].String != ""
79- } else {
80- isLeader = false
81- }
82-
83- user := models.GetUser {
84- FullName : values [4 ].String ,
85- RegNo : values [5 ].String ,
86- ID : uuid .MustParse (values [6 ].String ),
87- IsLeader : isLeader ,
88- }
89- team .Users = append (team .Users , user )
90-
91- teams = append (teams , team )
99+ for _ , team := range teamMap {
100+ teams = append (teams , * team )
92101 }
93102
94103 return teams , nil
@@ -172,3 +181,32 @@ func FindTeamByCode(code string) (models.Team, error) {
172181
173182 return team , err
174183}
184+
185+ func GetAllFresherTeam () ([]models.GetTeam , error ) {
186+ var teamFresher []models.GetTeam
187+ teams , err := GetAllTeams ()
188+ if err != nil {
189+ return teams , err
190+ }
191+ for _ , team := range teams {
192+ if IsFresher (team ) {
193+ teamFresher = append (teamFresher , team )
194+ }
195+ }
196+ return teamFresher , nil
197+
198+ }
199+
200+ func GetAllFemaleTeams () ([]models.GetTeam , error ) {
201+ var teamFemale []models.GetTeam
202+ teams , err := GetAllTeams ()
203+ if err != nil {
204+ return teams , err
205+ }
206+ for _ , team := range teams {
207+ if IsFemale (team ) {
208+ teamFemale = append (teamFemale , team )
209+ }
210+ }
211+ return teamFemale , nil
212+ }
0 commit comments