diff --git a/internal/controllers/membershipController.go b/internal/controllers/membershipController.go index 047e14f..3d2514a 100644 --- a/internal/controllers/membershipController.go +++ b/internal/controllers/membershipController.go @@ -18,15 +18,15 @@ type MembershipController struct { service services.MembershipService } type MembershipData struct { - APIKey string - Model models.SubscriptionModel + APIKey string `json:"api_key"` + Model models.SubscriptionModel `json:"model"` } func NewMembershipController(service services.MembershipService) *MembershipController { return &MembershipController{service} } -func (uc *MembershipController) RegisterPlan(w http.ResponseWriter, r *http.Request) { +func (uc *MembershipController) RegisterSubscription(w http.ResponseWriter, r *http.Request) { rh := utils.NewResponseHandler(w) var regData MembershipData @@ -46,10 +46,10 @@ func (uc *MembershipController) RegisterPlan(w http.ResponseWriter, r *http.Requ rh.RespondWithError(http.StatusExpectationFailed, "API Key not valid") return } - logger.Info.Printf("registering plan: %+v", regData) + logger.Info.Printf("registering subscription: %+v", regData) - // Register Plan - id, err := uc.service.RegisterPlan(®Data.Model) + // Register Subscription + id, err := uc.service.RegisterSubscription(®Data.Model) if err != nil { logger.Error.Printf("Couldn't register Membershipmodel: %v", err) rh.RespondWithError(http.StatusInternalServerError, "Couldn't register Membershipmodel") diff --git a/internal/models/membership.go b/internal/models/membership.go index c7041f4..b9f13df 100644 --- a/internal/models/membership.go +++ b/internal/models/membership.go @@ -7,10 +7,10 @@ type Membership struct { UpdatedAt time.Time StartDate time.Time `json:"start_date"` EndDate time.Time `json:"end_date"` + Children *[]User `gorm:"foreignKey:ParentMemberID"` Status string `json:"status"` SubscriptionModel SubscriptionModel `gorm:"foreignKey:SubscriptionModelID"` SubscriptionModelID int64 `json:"subsription_model_id"` ID int64 `json:"id"` UserID int64 `json:"user_id"` - ParentID int64 `json:"parent_id"` } diff --git a/internal/models/user.go b/internal/models/user.go index fbdf710..4c6e0e2 100644 --- a/internal/models/user.go +++ b/internal/models/user.go @@ -23,6 +23,7 @@ type User struct { BankAccount BankAccount `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` Verification Verification `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` Membership Membership `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` + ParentMemberID int64 `json:"parent_member_id"` ID int64 `gorm:"primaryKey"` PaymentStatus int8 `json:"payment_status"` Status int8 `json:"status"` diff --git a/internal/routes/routes.go b/internal/routes/routes.go index f727642..455ed19 100644 --- a/internal/routes/routes.go +++ b/internal/routes/routes.go @@ -13,7 +13,7 @@ func RegisterRoutes(router *mux.Router, userController *controllers.UserControll logger.Info.Println("Registering backend/api/register route") router.HandleFunc("/backend/api/verify", userController.VerifyMailHandler).Methods("GET") router.HandleFunc("/backend/api/register", userController.RegisterUser).Methods("POST") - router.HandleFunc("/backend/api/plans", membershipController.RegisterPlan).Methods("POST") + router.HandleFunc("/backend/api/register/subscription", membershipController.RegisterSubscription).Methods("POST") // router.HandleFunc("/login", userController.LoginUser).Methods("POST") } diff --git a/internal/server/server.go b/internal/server/server.go index d864c63..573aa47 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -29,8 +29,8 @@ func Run() { bankAccountRepo := repositories.NewBankAccountRepository(db) bankAccountService := services.NewBankAccountService(bankAccountRepo) membershipRepo := repositories.NewMembershipRepository(db) - planRepo := repositories.NewSubscriptionModelsRepository(db) - membershipService := services.NewMembershipService(membershipRepo, planRepo) + subscriptionRepo := repositories.NewSubscriptionModelsRepository(db) + membershipService := services.NewMembershipService(membershipRepo, subscriptionRepo) userRepo := repositories.NewUserRepository(db) userService := services.NewUserService(userRepo) userController := controllers.NewUserController(userService, emailService, consentService, bankAccountService, membershipService) diff --git a/internal/services/membership_service.go b/internal/services/membership_service.go index 1d9227d..2fe56a4 100644 --- a/internal/services/membership_service.go +++ b/internal/services/membership_service.go @@ -9,16 +9,16 @@ import ( type MembershipService interface { RegisterMembership(membership *models.Membership) (int64, error) FindMembershipByUserID(userID int64) (*models.Membership, error) - RegisterPlan(plan *models.SubscriptionModel) (int64, error) + RegisterSubscription(subscription *models.SubscriptionModel) (int64, error) } type membershipService struct { - repo repositories.MembershipRepository - planRepo repositories.SubscriptionModelsRepository + repo repositories.MembershipRepository + subscriptionRepo repositories.SubscriptionModelsRepository } -func NewMembershipService(repo repositories.MembershipRepository, planRepo repositories.SubscriptionModelsRepository) MembershipService { - return &membershipService{repo, planRepo} +func NewMembershipService(repo repositories.MembershipRepository, subscriptionRepo repositories.SubscriptionModelsRepository) MembershipService { + return &membershipService{repo, subscriptionRepo} } func (service *membershipService) RegisterMembership(membership *models.Membership) (int64, error) { @@ -30,8 +30,8 @@ func (service *membershipService) FindMembershipByUserID(userID int64) (*models. return service.repo.FindMembershipByUserID(userID) } -// Membership_Plans +// Membership_Subscriptions -func (service *membershipService) RegisterPlan(plan *models.SubscriptionModel) (int64, error) { - return service.planRepo.CreateSubscriptionModel(plan) +func (service *membershipService) RegisterSubscription(subscription *models.SubscriptionModel) (int64, error) { + return service.subscriptionRepo.CreateSubscriptionModel(subscription) }