bug fixes for go 1.19 update

This commit is contained in:
SowinskiBraeden committed 2023-01-07 15:10:55 -08:00
1 parent c3aaec9798
commit 0d29e1f382
7 files changed
+105 -93

No files matched your search

+39 -27
View File
@@ -231,18 +231,20 @@ func Enroll(c *fiber.Ctx) error {
}) })
} }
student.PersonalData.FirstName = data["firstname"].(string) student.Personal.FirstName = data["firstname"].(string)
student.PersonalData.MiddleName = data["middlename"].(string) if middle, ok := data["middlename"]; ok {
student.PersonalData.LastName = data["lastname"].(string) student.Personal.MiddleName = middle.(string)
student.PersonalData.Age = data["age"].(float64) }
student.Personal.LastName = data["lastname"].(string)
student.Personal.Age = data["age"].(float64)
student.SchoolData.GradeLevel = data["gradelevel"].(float64) student.SchoolData.GradeLevel = data["gradelevel"].(float64)
student.PersonalData.DOB = data["dob"].(string) student.Personal.DOB = data["dob"].(string)
student.PersonalData.Email = data["email"].(string) student.Personal.Email = data["email"].(string)
student.PersonalData.Province = data["province"].(string) student.Personal.Province = data["province"].(string)
student.PersonalData.City = data["city"].(string) student.Personal.City = data["city"].(string)
student.PersonalData.Address = data["address"].(string) student.Personal.Address = data["address"].(string)
student.PersonalData.Postal = data["postal"].(string) student.Personal.Postal = data["postal"].(string)
student.PersonalData.Contacts = []string{} student.Personal.Contacts = []string{}
student.SchoolData.YOG = ((12 - int(student.SchoolData.GradeLevel)) + time.Now().Year()) + 1 student.SchoolData.YOG = ((12 - int(student.SchoolData.GradeLevel)) + time.Now().Year()) + 1
var photo models.Photo var photo models.Photo
@@ -287,10 +289,10 @@ func Enroll(c *fiber.Ctx) error {
// Send student personal email student ID // Send student personal email student ID
subject := "Account Registered" subject := "Account Registered"
receiver := student.PersonalData.Email receiver := student.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/accountRegisreded.html", map[string]string{"username": student.PersonalData.FirstName, "id": sid, "userType": "student"}); !sent { if sent := r.Send("./templates/accountRegisreded.html", map[string]string{"username": student.Personal.FirstName, "id": sid, "userType": "student"}); !sent {
cancel() cancel()
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
@@ -396,14 +398,24 @@ func RegisterTeacher(c *fiber.Ctx) error {
}) })
} }
teacher.PersonalData.FirstName = data["firstname"].(string) teacher.Personal.FirstName = data["firstname"].(string)
teacher.PersonalData.MiddleName = data["middlename"].(string) if middle, ok := data["middlename"]; ok {
teacher.PersonalData.LastName = data["lastname"].(string) teacher.Personal.MiddleName = middle.(string)
teacher.PersonalData.Email = data["email"].(string) }
teacher.PersonalData.Province = data["province"].(string) teacher.Personal.LastName = data["lastname"].(string)
teacher.PersonalData.City = data["city"].(string) teacher.Personal.Email = data["email"].(string)
teacher.PersonalData.Postal = data["postal"].(string) if province, ok := data["province"]; ok {
teacher.PersonalData.DOB = data["dob"].(string) teacher.Personal.Province = province.(string)
}
if city, ok := data["city"]; ok {
teacher.Personal.City = city.(string)
}
if postal, ok := data["postal"]; ok {
teacher.Personal.Postal = postal.(string)
}
if dob, ok := data["dob"]; ok {
teacher.Personal.DOB = dob.(string)
}
var photo models.Photo var photo models.Photo
photo.Name = uuid.New().String() photo.Name = uuid.New().String()
@@ -447,10 +459,10 @@ func RegisterTeacher(c *fiber.Ctx) error {
// Send teacher personal email student ID // Send teacher personal email student ID
subject := "Account Registered" subject := "Account Registered"
receiver := teacher.PersonalData.Email receiver := teacher.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/accountRegisreded.html", map[string]string{"username": teacher.PersonalData.FirstName, "id": tid, "userType": "teacher"}); !sent { if sent := r.Send("./templates/accountRegisreded.html", map[string]string{"username": teacher.Personal.FirstName, "id": tid, "userType": "teacher"}); !sent {
cancel() cancel()
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
@@ -672,10 +684,10 @@ func StudentLogin(c *fiber.Ctx) error {
if !student.AccountData.Alerted { if !student.AccountData.Alerted {
// Send student email warning of disabled account // Send student email warning of disabled account
subject := "Account Disabled" subject := "Account Disabled"
receiver := student.PersonalData.Email receiver := student.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/accountDisabled.html", map[string]string{"username": student.PersonalData.FirstName}); !sent { if sent := r.Send("./templates/accountDisabled.html", map[string]string{"username": student.Personal.FirstName}); !sent {
cancel() cancel()
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
@@ -981,8 +993,8 @@ func Student(c *fiber.Ctx) error {
var contacts []models.Contact var contacts []models.Contact
var contact models.Contact var contact models.Contact
for i := range student.PersonalData.Contacts { for i := range student.Personal.Contacts {
findErr := ContactCollection.FindOne(context.TODO(), bson.M{"_id": student.PersonalData.Contacts[i]}).Decode(&contact) findErr := ContactCollection.FindOne(context.TODO(), bson.M{"_id": student.Personal.Contacts[i]}).Decode(&contact)
if findErr != nil { if findErr != nil {
responseData["error"] = "Error! There was an error finding some contacts" responseData["error"] = "Error! There was an error finding some contacts"
} }
+25 -25
View File
@@ -63,17 +63,17 @@ func UpdateStudentName(c *fiber.Ctx) error {
if updateMiddle { if updateMiddle {
update = bson.M{ update = bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.firstname": data["firstname"], "Personal.firstname": data["firstname"],
"personaldata.middlename": data["middlename"], "Personal.middlename": data["middlename"],
"personaldata.lastname": data["lastname"], "Personal.lastname": data["lastname"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
} else { } else {
update = bson.M{ update = bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.firstname": data["firstname"], "Personal.firstname": data["firstname"],
"personaldata.lastname": data["lastname"], "Personal.lastname": data["lastname"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
@@ -162,15 +162,15 @@ func UpdateStudentGradeLevel(c *fiber.Ctx) error {
} }
/* /*
Far later on this function is going to be completely automated. Far later on this function is going to be completely automated.
Instead of an admin sending a request to update the homeroom of Instead of an admin sending a request to update the homeroom of
a student or teacher, the system will take the room number of a student or teacher, the system will take the room number of
the teacher's or student's Block 2 class from their schedule. the teacher's or student's Block 2 class from their schedule.
Though this function would remain for students only, for example Though this function would remain for students only, for example
a student requests a course change, if its their block 2 the a student requests a course change, if its their block 2 the
admin would have to alter their homeroom to be the new class admin would have to alter their homeroom to be the new class
number. number.
*/ */
func UpdateStudentHomeroom(c *fiber.Ctx) error { func UpdateStudentHomeroom(c *fiber.Ctx) error {
var data map[string]string var data map[string]string
@@ -332,10 +332,10 @@ func UpdateStudentPassword(c *fiber.Ctx) error {
// Alert email the password has changed // Alert email the password has changed
subject := "Password Changed" subject := "Password Changed"
receiver := student.PersonalData.Email receiver := student.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/selfPasswordChanged.html", map[string]string{"username": student.PersonalData.FirstName}); !sent { if sent := r.Send("./templates/selfPasswordChanged.html", map[string]string{"username": student.Personal.FirstName}); !sent {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
"message": "failed to send email to student", "message": "failed to send email to student",
@@ -381,7 +381,7 @@ func ResetStudentPassword(c *fiber.Ctx) error {
}) })
} }
if student.PersonalData.Email != data["email"] { if student.Personal.Email != data["email"] {
cancel() cancel()
return c.Status(fiber.StatusOK).JSON(fiber.Map{ return c.Status(fiber.StatusOK).JSON(fiber.Map{
"success": false, "success": false,
@@ -416,10 +416,10 @@ func ResetStudentPassword(c *fiber.Ctx) error {
// Send student personal email temp password // Send student personal email temp password
subject := "Password Changed" subject := "Password Changed"
receiver := student.PersonalData.Email receiver := student.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/passwordChanged.html", map[string]string{"username": student.PersonalData.FirstName, "password": tempPass}); !sent { if sent := r.Send("./templates/passwordChanged.html", map[string]string{"username": student.Personal.FirstName, "password": tempPass}); !sent {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
"message": "Could not send password to students email", "message": "Could not send password to students email",
@@ -538,10 +538,10 @@ func UpdateStudentAddress(c *fiber.Ctx) error {
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
update := bson.M{ update := bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.address": data["address"], "Personal.address": data["address"],
"personaldata.city": data["city"], "Personal.city": data["city"],
"personaldata.province": data["province"], "Personal.province": data["province"],
"personaldata.postal": data["postal"], "Personal.postal": data["postal"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
@@ -687,7 +687,7 @@ func RemoveStudentContact(c *fiber.Ctx) error {
"updated_at": update_time, "updated_at": update_time,
}, },
"$pull": bson.M{ "$pull": bson.M{
"personaldata.contacts": contact.ID, "Personal.contacts": contact.ID,
}, },
} }
@@ -761,7 +761,7 @@ func AddStudentContact(c *fiber.Ctx) error {
"updated_at": update_time, "updated_at": update_time,
}, },
"$push": bson.M{ "$push": bson.M{
"personaldata.contacts": contact.ID, "Personal.contacts": contact.ID,
}, },
} }
@@ -951,7 +951,7 @@ func UpdateStudentEmail(c *fiber.Ctx) error {
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
update := bson.M{ update := bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.email": data["email"], "Personal.email": data["email"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
+21 -21
View File
@@ -17,15 +17,15 @@ import (
) )
/* /*
Far later on this function is going to be completely automated. Far later on this function is going to be completely automated.
Instead of an admin sending a request to update the homeroom of Instead of an admin sending a request to update the homeroom of
a student or teacher, the system will take the room number of a student or teacher, the system will take the room number of
the teacher's or student's Block 2 class from their schedule. the teacher's or student's Block 2 class from their schedule.
Though this function would remain for students only, for example Though this function would remain for students only, for example
a student requests a course change, if its their block 2 the a student requests a course change, if its their block 2 the
admin would have to alter their homeroom to be the new class admin would have to alter their homeroom to be the new class
number. number.
*/ */
func UpdateTeacherHomeroom(c *fiber.Ctx) error { func UpdateTeacherHomeroom(c *fiber.Ctx) error {
var data map[string]string var data map[string]string
@@ -186,10 +186,10 @@ func UpdateTeacherPassword(c *fiber.Ctx) error {
defer cancel() defer cancel()
subject := "Password Changed" subject := "Password Changed"
receiver := teacher.PersonalData.Email receiver := teacher.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/selfPasswordChanged.html", map[string]string{"username": teacher.PersonalData.FirstName}); !sent { if sent := r.Send("./templates/selfPasswordChanged.html", map[string]string{"username": teacher.Personal.FirstName}); !sent {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
"message": "Could not send password to teachers email", "message": "Could not send password to teachers email",
@@ -234,7 +234,7 @@ func ResetTeacherPassword(c *fiber.Ctx) error {
}) })
} }
if teacher.PersonalData.Email != data["email"] { if teacher.Personal.Email != data["email"] {
cancel() cancel()
return c.Status(fiber.StatusOK).JSON(fiber.Map{ return c.Status(fiber.StatusOK).JSON(fiber.Map{
"success": false, "success": false,
@@ -269,10 +269,10 @@ func ResetTeacherPassword(c *fiber.Ctx) error {
// Send teacher personal email temp password // Send teacher personal email temp password
subject := "Password Changed" subject := "Password Changed"
receiver := teacher.PersonalData.Email receiver := teacher.Personal.Email
r := NewRequest([]string{receiver}, subject) r := NewRequest([]string{receiver}, subject)
if sent := r.Send("./templates/passwordChanged.html", map[string]string{"username": teacher.PersonalData.FirstName, "password": tempPass}); !sent { if sent := r.Send("./templates/passwordChanged.html", map[string]string{"username": teacher.Personal.FirstName, "password": tempPass}); !sent {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{ return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"success": false, "success": false,
"message": "Could not send password to teachers email", "message": "Could not send password to teachers email",
@@ -320,10 +320,10 @@ func UpdateTeacherAddress(c *fiber.Ctx) error {
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
update := bson.M{ update := bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.address": data["address"], "Personal.address": data["address"],
"personaldata.city": data["city"], "Personal.city": data["city"],
"personaldata.province": data["province"], "Personal.province": data["province"],
"personaldata.postal": data["postal"], "Personal.postal": data["postal"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
@@ -514,7 +514,7 @@ func UpdateTeacherEmail(c *fiber.Ctx) error {
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
update := bson.M{ update := bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.email": data["email"], "Personal.email": data["email"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
@@ -592,9 +592,9 @@ func UpdateTeacherName(c *fiber.Ctx) error {
update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339)) update_time, _ := time.Parse(time.RFC3339, time.Now().Format(time.RFC3339))
update := bson.M{ update := bson.M{
"$set": bson.M{ "$set": bson.M{
"personaldata.firstname": data["firstname"], "Personal.firstname": data["firstname"],
"personaldata.middlename": middlename, "Personal.middlename": middlename,
"personaldata.lastname": data["lastname"], "Personal.lastname": data["lastname"],
"updated_at": update_time, "updated_at": update_time,
}, },
} }
+1 -1
View File
@@ -1,6 +1,6 @@
module github.com/SowinskiBraeden/school-management-api module github.com/SowinskiBraeden/school-management-api
go 1.18 go 1.19
require ( require (
github.com/gofiber/fiber/v2 v2.36.0 github.com/gofiber/fiber/v2 v2.36.0
+1 -1
View File
@@ -11,7 +11,7 @@ import (
"github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/cors"
) )
const version string = "\nv1.1.0-Beta" const version string = "\nv1.1.2-Beta"
func main() { func main() {
fmt.Println(version) fmt.Println(version)
+9 -9
View File
@@ -23,7 +23,7 @@ var StudentCollection *mongo.Collection = database.OpenCollection(database.Clien
type Student struct { type Student struct {
ID primitive.ObjectID `bson:"_id"` ID primitive.ObjectID `bson:"_id"`
PersonalData struct { Personal struct {
FirstName string `json:"firstname" validate:"required"` FirstName string `json:"firstname" validate:"required"`
MiddleName string `json:"middlename"` MiddleName string `json:"middlename"`
LastName string `json:"lastname" validate:"required"` LastName string `json:"lastname" validate:"required"`
@@ -35,7 +35,7 @@ type Student struct {
Postal string `json:"postal"` Postal string `json:"postal"`
DOB string `json:"dob" validate:"required"` DOB string `json:"dob" validate:"required"`
Contacts []string `json:"contacts"` // List of contact ID's rather than contact object Contacts []string `json:"contacts"` // List of contact ID's rather than contact object
} `json:"personaldata"` } `json:"Personal"`
SchoolData struct { SchoolData struct {
GradeLevel float64 `json:"gradelevel" validate:"required"` GradeLevel float64 `json:"gradelevel" validate:"required"`
SID string `json:"sid"` // Student ID SID string `json:"sid"` // Student ID
@@ -81,15 +81,15 @@ func (s *Student) EmailExists(email string) bool {
func (s *Student) GenerateSchoolEmail(offset int, lastEmail string) string { func (s *Student) GenerateSchoolEmail(offset int, lastEmail string) string {
addr := os.Getenv("SYSTEM_EMAIL_ADDRESS") addr := os.Getenv("SYSTEM_EMAIL_ADDRESS")
var email string = strings.ToLower(string(s.PersonalData.FirstName[0])) + "." + strings.ToLower(s.PersonalData.LastName) + addr var email string = strings.ToLower(string(s.Personal.FirstName[0])) + "." + strings.ToLower(s.Personal.LastName) + addr
if offset > 0 && offset < len([]rune(s.PersonalData.FirstName))-1 { if offset > 0 && offset < len([]rune(s.Personal.FirstName))-1 {
email = lastEmail[:offset] + strings.ToLower(string(s.PersonalData.FirstName[offset])) + lastEmail[offset:] + addr email = lastEmail[:offset] + strings.ToLower(string(s.Personal.FirstName[offset])) + lastEmail[offset:] + addr
} }
if offset == len([]rune(s.PersonalData.FirstName))-1 { if offset == len([]rune(s.Personal.FirstName))-1 {
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + addr email = strings.ToLower(s.Personal.FirstName) + "." + strings.ToLower(s.Personal.LastName) + addr
} }
if offset > len([]rune(s.PersonalData.FirstName))-1 { if offset > len([]rune(s.Personal.FirstName))-1 {
email = strings.ToLower(s.PersonalData.FirstName) + "." + strings.ToLower(s.PersonalData.LastName) + strconv.Itoa(offset-len([]rune(s.PersonalData.FirstName))) + addr email = strings.ToLower(s.Personal.FirstName) + "." + strings.ToLower(s.Personal.LastName) + strconv.Itoa(offset-len([]rune(s.Personal.FirstName))) + addr
} }
return email return email
} }
+9 -9
View File
@@ -28,7 +28,7 @@ var TeacherCollection *mongo.Collection = database.OpenCollection(database.Clien
type Teacher struct { type Teacher struct {
ID primitive.ObjectID `bson:"_id"` ID primitive.ObjectID `bson:"_id"`
PersonalData struct { Personal struct {
FirstName string `json:"firstname" validate:"required"` FirstName string `json:"firstname" validate:"required"`
MiddleName string `json:"middlename"` MiddleName string `json:"middlename"`
LastName string `json:"lastname" validate:"required"` LastName string `json:"lastname" validate:"required"`
@@ -38,7 +38,7 @@ type Teacher struct {
Province string `json:"province"` Province string `json:"province"`
Postal string `json:"postal"` Postal string `json:"postal"`
DOB string `json:"dob" validate:"required"` DOB string `json:"dob" validate:"required"`
} `json:"personaldata"` } `json:"Personal"`
SchoolData struct { SchoolData struct {
TID string `json:"tid"` // Teacher ID TID string `json:"tid"` // Teacher ID
Homeroom string `json:"homeroom"` Homeroom string `json:"homeroom"`
@@ -79,15 +79,15 @@ func (t *Teacher) EmailExists(email string) bool {
func (t *Teacher) GenerateSchoolEmail(offset int, lastEmail string) string { func (t *Teacher) GenerateSchoolEmail(offset int, lastEmail string) string {
addr := os.Getenv("SYSTEM_EMAIL_ADDRESS") addr := os.Getenv("SYSTEM_EMAIL_ADDRESS")
var email string = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(string(t.PersonalData.FirstName[0])) + addr var email string = strings.ToLower(t.Personal.LastName) + "_" + strings.ToLower(string(t.Personal.FirstName[0])) + addr
if offset > 0 && offset < len([]rune(t.PersonalData.FirstName))-1 { if offset > 0 && offset < len([]rune(t.Personal.FirstName))-1 {
email = lastEmail[:strings.Index(lastEmail, "_")+offset+1] + strings.ToLower(string(t.PersonalData.FirstName[offset])) + addr email = lastEmail[:strings.Index(lastEmail, "_")+offset+1] + strings.ToLower(string(t.Personal.FirstName[offset])) + addr
} }
if offset == len([]rune(t.PersonalData.FirstName))-1 { if offset == len([]rune(t.Personal.FirstName))-1 {
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + addr email = strings.ToLower(t.Personal.LastName) + "_" + strings.ToLower(t.Personal.FirstName) + addr
} }
if offset > len([]rune(t.PersonalData.FirstName))-1 { if offset > len([]rune(t.Personal.FirstName))-1 {
email = strings.ToLower(t.PersonalData.LastName) + "_" + strings.ToLower(t.PersonalData.FirstName) + strconv.Itoa(offset-len([]rune(t.PersonalData.FirstName))) + addr email = strings.ToLower(t.Personal.LastName) + "_" + strings.ToLower(t.Personal.FirstName) + strconv.Itoa(offset-len([]rune(t.Personal.FirstName))) + addr
} }
return email return email
} }