Skip to content

Commit 1782d03

Browse files
authored
Merge pull request #24 from hammercode-dev/be-14/fix-register-event
[BE-14] - Fix Register Event and Auth
2 parents 47135c6 + bab785d commit 1782d03

File tree

20 files changed

+94
-95
lines changed

20 files changed

+94
-95
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, jwtInstance)
52+
eventUC := events.InitUsecase(cfg, eventRepo, imgRepo, dbTx)
5353
imgUc := images.InitUsecase(imgRepo, dbTx)
5454
blogPostUc := blogPost.InitUseCase(blogPostRepo, jwtInstance)
5555

app/blog_post/delivery/http/http.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (h Handler) GetAllBlogPosts(w http.ResponseWriter, r *http.Request) {
149149
Code: http.StatusOK,
150150
Message: "Blog posts retrieved successfully",
151151
Data: responseDTO,
152-
Pagination: paginationResponse,
152+
Pagination: &paginationResponse,
153153
}, w)
154154
}
155155

app/events/delivery/http/event.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ func (h Handler) List(w http.ResponseWriter, r *http.Request) {
286286
Code: http.StatusOK,
287287
Message: "success",
288288
Data: data,
289-
Pagination: pagination,
289+
Pagination: &pagination,
290290
}, w)
291291
}
292292

@@ -341,6 +341,6 @@ func (h Handler) GetEvents(w http.ResponseWriter, r *http.Request) {
341341
Code: http.StatusOK,
342342
Message: "success",
343343
Data: data,
344-
Pagination: pagination,
344+
Pagination: &pagination,
345345
}, w)
346346
}

app/events/delivery/http/list_event_pay.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,6 @@ func (h Handler) ListEventPay(w http.ResponseWriter, r *http.Request) {
7373
Code: http.StatusOK,
7474
Message: "success",
7575
Data: data,
76-
Pagination: pagination,
76+
Pagination: &pagination,
7777
}, w)
7878
}

app/events/delivery/http/list_registration.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
3434
}, w)
3535
return
3636
}
37-
token := utils.ExtractBearerToken(r)
38-
3937
startDate, _ := utils.ParseDate(r.URL.Query().Get("start_date"))
4038
endDate, _ := utils.ParseDate(r.URL.Query().Get("end_date"))
4139

@@ -44,7 +42,7 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
4442
StartDate: startDate,
4543
EndDate: endDate,
4644
FilterPagination: flterPagination,
47-
}, *token)
45+
})
4846

4947
if err != nil {
5048
ngelog.Error(r.Context(), "failed to list registration event", err)
@@ -57,6 +55,6 @@ func (h Handler) ListRegistration(w http.ResponseWriter, r *http.Request) {
5755
Code: http.StatusOK,
5856
Message: "success",
5957
Data: data,
60-
Pagination: pagination,
58+
Pagination: &pagination,
6159
}, w)
6260
}

app/events/delivery/http/register_event.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,6 @@ 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-
4635
var payload domain.RegisterEventPayload
4736
if err := json.Unmarshal(bodyBytes, &payload); err != nil {
4837
ngelog.Error(r.Context(), "failed to unmarshal payload", err)
@@ -52,7 +41,7 @@ func (h Handler) RegisterEvent(w http.ResponseWriter, r *http.Request) {
5241
}, w)
5342
return
5443
}
55-
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload, *token)
44+
data, err := h.usecase.CreateRegistrationEvent(r.Context(), payload)
5645
if err != nil {
5746
ngelog.Error(r.Context(), "failed to create registration event", err)
5847
resp := utils.CustomErrorResponse(err)

app/events/events.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,14 @@ 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"
1211
)
1312

1413
func InitRepository(db db.DatabaseTransaction) domain.EventRepository {
1514
return repository.NewRepository(db)
1615
}
1716

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)
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)
2019
}
2120

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

app/events/usecase/create_event.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func (uc usecase) CreateEvent(ctx context.Context, payload domain.CreateEventPay
3737
ReservationEndDate: payload.ReservationEndDate,
3838
Price: payload.Price,
3939
Status: payload.Status,
40+
AdditionalLink: payload.AdditionalLink,
4041
}
4142

4243
eventID, err := uc.repository.CreateEvent(txCtx, data)

app/events/usecase/create_registration_event.go

Lines changed: 37 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,19 @@ import (
66
"fmt"
77
"html/template"
88
"os"
9+
"strconv"
910
"time"
1011

1112
"github.com/hammer-code/lms-be/domain"
13+
contextkey "github.com/hammer-code/lms-be/pkg/context_key"
1214
"github.com/hammer-code/lms-be/pkg/email"
1315
"github.com/hammer-code/lms-be/pkg/hash"
1416
"github.com/hammer-code/lms-be/utils"
1517
"github.com/sirupsen/logrus"
18+
"gopkg.in/guregu/null.v4"
1619
)
1720

