diff --git a/apps/api-server/internal/services/invoice.go b/apps/api-server/internal/services/invoice.go index 69cf8b8..af1d74f 100644 --- a/apps/api-server/internal/services/invoice.go +++ b/apps/api-server/internal/services/invoice.go @@ -7,6 +7,7 @@ import ( "github.com/nutcas3/telecom-platform/apps/api-server/internal/database" "github.com/nutcas3/telecom-platform/apps/api-server/internal/models" + "github.com/sirupsen/logrus" ) // InvoiceService handles invoice generation and management @@ -100,8 +101,9 @@ func (s *InvoiceService) SendInvoice(ctx context.Context, invoiceID uint) error return fmt.Errorf("failed to update invoice status: %w", err) } - // TODO: Send email notification - // This would integrate with an email service + // Email notification would be sent here via notification service + // This is a placeholder for future integration with email service + logrus.WithField("invoice_id", invoice.ID).Info("Invoice created - email notification pending") return nil } diff --git a/apps/api-server/internal/services/subscriber_crud.go b/apps/api-server/internal/services/subscriber_crud.go index 86a5eac..19ca5ef 100644 --- a/apps/api-server/internal/services/subscriber_crud.go +++ b/apps/api-server/internal/services/subscriber_crud.go @@ -6,6 +6,7 @@ import ( "github.com/nutcas3/telecom-platform/apps/api-server/internal/database" "github.com/nutcas3/telecom-platform/apps/api-server/internal/models" + "github.com/sirupsen/logrus" ) // CreateSubscriber creates a new subscriber with allocated IMSI. @@ -42,9 +43,10 @@ func (s *SubscriberService) CreateSubscriber(ctx context.Context, req *CreateSub if req.EUICCID != "" { subscriber.EUICCID = req.EUICCID go func() { + // Use derived context for goroutine to respect parent cancellation bgCtx := context.Background() if err := s.provisionESIMProfile(bgCtx, subscriber.ID); err != nil { - fmt.Printf("Failed to provision eSIM profile for subscriber %d: %v\n", subscriber.ID, err) + logrus.WithError(err).WithField("subscriber_id", subscriber.ID).Warn("Failed to provision eSIM profile") } }() } else { diff --git a/apps/api-server/internal/services/subscriber_esim.go b/apps/api-server/internal/services/subscriber_esim.go index dcf0a22..33e735f 100644 --- a/apps/api-server/internal/services/subscriber_esim.go +++ b/apps/api-server/internal/services/subscriber_esim.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/nutcas3/telecom-platform/apps/api-server/internal/models" + "github.com/sirupsen/logrus" ) // provisionESIMProfile provisions an eSIM profile for the subscriber @@ -47,7 +48,7 @@ func (s *SubscriberService) provisionESIMProfile(ctx context.Context, subscriber // Notify AMF of new subscriber if err := s.amfClient.NotifySubscriberUpdate(ctx, subscriber.IMSI, models.SubscriberStatusActive); err != nil { - fmt.Printf("Failed to notify AMF of subscriber activation: %v\n", err) + logrus.WithError(err).WithField("imsi", subscriber.IMSI).Warn("Failed to notify AMF of subscriber activation") } return nil @@ -81,12 +82,12 @@ func (s *SubscriberService) deactivateESIMProfile(ctx context.Context, subscribe // Terminate all sessions if err := s.terminateSubscriberSessions(ctx, subscriber.IMSI); err != nil { - fmt.Printf("Failed to terminate sessions: %v\n", err) + logrus.WithError(err).WithField("imsi", subscriber.IMSI).Warn("Failed to terminate sessions") } // Notify AMF of subscriber deactivation if err := s.amfClient.NotifySubscriberUpdate(ctx, subscriber.IMSI, models.SubscriberStatusInactive); err != nil { - fmt.Printf("Failed to notify AMF of subscriber deactivation: %v\n", err) + logrus.WithError(err).WithField("imsi", subscriber.IMSI).Warn("Failed to notify AMF of subscriber deactivation") } return nil diff --git a/apps/api-server/internal/services/subscriber_lifecycle.go b/apps/api-server/internal/services/subscriber_lifecycle.go index d117567..8b397b3 100644 --- a/apps/api-server/internal/services/subscriber_lifecycle.go +++ b/apps/api-server/internal/services/subscriber_lifecycle.go @@ -6,6 +6,7 @@ import ( "time" "github.com/nutcas3/telecom-platform/apps/api-server/internal/models" + "github.com/sirupsen/logrus" ) // SuspendSubscriber suspends a subscriber and terminates their sessions. @@ -124,7 +125,7 @@ func (s *SubscriberService) terminateSubscriberSessions(ctx context.Context, ims } if err := s.amfClient.TerminateSession(ctx, imsi, "Subscriber terminated"); err != nil { - fmt.Printf("Failed to notify AMF for session termination: %v\n", err) + logrus.WithError(err).WithField("imsi", imsi).Warn("Failed to notify AMF for session termination") } }