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
}
2018-01-21 13:07:44 +00:00
func treatRegistration ( pathname string , team_id string ) {
2017-12-21 21:18:18 +00:00
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 ) {
2018-01-21 13:07:44 +00:00
if team , err := fic . CreateTeam ( nTeam . TeamName , uint32 ( rand . Int31n ( 16581376 ) ) ) ; err != nil {
2017-12-21 21:18:18 +00:00
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 )
}
2018-01-21 13:07:44 +00:00
teamDirPath := path . Join ( TeamsDir , fmt . Sprintf ( "%d" , team . Id ) )
if err := os . MkdirAll ( teamDirPath , 0777 ) ; err != nil {
log . Println ( "[ERR]" , err )
}
if err := os . Symlink ( teamDirPath , path . Join ( TeamsDir , fmt . Sprintf ( "_AUTH_ID_%s" , team_id ) ) ) ; err != nil {
log . Println ( "[ERR]" , err )
}
2016-03-06 17:59:33 +00:00
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
}
}
}