Skip to content

Commit 4b4a697

Browse files
committed
feat(event): list registration
1 parent 46293e0 commit 4b4a697

6 files changed

Lines changed: 106 additions & 0 deletions

File tree

app/events/delivery/http/list_event.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ import (
1010

1111
func (h Handler) GetEvents(w http.ResponseWriter, r *http.Request) {
1212
flterPagination, err := domain.GetPaginationFromCtx(r)
13+
if err != nil {
14+
logrus.Error("failed to get pagination : ", err)
15+
utils.Response(domain.HttpResponse{
16+
Code: 500,
17+
Message: err.Error(),
18+
}, w)
19+
return
20+
}
1321

1422
startDate, _ := utils.ParseDate(r.URL.Query().Get("start_date"))
1523
endDate, _ := utils.ParseDate(r.URL.Query().Get("end_date"))
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package http
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/hammer-code/lms-be/domain"
7+
"github.com/hammer-code/lms-be/utils"
8+
"github.com/sirupsen/logrus"
9+
)
10+
11+
func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
12+
flterPagination, err := domain.GetPaginationFromCtx(r)
13+
if err != nil {
14+
logrus.Error("failed to get pagination : ", err)
15+
utils.Response(domain.HttpResponse{
16+
Code: 500,
17+
Message: err.Error(),
18+
}, w)
19+
return
20+
}
21+
22+
startDate, _ := utils.ParseDate(r.URL.Query().Get("start_date"))
23+
endDate, _ := utils.ParseDate(r.URL.Query().Get("end_date"))
24+
25+
data, pagination, err := h.usecase.ListRegistration(r.Context(), domain.EventFilter{
26+
Status: r.URL.Query().Get("status"),
27+
StartDate: startDate,
28+
EndDate: endDate,
29+
FilterPagination: flterPagination,
30+
})
31+
32+
if err != nil {
33+
logrus.Error("failed to get registration event : ", err)
34+
utils.Response(domain.HttpResponse{
35+
Code: 500,
36+
Message: err.Error(),
37+
}, w)
38+
return
39+
}
40+
41+
utils.Response(domain.HttpResponse{
42+
Code: 200,
43+
Message: "success",
44+
Data: data,
45+
Pagination: pagination,
46+
}, w)
47+
}

app/events/repository/get_events.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,32 @@ func (repo *repository) GetRegistrationEvent(ctx context.Context, orderNo string
6969

7070
return data, err
7171
}
72+
73+
func (repo *repository) ListRegistration(ctx context.Context, filter domain.EventFilter) (tData int, data []domain.RegistrationEvent, err error) {
74+
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
75+
76+
var totalData int64
77+
78+
if filter.Status != "" {
79+
db = db.Where("status = ?", filter.Status)
80+
}
81+
82+
if filter.StartDate.Valid {
83+
db = db.Where("start_date > ?", filter.StartDate)
84+
}
85+
86+
if filter.StartDate.Valid {
87+
db = db.Where("end_date < ?", filter.EndDate)
88+
}
89+
90+
db.Count(&totalData)
91+
92+
err = db.Limit(filter.FilterPagination.GetLimit()).
93+
Offset(filter.FilterPagination.GetOffset()).Find(&data).Error
94+
if err != nil {
95+
logrus.Error("failed to list registration event use generic conditions")
96+
return
97+
}
98+
99+
return int(totalData), data, err
100+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package usecase
2+
3+
import (
4+
"context"
5+
6+
"github.com/hammer-code/lms-be/domain"
7+
"github.com/sirupsen/logrus"
8+
)
9+
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)
12+
if err != nil {
13+
logrus.Error("failed to get event")
14+
return
15+
}
16+
17+
return datas, domain.NewPagination(tData, filter.FilterPagination), err
18+
}

cmd/serve_http.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ func registerHandler(app app.App) *mux.Router {
151151

152152
protectedV1Route.HandleFunc("/events", app.EventHandler.CreateEvent).Methods(http.MethodPost)
153153
protectedV1Route.HandleFunc("/events", app.EventHandler.GetEvents).Methods(http.MethodGet)
154+
protectedV1Route.HandleFunc("/events/registrations", app.EventHandler.ListRegistration).Methods(http.MethodGet)
154155
protectedV1Route.HandleFunc("/events/{id}", app.EventHandler.GetEventByID).Methods(http.MethodGet)
155156
protectedV1Route.HandleFunc("/images", app.ImageHandler.UploadImage).Methods(http.MethodPost)
156157

domain/event.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ type EventRepository interface {
2121
CreateRegisterEvent(ctx context.Context, event RegistrationEvent) (uint, error)
2222
GetEvent(ctx context.Context, eventID uint) (data Event, err error)
2323
GetRegistrationEvent(ctx context.Context, orderNo string) (data RegistrationEvent, err error)
24+
ListRegistration(ctx context.Context, filter EventFilter) (tData int, data []RegistrationEvent, err error)
2425
}
2526

2627
type EventUsecase interface {
@@ -30,6 +31,7 @@ type EventUsecase interface {
3031
CreatePayEvent(ctx context.Context, payload EventPayPayload) error
3132
GetEventByID(ctx context.Context, id uint) (resp Event, err error)
3233
RegistrationStatus(ctx context.Context, orderNo string) (resp RegisterStatusResponse, err error)
34+
ListRegistration(ctx context.Context, filter EventFilter) (resp []RegistrationEvent, pagination Pagination, err error)
3335
}
3436

3537
type EventHandler interface {
@@ -39,6 +41,7 @@ type EventHandler interface {
3941
PayEvent(w http.ResponseWriter, r *http.Request)
4042
GetEventByID(w http.ResponseWriter, r *http.Request)
4143
RegistrationStatus(w http.ResponseWriter, r *http.Request)
44+
ListRegistration(w http.ResponseWriter, r *http.Request)
4245
}
4346

4447
type Event struct {

0 commit comments

Comments
 (0)