SendPhoneDeadEmail sends an email to an entities.User when a phone is dead
(ctx context.Context, params *UserSendPhoneDeadEmailParams)
| 359 | |
| 360 | // SendPhoneDeadEmail sends an email to an entities.User when a phone is dead |
| 361 | func (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 |
| 394 | func (service *UserService) StartSubscription(ctx context.Context, params *events.UserSubscriptionCreatedPayload) error { |
no test coverage detected