Skip to content

Commit 63ba09f

Browse files
committed
feat: finishing webhook payment gateway, with sender email
1 parent e951ec5 commit 63ba09f

27 files changed

+2800
-640
lines changed

app/app.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import (
44
blogPost "github.com/hammer-code/lms-be/app/blog_post"
55
"github.com/hammer-code/lms-be/app/middlewares"
66
newsletters "github.com/hammer-code/lms-be/app/newsletters"
7-
testingTransaction "github.com/hammer-code/lms-be/app/testing_transaction/delivery/http"
8-
testingTransactionRepo "github.com/hammer-code/lms-be/app/testing_transaction/repository"
9-
testingTransactionUC "github.com/hammer-code/lms-be/app/testing_transaction/usecase"
7+
transactionEvent "github.com/hammer-code/lms-be/app/transaction_events/delivery/http"
8+
transactionEventRepo "github.com/hammer-code/lms-be/app/transaction_events/repository"
9+
transactionEventUC "github.com/hammer-code/lms-be/app/transaction_events/usecase"
1010
users "github.com/hammer-code/lms-be/app/users"
1111
"github.com/hammer-code/lms-be/config"
1212
"github.com/hammer-code/lms-be/domain"
@@ -20,13 +20,13 @@ import (
2020
)
2121

2222
type App struct {
23-
Middleware domain.Middleware
24-
UserHandler domain.UserHandler
25-
NewLetterHandler domain.NewslettterHandler
26-
EventHandler domain.EventHandler
27-
ImageHandler domain.ImageHandler
28-
BlogPostHandler domain.BlogPostHandler
29-
TestingTransactionHandler domain.TestingTransactionHandler
23+
Middleware domain.Middleware
24+
UserHandler domain.UserHandler
25+
NewLetterHandler domain.NewslettterHandler
26+
EventHandler domain.EventHandler
27+
ImageHandler domain.ImageHandler
28+
BlogPostHandler domain.BlogPostHandler
29+
TransactionEventHandler domain.TransactionEventHandler
3030
}
3131

3232
func InitApp(
@@ -50,7 +50,7 @@ func InitApp(
5050
eventRepo := events.InitRepository(dbTx)
5151
imgRepo := images.InitRepository(dbTx)
5252
blogPostRepo := blogPost.InitRepository(dbTx)
53-
testingTransactionRepository := testingTransactionRepo.NewRepository(db)
53+
transactionEventRepository := transactionEventRepo.NewRepository(db)
5454

5555
// Middlewares
5656
middleware := middlewares.InitMiddleware(jwtInstance, userRepo)
@@ -61,23 +61,23 @@ func InitApp(
6161
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx)
6262
imgUc := images.InitUsecase(imgRepo, dbTx)
6363
blogPostUc := blogPost.InitUseCase(blogPostRepo, jwtInstance)
64-
testingTransactionUsecase := testingTransactionUC.NewUsecase(testingTransactionRepository, xenditClient)
64+
transactionEventUsecase := transactionEventUC.NewUsecase(transactionEventRepository, eventRepo, xenditClient, cfg)
6565

6666
// handler
6767
userHandler := users.InitHandler(userUsecase)
6868
newsletterHandler := newsletters.InitHandler(newsletterUC, middleware)
6969
eventHandler := events.InitHandler(eventUC)
7070
ImageHandler := images.InitHandler(imgUc)
7171
blogPostHandler := blogPost.InitHandler(blogPostUc)
72-
testingTransactionHandler := testingTransaction.NewHandler(testingTransactionUsecase)
72+
transactionEventHandler := transactionEvent.NewHandler(transactionEventUsecase, cfg)
7373

7474
return App{
75-
UserHandler: userHandler,
76-
NewLetterHandler: newsletterHandler,
77-
Middleware: middleware,
78-
EventHandler: eventHandler,
79-
ImageHandler: ImageHandler,
80-
BlogPostHandler: blogPostHandler,
81-
TestingTransactionHandler: testingTransactionHandler,
75+
UserHandler: userHandler,
76+
NewLetterHandler: newsletterHandler,
77+
Middleware: middleware,
78+
EventHandler: eventHandler,
79+
ImageHandler: ImageHandler,
80+
BlogPostHandler: blogPostHandler,
81+
TransactionEventHandler: transactionEventHandler,
8282
}
8383
}

app/events/repository/get_registration_event.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
func (repo *repository) GetRegistrationEvent(ctx context.Context, orderNo string) (data domain.RegistrationEvent, err error) {
1010
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
1111

12-
err = db.Where("order_no = ?", orderNo).Find(&data).Error
12+
err = db.Preload("User").Where("order_no = ?", orderNo).Find(&data).Error
1313
if err != nil {
1414
return
1515
}
@@ -20,15 +20,15 @@ func (repo *repository) GetRegistrationEvent(ctx context.Context, orderNo string
2020
func (repo *repository) GetRegistrationEventByID(ctx context.Context, id uint) (data domain.RegistrationEvent, err error) {
2121
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
2222

23-
err = db.Where("id = ?", id).Find(&data).Error
23+
err = db.Preload("User").Where("id = ?", id).Find(&data).Error
2424
if err != nil {
2525
return
2626
}
2727

2828
return data, err
2929
}
3030

31-
func (repo *repository) GetRegistrationEventUserByStatus(ctx context.Context, eventID uint, userID uint, statuses []string) (data []domain.RegistrationEvent, err error) {
31+
func (repo *repository) GetRegistrationEventUserByStatus(ctx context.Context, eventID uint, userID string, statuses []string) (data []domain.RegistrationEvent, err error) {
3232
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
3333

3434
err = db.Where("event_id = ?", eventID).Where("user_id = ?", userID).Where("status IN (?)", statuses).Find(&data).Error

app/events/repository/list_registration.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,15 @@ func (repo *repository) ListRegistration(ctx context.Context, filter domain.Even
1010
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{}).
1111
Preload("Event").
1212
Preload("Event.Tags").
13-
Preload("Event.Speakers")
13+
Preload("Event.Speakers").
14+
Preload("User").
15+
Preload("Transaction")
16+
17+
// Filter by user email (only show registrations for the logged-in user)
18+
if email != "" {
19+
db = db.Joins("JOIN users ON users.id = CAST(registration_events.user_id AS INTEGER)").
20+
Where("users.email = ?", email)
21+
}
1422

1523
if filter.Status != "" {
1624
db = db.Where("registration_events.status = ?", filter.Status)

app/events/usecase/create_registration_event.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
2323
// get user data from context
2424
userData := ctx.Value(contextkey.UserKey).(domain.User)
2525

26-
registrations, err := uc.repository.GetRegistrationEventUserByStatus(ctx, payload.EventID, uint(userData.ID), []string{constants.PENDING, constants.SUCCESS})
26+
registrations, err := uc.repository.GetRegistrationEventUserByStatus(ctx, payload.EventID, strconv.Itoa(userData.ID), []string{constants.PENDING, constants.SUCCESS})
2727
if err != nil {
2828
err = utils.NewInternalServerError(ctx, err)
2929
return domain.RegisterEventResponse{}, err

app/events/usecase/list_registration_event.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,17 @@ func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilte
2323

2424
for i, data := range datas {
2525
datas[i].ImageProofPayment = fmt.Sprintf("%s/api/v1/public/storage/images/%s", baseURL, data.ImageProofPayment)
26-
26+
2727
// Update event image URL
2828
if datas[i].Event.Image != "" {
2929
datas[i].Event.Image = fmt.Sprintf("%s/api/v1/public/storage/images/%s", baseURL, datas[i].Event.Image)
3030
}
31+
32+
if data.Transaction != nil && data.Transaction.InvoiceURL != nil {
33+
datas[i].PaymentURL = *data.Transaction.InvoiceURL
34+
datas[i].TransactionNo = *&data.Transaction.TransactionNo
35+
}
3136
}
32-
37+
3338
return datas, domain.NewPagination(tData, filter.FilterPagination), err
3439
}

app/testing_transaction/delivery/http/handler.go

Lines changed: 0 additions & 148 deletions
This file was deleted.

app/testing_transaction/repository/repository.go

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)