func Login(w http.ResponseWriter, r *http.Request, userId string, userType models.UserType) interface{} { username := r.PostFormValue("username") password := r.PostFormValue("password") var result = map[string]interface{}{"state": "SUCCESS"} var ul = buslogic.UserLogic{} user, err := ul.Login(username, password) if err != nil { ErrorHandler(w, r, err) return nil } http.SetCookie(w, &http.Cookie{ Name: "user_id", Value: fmt.Sprintf("%x", string(user.Id)), Path: "/", Expires: time.Now().Local().AddDate(1, 0, 0), MaxAge: 365 * 24 * 60 * 60, HttpOnly: true, }) http.SetCookie(w, &http.Cookie{ Name: "username", Value: user.Username, Path: "/", Expires: time.Now().Local().AddDate(1, 0, 0), MaxAge: 365 * 24 * 60 * 60, HttpOnly: true, }) http.SetCookie(w, &http.Cookie{ Name: "user_type", Value: fmt.Sprintf("%d", user.UserType), Path: "/", Expires: time.Now().Local().AddDate(1, 0, 0), MaxAge: 365 * 24 * 60 * 60, HttpOnly: true, }) switch user.UserType { case models.ADMIN: result["url"] = "/appointment/admin" case models.TEACHER: result["url"] = "/appointment/teacher" default: result["url"] = "/appointment/entry" } return result }
func ViewReservationsByTeacher(w http.ResponseWriter, r *http.Request, userId string, userType models.UserType) interface{} { var result = map[string]interface{}{"state": "SUCCESS"} var ul = buslogic.UserLogic{} var rl = buslogic.ReservationLogic{} teacher, err := ul.GetUserById(userId) if err != nil { ErrorHandler(w, r, err) return nil } var teacherJson = make(map[string]interface{}) teacherJson["teacher_fullname"] = teacher.Fullname teacherJson["teacher_mobile"] = teacher.Mobile result["teacher_info"] = teacherJson reservations, err := rl.GetReservationsByTeacher(userId, userType) if err != nil { ErrorHandler(w, r, err) return nil } var array = make([]interface{}, 0) for _, res := range reservations { resJson := make(map[string]interface{}) resJson["reservation_id"] = res.Id resJson["start_time"] = res.StartTime.In(utils.Location).Format(utils.TIME_PATTERN) resJson["end_time"] = res.EndTime.In(utils.Location).Format(utils.TIME_PATTERN) resJson["teacher_fullname"] = res.TeacherFullname resJson["teacher_mobile"] = res.TeacherMobile if res.Status == models.AVAILABLE { resJson["status"] = models.AVAILABLE.String() } else if res.Status == models.RESERVATED && res.StartTime.Before(time.Now().In(utils.Location)) { resJson["status"] = models.FEEDBACK.String() } else { resJson["status"] = models.RESERVATED.String() } array = append(array, resJson) } result["reservations"] = array return result }