Skip to content

Commit 47135c6

Browse files
authored
Merge pull request #23 from hammercode-dev/BE-13/feat(events)-get-user-event
Be 13/feat(events) get user event
2 parents 40443f1 + 73db5e5 commit 47135c6

File tree

13 files changed

+78
-29
lines changed

13 files changed

+78
-29
lines changed

app/app.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func InitApp(
4949
// usecase
5050
userUsecase := users.InitUsecase(cfg, userRepo, dbTx, jwtInstance)
5151
newsletterUC := newsletters.InitUsecase(cfg, newsletterRepo, dbTx, jwt.NewJwt(cfg.JWT_SECRET_KEY))
52-
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx)
52+
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx, jwtInstance)
5353
imgUc := images.InitUsecase(imgRepo, dbTx)
5454
blogPostUc := blogPost.InitUseCase(blogPostRepo, jwtInstance)
5555

app/events/delivery/http/list_registration.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
3434
}, w)
3535
return
3636
}
37+
token := utils.ExtractBearerToken(r)
3738

3839
startDate, _ := utils.ParseDate(r.URL.Query().Get("start_date"))
3940
endDate, _ := utils.ParseDate(r.URL.Query().Get("end_date"))
@@ -43,7 +44,7 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
4344
StartDate: startDate,
4445
EndDate: endDate,
4546
FilterPagination: flterPagination,
46-
})
47+
}, *token)
4748

4849
if err != nil {
4950
ngelog.Error(r.Context(), "failed to list registration event", err)

app/events/delivery/http/register_event.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ func (h Handler) RegisterEvent(w http.ResponseWriter, r *http.Request) {
3232
return
3333
}
3434

35+
token := utils.ExtractBearerToken(r)
36+
37+
if err != nil {
38+
ngelog.Error(r.Context(), "failed to verify token", err)
39+
utils.Response(domain.HttpResponse{
40+
Code: http.StatusUnauthorized,
41+
Message: "Unauthorized",
42+
}, w)
43+
return
44+
}
45+
3546
var payload domain.RegisterEventPayload
3647
if err := json.Unmarshal(bodyBytes, &payload); err != nil {
3748
ngelog.Error(r.Context(), "failed to unmarshal payload", err)
@@ -41,7 +52,7 @@ func (h Handler) RegisterEvent(w http.ResponseWriter, r *http.Request) {
4152
}, w)
4253
return
4354
}
44-
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload)
55+
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload, *token)
4556
if err != nil {
4657
ngelog.Error(r.Context(), "failed to create registration event", err)
4758
resp := utils.CustomErrorResponse(err)

app/events/events.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ import (
88
"github.com/hammer-code/lms-be/config"
99
"github.com/hammer-code/lms-be/domain"
1010
"github.com/hammer-code/lms-be/pkg/db"
11+
"github.com/hammer-code/lms-be/pkg/jwt"
1112
)
1213

1314
func InitRepository(db db.DatabaseTransaction) domain.EventRepository {
1415
return repository.NewRepository(db)
1516
}
1617

17-
func InitUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction) domain.EventUsecase {
18-
return usecase.NewUsecase(cfg, repository, imageRepository, dbTX)
18+
func InitUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction, jwt jwt.JWT) domain.EventUsecase {
19+
return usecase.NewUsecase(cfg, repository, imageRepository, dbTX, jwt)
1920
}
2021

2122
func InitHandler(uc domain.EventUsecase) domain.EventHandler {

app/events/repository/get_event.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@ import (
99
func (repo *repository) GetEvent(ctx context.Context, eventID uint) (data domain.Event, err error) {
1010
db := repo.db.DB(ctx).Model(&domain.Event{})
1111

12-
err = db.Where("id = ?", eventID).Find(&data).Error
13-
if err != nil {
14-
return
15-
}
12+
err = db.Where("id = ?", eventID).First(&data).Error
1613

1714
return data, err
18-
}
15+
}

app/events/repository/list_registration.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ import (
66
"github.com/hammer-code/lms-be/domain"
77
)
88

9-
func (repo *repository) ListRegistration(ctx context.Context, filter domain.EventFilter) (tData int, data []domain.RegistrationEvent, err error) {
9+
func (repo *repository) ListRegistration(ctx context.Context, filter domain.EventFilter, email string) (tData int, data []domain.RegistrationEvent, err error) {
1010
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
1111

12-
var totalData int64
13-
1412
if filter.Status != "" {
1513
db = db.Where("status = ?", filter.Status)
1614
}
@@ -19,17 +17,24 @@ func (repo *repository) ListRegistration(ctx context.Context, filter domain.Even
1917
db = db.Where("start_date > ?", filter.StartDate)
2018
}
2119

22-
if filter.StartDate.Valid {
20+
if filter.EndDate.Valid {
2321
db = db.Where("end_date < ?", filter.EndDate)
2422
}
2523

24+
if email != "" {
25+
db = db.Where("email = ?", email)
26+
}
27+
28+
var totalData int64
2629
db.Count(&totalData)
2730

2831
err = db.Limit(filter.FilterPagination.GetLimit()).
29-
Offset(filter.FilterPagination.GetOffset()).Find(&data).Error
32+
Offset(filter.FilterPagination.GetOffset()).
33+
Find(&data).Error
3034
if err != nil {
3135
return
3236
}
3337

3438
return int(totalData), data, err
35-
}
39+
}
40+

app/events/usecase/create_registration_event.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
"github.com/sirupsen/logrus"
1616
)
1717

18-
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
18+
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload, token string) (domain.RegisterEventResponse, error) {
1919
event, err := uc.repository.GetEvent(ctx, payload.EventID)
2020
if err != nil {
2121
err = utils.NewInternalServerError(ctx, err)
@@ -41,6 +41,11 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
4141
}
4242
}
4343

