42 lines
944 B
Go
42 lines
944 B
Go
package application
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func (h *ApplicationHandler) SendSMS(ctx context.Context, beneficiaryID, message string) error {
|
|
return h.GenerateSMS(beneficiaryID, message)
|
|
}
|
|
|
|
func (h *ApplicationHandler) GenerateSMS(recipientid string, message string) error {
|
|
recipient, err := h.services.GetAccount(recipientid)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("user not found")
|
|
return err
|
|
}
|
|
|
|
pn, ok := recipient.Data["phone_number"]
|
|
if !ok {
|
|
log.Error().Msg("Beneficiary doesn't have a phone number")
|
|
return errors.New("missing phone number")
|
|
}
|
|
phoneNumber, ok := pn.(string)
|
|
if !ok {
|
|
log.Error().Msg("phone number type error")
|
|
return errors.New("phone number type error")
|
|
}
|
|
|
|
sender := h.config.GetString("service_name")
|
|
|
|
err = h.services.SMS.Send(phoneNumber, message, sender)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("cannot send SMS")
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|