Skip to content

Commit 46293e0

Browse files
committed
feat(event): get registration status
1 parent 65ec987 commit 46293e0

5 files changed

Lines changed: 76 additions & 3 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package http
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/gorilla/mux"
7+
"github.com/hammer-code/lms-be/domain"
8+
"github.com/hammer-code/lms-be/utils"
9+
"github.com/sirupsen/logrus"
10+
)
11+
12+
func (h Handler) RegistrationStatus(w http.ResponseWriter, r *http.Request) {
13+
vars := mux.Vars(r)
14+
order_no := vars["order_no"]
15+
data, err := h.usecase.RegistrationStatus(r.Context(), order_no)
16+
if err != nil {
17+
logrus.Error("failed to Create pay event : ", err)
18+
utils.Response(domain.HttpResponse{
19+
Code: 500,
20+
Message: err.Error(),
21+
}, w)
22+
return
23+
}
24+
25+
utils.Response(domain.HttpResponse{
26+
Code: 200,
27+
Message: "success",
28+
Data: data,
29+
}, w)
30+
}

app/events/usecase/create_register_event.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,25 @@ func (uc usecase) CreateRegisterEvent(ctx context.Context, payload domain.Regist
3838

3939
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])
4040

41+
// is free event or not
42+
status := "success registration"
43+
upToYou := "registration success"
44+
if event.Price != 0.0 {
45+
status = "waiting for payment"
46+
upToYou = "new register"
47+
}
48+
4149
err = uc.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
4250
_, err := uc.repository.CreateRegisterEvent(ctx, domain.RegistrationEvent{
4351
OrderNo: orderNo,
4452
EventID: event.ID,
4553
Name: payload.Name,
4654
Email: payload.Email,
4755
PhoneNumber: payload.PhoneNumber,
48-
Status: "register",
49-
UpToYou: "new register",
56+
Status: status,
57+
UpToYou: upToYou,
5058
})
59+
5160
if err != nil {
5261
logrus.Error("failed to get event")
5362
return err
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package usecase
2+
3+
import (
4+
"context"
5+
"errors"
6+
7+
"github.com/hammer-code/lms-be/domain"
8+
"github.com/sirupsen/logrus"
9+
)
10+
11+
func (uc usecase) RegistrationStatus(ctx context.Context, orderNo string) (resp domain.RegisterStatusResponse, err error) {
12+
rEvent, err := uc.repository.GetRegistrationEvent(ctx, orderNo)
13+
if err != nil {
14+
logrus.Error("failed to get event")
15+
return resp, err
16+
}
17+
18+
if rEvent.ID == 0 {
19+
return resp, errors.New("registration order not found")
20+
}
21+
22+
return domain.RegisterStatusResponse{
23+
OrderNo: orderNo,
24+
Status: rEvent.Status,
25+
}, err
26+
}

cmd/serve_http.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ func registerHandler(app app.App) *mux.Router {
134134
public.HandleFunc("/events", app.EventHandler.GetEvents).Methods(http.MethodGet)
135135
public.HandleFunc("/events/{id}", app.EventHandler.GetEvents).Methods(http.MethodGet)
136136
public.HandleFunc("/images", app.ImageHandler.UploadImage).Methods(http.MethodPost)
137-
public.HandleFunc("/events/registration", app.EventHandler.RegisterEvent).Methods(http.MethodPost)
137+
public.HandleFunc("/events/registrations", app.EventHandler.RegisterEvent).Methods(http.MethodPost)
138+
public.HandleFunc("/events/registrations/{order_no}", app.EventHandler.RegistrationStatus).Methods(http.MethodGet)
138139
public.HandleFunc("/events/pay", app.EventHandler.PayEvent).Methods(http.MethodPost)
139140

140141
protectedV1Route := v1.NewRoute().Subrouter()

domain/event.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type EventUsecase interface {
2929
CreateRegisterEvent(ctx context.Context, payload RegisterEventPayload) (RegisterEventResponse, error)
3030
CreatePayEvent(ctx context.Context, payload EventPayPayload) error
3131
GetEventByID(ctx context.Context, id uint) (resp Event, err error)
32+
RegistrationStatus(ctx context.Context, orderNo string) (resp RegisterStatusResponse, err error)
3233
}
3334

3435
type EventHandler interface {
@@ -37,6 +38,7 @@ type EventHandler interface {
3738
RegisterEvent(w http.ResponseWriter, r *http.Request)
3839
PayEvent(w http.ResponseWriter, r *http.Request)
3940
GetEventByID(w http.ResponseWriter, r *http.Request)
41+
RegistrationStatus(w http.ResponseWriter, r *http.Request)
4042
}
4143

4244
type Event struct {
@@ -202,3 +204,8 @@ type EventPayPayload struct {
202204
ImageProofPayment string `json:"image_proof_payment"`
203205
NetAmount float64 `json:"net_amount"`
204206
}
207+
208+
type RegisterStatusResponse struct {
209+
OrderNo string `json:"order_no"`
210+
Status string `json:"string"`
211+
}

0 commit comments

Comments
 (0)