mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 19:12:54 +00:00
- Remove all method implementations from subscriber.go (CreateSubscriber/GetSubscriber/GetSubscriberByIMSI/UpdateSubscriber/SuspendSubscriber/TerminateSubscriber/ListSubscribers/terminateSubscriberSessions/GetAccount/ListInvoices/GetInvoice/ListRatingPlans/GetRatingPlan/ListAlerts/SearchSubscribers/ResolveAlert/CreateAlert and all other methods) - Update SubscriberService struct comment
70 lines
2.8 KiB
Go
70 lines
2.8 KiB
Go
package services
|
|
|
|
import (
|
|
"github.com/nutcas3/telecom-platform/apps/api-server/internal/config"
|
|
"github.com/nutcas3/telecom-platform/apps/api-server/internal/database"
|
|
"github.com/nutcas3/telecom-platform/apps/api-server/internal/models"
|
|
"github.com/nutcas3/telecom-platform/apps/api-server/internal/payment/gateways"
|
|
)
|
|
|
|
// SubscriberService handles subscriber management operations. Methods are split across:
|
|
//
|
|
// subscriber_crud.go, subscriber_lifecycle.go, subscriber_billing.go,
|
|
// subscriber_alerts.go, subscriber_payment.go, subscriber_subscriptions.go,
|
|
// subscriber_esim.go, subscriber_imsi.go, subscriber_auth.go.
|
|
type SubscriberService struct {
|
|
db *database.Database
|
|
config *config.Config
|
|
amfClient *AMFClient
|
|
es2Service *ES2Service
|
|
stripeGW *gateways.StripeGateway
|
|
}
|
|
|
|
// NewSubscriberService creates a new subscriber service.
|
|
func NewSubscriberService(db *database.Database, cfg *config.Config) *SubscriberService {
|
|
return &SubscriberService{
|
|
db: db,
|
|
config: cfg,
|
|
amfClient: NewAMFClient("http://localhost:8081"),
|
|
es2Service: NewES2Service(&cfg.ES2),
|
|
stripeGW: gateways.NewStripeGateway(cfg.Payment.StripeAPIKey, cfg.Payment.StripeWebhookSecret),
|
|
}
|
|
}
|
|
|
|
// CreateSubscriberRequest is the payload for creating a new subscriber.
|
|
type CreateSubscriberRequest struct {
|
|
MSISDN string `json:"msisdn" validate:"required"`
|
|
FirstName string `json:"first_name" validate:"required"`
|
|
LastName string `json:"last_name" validate:"required"`
|
|
Email string `json:"email" validate:"required,email"`
|
|
OrganizationID string `json:"organization_id"`
|
|
PlanID uint `json:"plan_id" validate:"required"`
|
|
EUICCID string `json:"euicc_id"`
|
|
}
|
|
|
|
// UpdateSubscriberRequest is the payload for updating an existing subscriber.
|
|
type UpdateSubscriberRequest struct {
|
|
FirstName *string `json:"first_name"`
|
|
LastName *string `json:"last_name"`
|
|
Email *string `json:"email"`
|
|
Status models.SubscriberStatus `json:"status"`
|
|
PlanID *uint `json:"plan_id"`
|
|
}
|
|
|
|
// ListSubscribersRequest is the query-filter payload for listing subscribers.
|
|
type ListSubscribersRequest struct {
|
|
Page int `json:"page" query:"page"`
|
|
PageSize int `json:"page_size" query:"page_size"`
|
|
Status models.SubscriberStatus `json:"status" query:"status"`
|
|
OrganizationID string `json:"organization_id" query:"organization_id"`
|
|
Search string `json:"search" query:"search"`
|
|
}
|
|
|
|
// ListSubscribersResponse is the paginated subscriber list result.
|
|
type ListSubscribersResponse struct {
|
|
Subscribers []models.Subscriber `json:"subscribers"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|