18-
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload, token string) (domain.RegisterEventResponse, error) {
21+
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
1922
event, err := uc.repository.GetEvent(ctx, payload.EventID)
2023
if err != nil {
2124
err = utils.NewInternalServerError(ctx, err)
@@ -41,11 +44,26 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
4144
}
4245
}
4346

44-
userData, err := uc.jwt.VerifyToken(token)
45-
if err != nil {
46-
return domain.RegisterEventResponse{}, fmt.Errorf("failed to verify token: %w", err)
47+
// check image proof payment
48+
dataImage := domain.Image{}
49+
if payload.ImageProofPayment != "" {
50+
dataImage, err = uc.imageRepository.GetImage(ctx, payload.ImageProofPayment)
51+
if err != nil {
52+
err = utils.NewInternalServerError(ctx, err)
53+
return domain.RegisterEventResponse{}, err
54+
}
55+
56+
if dataImage.IsUsed {
57+
err = utils.NewNotFoundError(ctx, "image not exists", errors.New("image not exists"))
58+
return domain.RegisterEventResponse{}, err
59+
}
4760
}
4861

62+
// get user data from context
63+
userData := ctx.Value(contextkey.UserKey).(domain.User)
64+
65+
// generate order number
66+
// format: TXE-<event_id>-<year><month><day><hash
4967
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
5068

5169
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])
@@ -91,7 +109,7 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
91109
email.Receiver{
92110
Email: userData.Email,
93111
Data: map[string]interface{}{
94-
"name": userData.UserName,
112+
"name": userData.Username,
95113
"title": event.Title,
96114
"price": event.Price,
97115
"email": userData.Email,
@@ -133,50 +151,45 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
133151
}
134152

135153
err = uc.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
154+
155+
136156
rId, err := uc.repository.CreateRegistrationEvent(txCtx, domain.RegistrationEvent{
137157
OrderNo: orderNo,
158+
UserID: strconv.Itoa(userData.ID),
138159
EventID: event.ID,
139-
Name: userData.UserName,
160+
Name: userData.Username,
140161
Email: userData.Email,
141162
PhoneNumber: payload.PhoneNumber,
142163
Status: status,
143164
UpToYou: upToYou,
165+
ImageProofPayment: dataImage.FileName,
166+
PaymentDate: null.NewTime(time.Now(), true),
144167
})
145168

146169
if err != nil {
147170
err = utils.NewInternalServerError(ctx, err)
148171
return err
149172
}
150173

151-
if payload.ImageProofPayment != "" {
152-
dataImage, err := uc.imageRepository.GetImage(ctx, payload.ImageProofPayment)
153-
if err != nil {
154-
err = utils.NewInternalServerError(ctx, err)
155-
return err
156-
}
157-
158-
if dataImage.IsUsed {
159-
err = utils.NewNotFoundError(ctx, "image not exists", errors.New("image not exists"))
160-
return err
161-
}
162-
174+
if dataImage.FileName != "" {
163175
_, err = uc.repository.CreateEventPay(txCtx, domain.EventPay{
164176
RegistrationEventID: rId,
165177
EventID: event.ID,
166-
ImageProofPayment: payload.ImageProofPayment,
178+
OrderNO: orderNo,
179+
ImageProofPayment: dataImage.FileName,
167180
NetAmount: payload.NetAmount,
168181
})
169182

170183
if err != nil {
171184
err = utils.NewInternalServerError(ctx, err)
172185
return err
173186
}
187+
}
174188

175-
err = uc.imageRepository.UpdateUseImage(txCtx, dataImage.ID)
176-
if err != nil {
177-
err = utils.NewInternalServerError(ctx, err)
178-
return err
179-
}
189+
err = uc.imageRepository.UpdateUseImage(txCtx, dataImage.ID)
190+
if err != nil {
191+
err = utils.NewInternalServerError(ctx, err)
192+
return err
180193
}
181194
return nil
182195
})

app/events/usecase/list_registration_event.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,28 @@ package usecase
22

33
import (
44
"context"
5+
"fmt"
56

7+
"github.com/hammer-code/lms-be/config"
68
"github.com/hammer-code/lms-be/domain"
9+
contextkey "github.com/hammer-code/lms-be/pkg/context_key"
710
"github.com/hammer-code/lms-be/utils"
811
)
912

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-
}
13+
func (uc usecase) ListRegistration(ctx context.Context, filter domain.EventFilter) (resp []domain.RegistrationEvent, pagination domain.Pagination, err error) {
14+
userData := ctx.Value(contextkey.UserKey).(domain.User)
1615

1716
tData, datas, err := uc.repository.ListRegistration(ctx, filter, userData.Email)
1817
if err != nil {
1918
err = utils.NewInternalServerError(ctx, err)
2019
return
2120
}
2221

22+
baseURL := config.GetConfig().BaseURL
23+
24+
for i, data := range datas {
25+
datas[i].ImageProofPayment = fmt.Sprintf("%s/api/v1/public/storage/images/%s", baseURL, data.ImageProofPayment)
26+
}
27+
2328
return datas, domain.NewPagination(tData, filter.FilterPagination), err
2429
}

0 commit comments

Comments
 (0)