Skip to content

Commit 905edb8

Browse files
committed
Merge branch 'development' of https://github.com/hammercode-dev/lms-be into be-14/fix-register-event
2 parents 5ad7041 + 47135c6 commit 905edb8

14 files changed

Lines changed: 86 additions & 36 deletions

File tree

.github/workflows/development.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ jobs:
2424
- name: Build
2525
run: go build -o main .
2626

27-
- name: Archive Build Output
28-
run: tar -czvf main.tar.gz main
27+
- name: Archive Build Output and Assets
28+
run: tar -czvf main.tar.gz main assets/
2929

3030
- name: Upload Artifact
3131
uses: actions/upload-artifact@v4
@@ -53,12 +53,12 @@ jobs:
5353
VPS_KEY: ${{ secrets.VPS_KEY }}
5454
run: |
5555
echo "$VPS_KEY" > vps_key.pem
56-
5756
chmod 600 vps_key.pem
58-
5957
scp -o StrictHostKeyChecking=no -i vps_key.pem main.tar.gz $VPS_USER@$VPS_IP:/home/hmcroot/app/development/lms-be/
6058
ssh -o StrictHostKeyChecking=no -i vps_key.pem $VPS_USER@$VPS_IP "
61-
cd /home/hmcroot/app/development/lms-be &&
62-
rm -f main &&
63-
tar -xzvf main.tar.gz && rm -f main.tar.gz
64-
sudo systemctl restart lms-be-development.service"
59+
cd /home/hmcroot/app/development/lms-be &&
60+
rm -f main &&
61+
rm -rf assets &&
62+
tar -xzvf main.tar.gz && rm -f main.tar.gz
63+
sudo systemctl restart lms-be-development.service
64+
"

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
@@ -18,7 +18,7 @@ import (
1818
"gopkg.in/guregu/null.v4"
1919
)
2020

21-
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
21+
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload, token string) (domain.RegisterEventResponse, error) {
2222
event, err := uc.repository.GetEvent(ctx, payload.EventID)
2323
if err != nil {
2424
err = utils.NewInternalServerError(ctx, err)
@@ -61,6 +61,11 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
6161

6262
// generate order number
6363
// format: TXE-<event_id>-<year><month><day><hash
64+
userData, err := uc.jwt.VerifyToken(token)
65+
if err != nil {
66+
return domain.RegisterEventResponse{}, fmt.Errorf("failed to verify token: %w", err)
67+
}
68+
6469
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
6570

6671
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])
@@ -104,12 +109,12 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
104109
if err := emailPayload.AddReceiver(
105110
ctx,
106111
email.Receiver{
107-
Email: payload.Email,
112+
Email: userData.Email,
108113
Data: map[string]interface{}{
109-
"name": payload.Name,
114+
"name": userData.UserName,
110115
"title": event.Title,
111116
"price": event.Price,
112-
"email": payload.Email,
117+
"email": userData.Email,
113118
"order_no": orderNo,
114119
"year": time.Now().Format("2006"),
115120
"date": formattedDate,
@@ -155,8 +160,8 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
155160
OrderNo: orderNo,
156161
UserID: strUid,
157162
EventID: event.ID,
158-
Name: payload.Name,
159-
Email: payload.Email,
163+
Name: userData.UserName,
164+
Email: userData.Email,
160165
PhoneNumber: payload.PhoneNumber,
161166
Status: status,
162167
UpToYou: upToYou,

app/events/usecase/list_registration_event.go

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

12-
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
13-
tData, datas, err := uc.repository.ListRegistration(ctx, filter)
12+
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter, token string) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
13+
14+
userData, err := uc.jwt.VerifyToken(token)
15+
if err != nil {
16+
return nil, domain.Pagination{}, utils.NewUnauthorizedError(ctx, "unauthorized", err)
17+
}
18+
19+
tData, datas, err := uc.repository.ListRegistration(ctx, filter, userData.Email)
1420
if err != nil {
1521
err = utils.NewInternalServerError(ctx, err)
1622
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

0 commit comments

Comments
 (0)