44+
userData, err := uc.jwt.VerifyToken(token)
45+
if err != nil {
46+
return domain.RegisterEventResponse{}, fmt.Errorf("failed to verify token: %w", err)
47+
}
48+
4449
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
4550

4651
orderNo := fmt.Sprintf("TXE-%d-%s%s%s%s", event.ID, time.Now().Format("06"), time.Now().Format("01"), time.Now().Format("02"), hash[0:4])
@@ -84,12 +89,12 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
8489
if err := emailPayload.AddReceiver(
8590
ctx,
8691
email.Receiver{
87-
Email: payload.Email,
92+
Email: userData.Email,
8893
Data: map[string]interface{}{
89-
"name": payload.Name,
94+
"name": userData.UserName,
9095
"title": event.Title,
9196
"price": event.Price,
92-
"email": payload.Email,
97+
"email": userData.Email,
9398
"order_no": orderNo,
9499
"year": time.Now().Format("2006"),
95100
"date": formattedDate,
@@ -131,8 +136,8 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
131136
rId, err := uc.repository.CreateRegistrationEvent(txCtx, domain.RegistrationEvent{
132137
OrderNo: orderNo,
133138
EventID: event.ID,
134-
Name: payload.Name,
135-
Email: payload.Email,
139+
Name: userData.UserName,
140+
Email: userData.Email,
136141
PhoneNumber: payload.PhoneNumber,
137142
Status: status,
138143
UpToYou: upToYou,

app/events/usecase/list_registration_event.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@ import (
77
"github.com/hammer-code/lms-be/utils"
88
)
99

10-
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
11-
tData, datas, err := uc.repository.ListRegistration(ctx, filter)
10+
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter, token string) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
11+
12+
userData, err := uc.jwt.VerifyToken(token)
13+
if err != nil {
14+
return nil, domain.Pagination{}, utils.NewUnauthorizedError(ctx, "unauthorized", err)
15+
}
16+
17+
tData, datas, err := uc.repository.ListRegistration(ctx, filter, userData.Email)
1218
if err != nil {
1319
err = utils.NewInternalServerError(ctx, err)
1420
return

app/events/usecase/usecase.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,29 @@ import (
44
"github.com/hammer-code/lms-be/config"
55
"github.com/hammer-code/lms-be/domain"
66
"github.com/hammer-code/lms-be/pkg/db"
7+
"github.com/hammer-code/lms-be/pkg/jwt"
78
)
89

910
type usecase struct {
1011
repository domain.EventRepository
1112
imageRepository domain.ImageRepository
1213
cfg config.Config
1314
dbTX db.DatabaseTransaction
15+
jwt jwt.JWT
1416
}
1517

1618
var (
1719
uc *usecase
1820
)
1921

20-
func NewUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction) domain.EventUsecase {
22+
func NewUsecase(cfg config.Config, repository domain.EventRepository, imageRepository domain.ImageRepository, dbTX db.DatabaseTransaction, jwt jwt.JWT) domain.EventUsecase {
2123
if uc == nil {
2224
uc = &usecase{
2325
repository: repository,
2426
imageRepository: imageRepository,
2527
dbTX: dbTX,
2628
cfg: cfg,
29+
jwt: jwt,
2730
}
2831
}
2932

cmd/serve_http.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ func registerHandler(app app.App) *mux.Router {
151151
public.HandleFunc("/events", app.EventHandler.List).Methods(http.MethodGet)
152152
public.HandleFunc("/events/{id}", app.EventHandler.GetEventByID).Methods(http.MethodGet)
153153
public.HandleFunc("/images", app.ImageHandler.UploadImage).Methods(http.MethodPost)
154-
public.HandleFunc("/events/registrations", app.EventHandler.RegisterEvent).Methods(http.MethodPost)
155154
public.HandleFunc("/events/registrations/{order_no}", app.EventHandler.RegistrationStatus).Methods(http.MethodGet)
156155
public.HandleFunc("/events/pay", app.EventHandler.PayEvent).Methods(http.MethodPost)
157156
public.HandleFunc("/blogs", app.BlogPostHandler.GetAllBlogPosts).Methods(http.MethodGet)
@@ -176,6 +175,8 @@ func registerHandler(app app.App) *mux.Router {
176175
protectedV1Route.HandleFunc("/events/pays", app.EventHandler.ListEventPay).Methods(http.MethodGet)
177176
protectedV1Route.HandleFunc("/events/pays", app.EventHandler.PayProcess).Methods(http.MethodPost)
178177
protectedV1Route.HandleFunc("/events/{id}", app.EventHandler.GetEventByID).Methods(http.MethodGet)
178+
protectedV1Route.HandleFunc("/events/registrations", app.EventHandler.RegisterEvent).Methods(http.MethodPost)
179+
179180
protectedV1Route.HandleFunc("/images", app.ImageHandler.UploadImage).Methods(http.MethodPost)
180181

181182
protectedV1Route.HandleFunc("/blogs", app.BlogPostHandler.CreateBlogPost).Methods(http.MethodPost)

0 commit comments

Comments
 (0)