47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"git.defalsify.org/vise.git/resource"
|
|
"git.grassecon.net/grassrootseconomics/common/phone"
|
|
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
|
"gopkg.in/leonelquinteros/gotext.v1"
|
|
)
|
|
|
|
// InviteValidRecipient sends an invitation to the valid phone number.
|
|
func (h *MenuHandlers) InviteValidRecipient(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
|
var res resource.Result
|
|
store := h.userdataStore
|
|
smsservice := h.smsService
|
|
|
|
sessionId, ok := ctx.Value("SessionId").(string)
|
|
if !ok {
|
|
return res, fmt.Errorf("missing session")
|
|
}
|
|
|
|
code := codeFromCtx(ctx)
|
|
l := gotext.NewLocale(translationDir, code)
|
|
l.AddDomain("default")
|
|
|
|
recipient, err := store.ReadEntry(ctx, sessionId, storedb.DATA_TEMPORARY_VALUE)
|
|
if err != nil {
|
|
logg.ErrorCtxf(ctx, "Failed to read invalid recipient info", "error", err)
|
|
return res, err
|
|
}
|
|
|
|
if !phone.IsValidPhoneNumber(string(recipient)) {
|
|
logg.InfoCtxf(ctx, "corrupted recipient", "key", storedb.DATA_TEMPORARY_VALUE, "recipient", recipient)
|
|
return res, nil
|
|
}
|
|
|
|
_, err = smsservice.Accountservice.SendUpsellSMS(ctx, sessionId, string(recipient))
|
|
if err != nil {
|
|
res.Content = l.Get("Your invite request for %s to Sarafu Network failed. Please try again later.", string(recipient))
|
|
return res, nil
|
|
}
|
|
res.Content = l.Get("Your invitation to %s to join Sarafu Network has been sent.", string(recipient))
|
|
return res, nil
|
|
}
|