MCPcopy Index your code
hub / github.com/NdoleStudio/httpsms / SendPhoneDeadEmail

Method SendPhoneDeadEmail

api/pkg/services/user_service.go:361–391  ·  view source on GitHub ↗

SendPhoneDeadEmail sends an email to an entities.User when a phone is dead

(ctx context.Context, params *UserSendPhoneDeadEmailParams)

Source from the content-addressed store, hash-verified

359
360// SendPhoneDeadEmail sends an email to an entities.User when a phone is dead
361func (service *UserService) SendPhoneDeadEmail(ctx context.Context, params *UserSendPhoneDeadEmailParams) error {
362 ctx, span := service.tracer.Start(ctx)
363 defer span.End()
364
365 ctxLogger := service.tracer.CtxLogger(service.logger, span)
366
367 user, err := service.repository.Load(ctx, params.UserID)
368 if err != nil {
369 msg := fmt.Sprintf("could not get [%T] with ID [%s]", user, params.UserID)
370 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
371 }
372
373 if !user.NotificationHeartbeatEnabled {
374 ctxLogger.Info(fmt.Sprintf("[%s] email notifications disabled for user [%s] with owner [%s]", events.EventTypePhoneHeartbeatOffline, params.UserID, params.Owner))
375 return nil
376 }
377
378 email, err := service.emailFactory.PhoneDead(user, params.LastHeartbeatTimestamp, params.Owner)
379 if err != nil {
380 msg := fmt.Sprintf("cannot create phone dead email for user [%s]", params.UserID)
381 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
382 }
383
384 if err = service.mailer.Send(ctx, email); err != nil {
385 msg := fmt.Sprintf("canot send phone dead notification to user [%s]", params.UserID)
386 return service.tracer.WrapErrorSpan(span, stacktrace.Propagate(err, msg))
387 }
388
389 ctxLogger.Info(fmt.Sprintf("phone dead notification sent successfully to [%s] about [%s]", user.Email, params.Owner))
390 return nil
391}
392
393// StartSubscription starts a subscription for an entities.User
394func (service *UserService) StartSubscription(ctx context.Context, params *events.UserSubscriptionCreatedPayload) error {

Callers 1

onPhoneHeartbeatDeadMethod · 0.80

Calls 7

StartMethod · 0.65
CtxLoggerMethod · 0.65
LoadMethod · 0.65
WrapErrorSpanMethod · 0.65
InfoMethod · 0.65
PhoneDeadMethod · 0.65
SendMethod · 0.65

Tested by

no test coverage detected