2016-03-06 17:59:33 +00:00
package main
import (
"encoding/json"
2017-12-21 21:18:18 +00:00
"fmt"
2016-03-06 17:59:33 +00:00
"io/ioutil"
"log"
"math/rand"
"os"
"path"
"srs.epita.fr/fic-server/libfic"
)
2017-12-21 21:18:18 +00:00
type uTeamRegistration struct {
TeamName string
Members [ ] fic . Member
}
func treatRegistration ( pathname string , initial_name string ) {
var nTeam uTeamRegistration
2016-03-06 17:59:33 +00:00
if cnt_raw , err := ioutil . ReadFile ( pathname ) ; err != nil {
log . Println ( "[ERR]" , err )
2017-12-21 21:18:18 +00:00
} else if err := json . Unmarshal ( cnt_raw , & nTeam ) ; err != nil {
2016-03-06 17:59:33 +00:00
log . Println ( "[ERR]" , err )
2017-12-21 21:18:18 +00:00
} else if validTeamName ( nTeam . TeamName ) {
if team , err := fic . RegisterTeam ( initial_name , nTeam . TeamName , uint32 ( rand . Int31n ( 16581376 ) ) ) ; err != nil {
log . Printf ( "[ERR] Unable to register new team %s: %s\n" , nTeam . TeamName , err )
2016-03-06 17:59:33 +00:00
} else {
2017-12-21 21:18:18 +00:00
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 <strong>%s</strong> qui vient de nous rejoindre !" , team . Name ) , "alert-info" ) ; err != nil {
log . Println ( "[WRN] Unable to create event:" , err )
}
2016-03-06 17:59:33 +00:00
os . MkdirAll ( path . Join ( SubmissionDir , team . InitialName ) , 0777 )
os . MkdirAll ( path . Join ( TeamsDir , team . InitialName ) , 0777 )
2017-12-21 21:18:18 +00:00
go func ( ) {
if err := genTeamMyFile ( team ) ; err != nil {
log . Println ( "Team generation error: " , err )
}
if err := genTeamsFile ( ) ; err != nil {
log . Println ( "teams.json generation error: " , err )
}
} ( )
2016-03-06 17:59:33 +00:00
}
}
}