package main import ( "encoding/json" "fmt" "io/ioutil" "log" "math/rand" "os" "path" "srs.epita.fr/fic-server/libfic" ) type uTeamRegistration struct { TeamName string Members []fic.Member } func treatRegistration(pathname string, team_id string) { var nTeam uTeamRegistration if cnt_raw, err := ioutil.ReadFile(pathname); err != nil { log.Println("[ERR]", err) } else if err := json.Unmarshal(cnt_raw, &nTeam); err != nil { log.Println("[ERR]", err) } else if validTeamName(nTeam.TeamName) { if team, err := fic.CreateTeam(nTeam.TeamName, uint32(rand.Int31n(16581376))); err != nil { log.Printf("[ERR] Unable to register new team %s: %s\n", nTeam.TeamName, err) } else { for _, m := range nTeam.Members { // Force Id to 0, as it shouldn't have been defined yet m.Id = 0 if err := team.GainMember(m); err != nil { log.Println("[WRN] Unable to add member (", m, ") to team (", team, "): ", err) } } if err := os.Remove(pathname); err != nil { log.Println("[WRN]", err) } if _, err := fic.NewEvent(fmt.Sprintf("Souhaitons bonne chance à l'équipe %s qui vient de nous rejoindre !", team.Name), "alert-info"); err != nil { log.Println("[WRN] Unable to create event:", err) } teamDirPath := fmt.Sprintf("%d", team.Id) // Create team directories into TEAMS if err := os.MkdirAll(path.Join(TeamsDir, teamDirPath), 0777); err != nil { log.Println("[ERR]", err) } if err := os.Symlink(teamDirPath, path.Join(TeamsDir, team_id)); err != nil { log.Println("[ERR]", err) } // Create team directories into submissions if err := os.MkdirAll(path.Join(SubmissionDir, teamDirPath), 0777); err != nil { log.Println("[ERR]", err) } if err := os.Symlink(teamDirPath, path.Join(SubmissionDir, team_id)); err != nil { log.Println("[ERR]", err) } go func() { if err := genTeamMyFile(team); err != nil { log.Println("Team generation error: ", err) } if err := genEventsFile(); err != nil { log.Println("events.json generation error: ", err) } if err := genTeamsFile(); err != nil { log.Println("teams.json generation error: ", err) } }() } } }