Skip to content

Commit c1d9fbb

Browse files
committed
feat(registration): already registered
1 parent 3c48245 commit c1d9fbb

File tree

5 files changed

+34
-6
lines changed

5 files changed

+34
-6
lines changed

app/events/repository/get_registration_event.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,14 @@ func (repo *repository) GetRegistrationEventByID(ctx context.Context, id uint) (
2727

2828
return data, err
2929
}
30+
31+
func (repo *repository) GetRegistrationEventUserByStatus(ctx context.Context, eventID uint, userID uint, statuses []string) (data []domain.RegistrationEvent, err error) {
32+
db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{})
33+
34+
err = db.Where("event_id = ?", eventID).Where("user_id = ?", userID).Where("status IN (?)", statuses).Find(&data).Error
35+
if err != nil {
36+
return
37+
}
38+
39+
return data, err
40+
}

app/events/usecase/create_event_pay.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"errors"
66

7+
"github.com/hammer-code/lms-be/constants"
78
"github.com/hammer-code/lms-be/domain"
89
"github.com/hammer-code/lms-be/utils"
910
)
@@ -37,7 +38,7 @@ func (uc usecase) CreateEventPay(ctx context.Context, payload domain.EventPayPay
3738
EventID: rEvent.EventID,
3839
ImageProofPayment: payload.ImageProofPayment,
3940
NetAmount: payload.NetAmount,
40-
Status: "PENDING",
41+
Status: constants.PENDING,
4142
OrderNO: rEvent.OrderNo,
4243
})
4344

app/events/usecase/create_registration_event.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strconv"
1010
"time"
1111

12+
"github.com/hammer-code/lms-be/constants"
1213
"github.com/hammer-code/lms-be/domain"
1314
contextkey "github.com/hammer-code/lms-be/pkg/context_key"
1415
"github.com/hammer-code/lms-be/pkg/email"
@@ -19,6 +20,20 @@ import (
1920
)
2021

2122
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
23+
// get user data from context
24+
userData := ctx.Value(contextkey.UserKey).(domain.User)
25+
26+
registrations, err := uc.repository.GetRegistrationEventUserByStatus(ctx, payload.EventID, uint(userData.ID), []string{constants.PENDING, constants.SUCCESS})
27+
if err != nil {
28+
err = utils.NewInternalServerError(ctx, err)
29+
return domain.RegisterEventResponse{}, err
30+
}
31+
32+
if len(registrations) != 0 {
33+
err = utils.NewBadRequestError(ctx, "you have already registered", errors.New("you have already registered"))
34+
return domain.RegisterEventResponse{}, err
35+
}
36+
2237
event, err := uc.repository.GetEvent(ctx, payload.EventID)
2338
if err != nil {
2439
err = utils.NewInternalServerError(ctx, err)
@@ -59,9 +74,6 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
5974
}
6075
}
6176

62-
// get user data from context
63-
userData := ctx.Value(contextkey.UserKey).(domain.User)
64-
6577
// generate order number
6678
// format: TXE-<event_id>-<year><month><day><hash
6779
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
@@ -124,9 +136,9 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
124136
}
125137

126138
// is free event or not
127-
status := "SUCCESS"
139+
status := constants.SUCCESS
128140
if event.Price != 0.0 {
129-
status = "PENDING"
141+
status = constants.PENDING
130142
emailPayload.SendEmail(ctx)
131143
} else {
132144
logrus.Info("free event, send email registration success")

constants/event.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ const (
1212
EventTypeConference EventType = "Conference"
1313
EventTypeTechTalk EventType = "Tech Talk"
1414
EventTypeNgobar EventType = "Ngobar"
15+
16+
PENDING = "PENDING"
17+
SUCCESS = "SUCCESS"
1518
)
1619

1720
func GetValidEventTypes() []EventType {

domain/event.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type EventRepository interface {
3131
UpdateEvent(ctx context.Context, event Event) error
3232
ListRegistrationByEvent(ctx context.Context, eventID uint, pagination FilterPagination) (data []RegistrationEvent, totalCount int64, err error)
3333
GetRegistrationEventByID(ctx context.Context, id uint) (data RegistrationEvent, err error)
34+
GetRegistrationEventUserByStatus(ctx context.Context, eventID uint, userID uint, statuses []string) (data []RegistrationEvent, err error)
3435
}
3536

3637
type EventUsecase interface {

0 commit comments

Comments
 (0)