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  }