diff --git a/handlers/responsible.go b/handlers/responsible.go index eed8529..9d73e68 100644 --- a/handlers/responsible.go +++ b/handlers/responsible.go @@ -11,21 +11,33 @@ func (dh *DatabaseHandler) AddNewResponsible(responsibles ...models.Responsible) return errors.New("database not opened") } - for i := range responsibles { - if responsibles[i].MemberId == 0 && responsibles[i].Id != 0 { - responsibles[i].MemberId = responsibles[i].Id - responsibles[i].Id = 0 +next: + for _, r := range responsibles { + if r.MemberId == 0 && r.Id != 0 { + r.MemberId = r.Id + r.Id = 0 } //check if member exists - if !dh.database.Exists(&models.Member{}, "", "id", &responsibles[i].MemberId, false) { + if !dh.database.Exists(&models.Member{}, "", "id", &r.MemberId, false) { continue } // check if already exists - if dh.database.Exists(&models.Responsible{}, "Member", "id", &responsibles[i].MemberId, false) { - continue + var oldResponsibles models.Responsibles + err := dh.database.GetById(&oldResponsibles, "Member", 0) + if err != nil { + return err } - err := dh.database.AddNewColum(&responsibles[i]) + + for _, oldR := range oldResponsibles { + if oldR.Member == nil { + continue + } else if oldR.Member.Id == int(r.MemberId) { + continue next + } + } + + err = dh.database.AddNewColum(&r) if err != nil { return err }