Don't remove attendees used in suggestions
This commit is contained in:
parent
298b3b7cea
commit
cfd25d986c
21
attendees.go
21
attendees.go
@ -60,6 +60,12 @@ func (aeu AttendeeExistsError) Error() string {
|
|||||||
return "Attendee exists"
|
return "Attendee exists"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type AttendeeInUseError struct{}
|
||||||
|
|
||||||
|
func (aeu AttendeeInUseError) Error() string {
|
||||||
|
return "Attendee in use (by suggestion)"
|
||||||
|
}
|
||||||
|
|
||||||
func GetAttendees(userid int64, date time.Time) (*[]*Attendee, error) {
|
func GetAttendees(userid int64, date time.Time) (*[]*Attendee, error) {
|
||||||
var attendees []*Attendee
|
var attendees []*Attendee
|
||||||
|
|
||||||
@ -140,7 +146,16 @@ func DeleteAttendee(a *Attendee) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO ensure attendee isn't used in any suggestions
|
// Ensure attendee isn't used in any suggestions
|
||||||
|
suggestions, err := GetAttendeesSuggestions(transaction, a.UserId, a.Date, a.AttendeeId)
|
||||||
|
if err != nil {
|
||||||
|
transaction.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(*suggestions) > 0 {
|
||||||
|
transaction.Rollback()
|
||||||
|
return AttendeeInUseError{}
|
||||||
|
}
|
||||||
|
|
||||||
count, err := transaction.Delete(a)
|
count, err := transaction.Delete(a)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -237,8 +252,12 @@ func AttendeeHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
err = DeleteAttendee(attendee)
|
err = DeleteAttendee(attendee)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if _, ok := err.(AttendeeInUseError); ok {
|
||||||
|
WriteError(w, 7 /*Attendee In Use*/)
|
||||||
|
} else {
|
||||||
WriteError(w, 999 /*Internal Error*/)
|
WriteError(w, 999 /*Internal Error*/)
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ var error_codes = map[int]string{
|
|||||||
4: "User Exists",
|
4: "User Exists",
|
||||||
5: "Attendee Exists",
|
5: "Attendee Exists",
|
||||||
6: "Suggestion Exists",
|
6: "Suggestion Exists",
|
||||||
|
7: "Attendee In Use",
|
||||||
// 5: "Connection Failed", //client-side error
|
// 5: "Connection Failed", //client-side error
|
||||||
999: "Internal Error",
|
999: "Internal Error",
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"gopkg.in/gorp.v1"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
@ -61,6 +62,16 @@ func (sl *PopularSuggestionList) Write(w http.ResponseWriter) error {
|
|||||||
return enc.Encode(sl)
|
return enc.Encode(sl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAttendeesSuggestions(transaction *gorp.Transaction, userid int64, date time.Time, attendeeid int64) (*[]*Suggestion, error) {
|
||||||
|
var suggestions []*Suggestion
|
||||||
|
|
||||||
|
_, err := transaction.Select(&suggestions, "SELECT * from suggestions WHERE UserId=? AND Date=? AND AttendeeID=?", userid, date, attendeeid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &suggestions, nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetSuggestions(userid int64, date time.Time) (*[]*Suggestion, error) {
|
func GetSuggestions(userid int64, date time.Time) (*[]*Suggestion, error) {
|
||||||
var suggestions []*Suggestion
|
var suggestions []*Suggestion
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user