github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/directeurs/joomeo.go (about) 1 package directeurs 2 3 import ( 4 "strings" 5 6 rd "github.com/benoitkugler/goACVE/server/core/rawdata" 7 "github.com/benoitkugler/goACVE/server/core/utils/joomeo" 8 ) 9 10 func (d DriverCampComplet) loadMails() (inscrits, responsables, equipiers []string, err error) { 11 // on charge le côté "inscrits" ... 12 err = d.loadInscritsResponsables() 13 if err != nil { 14 return nil, nil, nil, err 15 } 16 base := *d.camp.Base 17 // ... puis le coté "equipiers" 18 err = d.loadDataEquipiers() 19 if err != nil { 20 return nil, nil, nil, err 21 } 22 23 // puis on fusionne 24 base.Equipiers = d.camp.Base.Equipiers 25 for k, v := range d.camp.Base.Personnes { 26 base.Personnes[k] = v 27 } 28 d.camp.Base = &base 29 30 mailsPart, mailsResp, mailsEq := rd.StringSet{}, rd.StringSet{}, rd.StringSet{} 31 for _, part := range d.camp.GetInscrits(nil) { 32 m := strings.TrimSpace(string(part.GetPersonne().RawData().Mail)) 33 if m != "" { 34 mailsPart[m] = true 35 } 36 fac, has := part.GetFacture() 37 if has { 38 for _, m := range append(fac.RawData().CopiesMails, string(fac.GetPersonne().RawData().Mail)) { 39 m = strings.TrimSpace(m) 40 if m != "" { 41 mailsResp[m] = true 42 } 43 } 44 45 } 46 } 47 for _, part := range d.camp.GetEquipe(nil) { 48 if !part.RawData().Roles.Is(rd.RDirecteur) { 49 m := strings.TrimSpace(string(part.GetPersonne().RawData().Mail)) 50 if m != "" { 51 mailsEq[m] = true 52 } 53 } 54 } 55 return mailsPart.ToList(), mailsResp.ToList(), mailsEq.ToList(), nil 56 } 57 58 func (d DriverCampSimple) loadMails() (inscrits []string, err error) { 59 err = d.loadDataInscrits() 60 if err != nil { 61 return nil, err 62 } 63 mailsPart := rd.StringSet{} 64 for _, part := range d.camp.GetParticipantsimples(nil) { 65 m := strings.TrimSpace(string(part.GetPersonne().RawData().Mail)) 66 if m != "" { 67 mailsPart[m] = true 68 } 69 } 70 return mailsPart.ToList(), nil 71 } 72 73 // renvoie les données propres à JOOMEO 74 func (d driverShared) loadJoomeo() (data JoomeoData, err error) { 75 albumId := string(d.camp.RawData().JoomeoAlbumId) 76 if albumId == "" { 77 return 78 } 79 80 api, err := joomeo.InitApi(d.joomeo) 81 if err != nil { 82 return 83 } 84 defer api.Kill() 85 data.SpaceUrl = api.SpaceURL 86 data.Meta, err = api.GetAlbumMetadatas(albumId) 87 if err != nil { 88 return 89 } 90 data.Contacts, err = api.GetContacts(albumId) 91 return data, err 92 } 93 94 func (d DriverCampComplet) loadJoomeoData() (data JoomeoData, err error) { 95 data, err = d.loadJoomeo() 96 if err != nil { 97 return 98 } 99 data.MailsInscrits, data.MailsResponsables, data.MailsEquipiers, err = d.loadMails() 100 return data, err 101 } 102 103 func (d DriverCampSimple) loadJoomeoData() (data JoomeoData, err error) { 104 data, err = d.loadJoomeo() 105 if err != nil { 106 return 107 } 108 data.MailsInscrits, err = d.loadMails() 109 return data, err 110 } 111 112 func (d driverShared) addJoomeoContacts(mails []string, sendMail bool) (contacts []joomeo.ContactPermission, 113 errors []string, err error) { 114 albumId := string(d.camp.RawData().JoomeoAlbumId) 115 if albumId == "" { 116 return 117 } 118 api, err := joomeo.InitApi(d.joomeo) 119 if err != nil { 120 return 121 } 122 defer api.Kill() 123 errors, err = api.AjouteContacts(string(d.camp.RawData().Nom), int(d.camp.RawData().Annee()), 124 albumId, mails, sendMail) 125 if err != nil { 126 return 127 } 128 contacts, err = api.GetContacts(albumId) 129 return 130 } 131 132 func (d driverShared) setContactUploader(contactid string) (contacts []joomeo.ContactPermission, errSuperContact, err error) { 133 albumId := string(d.camp.RawData().JoomeoAlbumId) 134 if albumId == "" { 135 return 136 } 137 api, err := joomeo.InitApi(d.joomeo) 138 if err != nil { 139 return 140 } 141 defer api.Kill() 142 err = api.SetContactUploader(albumId, contactid) 143 if err != nil { 144 return 145 } 146 errSuperContact = api.EleveSuperContact(contactid) 147 contacts, err = api.GetContacts(albumId) 148 return 149 } 150 151 func (d driverShared) deleteContact(contactid string) (contacts []joomeo.ContactPermission, err error) { 152 albumId := string(d.camp.RawData().JoomeoAlbumId) 153 if albumId == "" { 154 return 155 } 156 api, err := joomeo.InitApi(d.joomeo) 157 if err != nil { 158 return 159 } 160 defer api.Kill() 161 err = api.RemoveContact(albumId, contactid) 162 if err != nil { 163 return 164 } 165 return api.GetContacts(albumId) 166 }