Skip to content

Commit 441dbbc

Browse files
committed
feat: enhance registration event creation with image proof validation and user ID association
1 parent 68242ca commit 441dbbc

1 file changed

Lines changed: 34 additions & 18 deletions

File tree

app/events/usecase/create_registration_event.go

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ 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

1821
func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.RegisterEventPayload) (domain.RegisterEventResponse, error) {
@@ -41,6 +44,23 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
4144
}
4245
}
4346

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+
}
60+
}
61+
62+
// generate order number
63+
// format: TXE-<event_id>-<year><month><day><hash
4464
hash := hash.GenerateHash(time.Now().Format("2006-01-02 15:04:05"))
4565

4666
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])
@@ -128,50 +148,46 @@ func (uc usecase) CreateRegistrationEvent(ctx context.Context, payload domain.Re
128148
}
129149

130150
err = uc.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
151+
uid := ctx.Value(contextkey.UserKey).(int)
152+
strUid := strconv.Itoa(uid)
153+
131154
rId, err := uc.repository.CreateRegistrationEvent(txCtx, domain.RegistrationEvent{
132155
OrderNo: orderNo,
156+
UserID: strUid,
133157
EventID: event.ID,
134158
Name: payload.Name,
135159
Email: payload.Email,
136160
PhoneNumber: payload.PhoneNumber,
137161
Status: status,
138162
UpToYou: upToYou,
163+
ImageProofPayment: dataImage.FileName,
164+
PaymentDate: null.NewTime(time.Now(), true),
139165
})
140166

141167
if err != nil {
142168
err = utils.NewInternalServerError(ctx, err)
143169
return err
144170
}
145171

146-
if payload.ImageProofPayment != "" {
147-
dataImage, err := uc.imageRepository.GetImage(ctx, payload.ImageProofPayment)
148-
if err != nil {
149-
err = utils.NewInternalServerError(ctx, err)
150-
return err
151-
}
152-
153-
if dataImage.IsUsed {
154-
err = utils.NewNotFoundError(ctx, "image not exists", errors.New("image not exists"))
155-
return err
156-
}
157-
172+
if dataImage.FileName != "" {
158173
_, err = uc.repository.CreateEventPay(txCtx, domain.EventPay{
159174
RegistrationEventID: rId,
160175
EventID: event.ID,
161-
ImageProofPayment: payload.ImageProofPayment,
176+
OrderNO: orderNo,
177+
ImageProofPayment: dataImage.FileName,
162178
NetAmount: payload.NetAmount,
163179
})
164180

165181
if err != nil {
166182
err = utils.NewInternalServerError(ctx, err)
167183
return err
168184
}
185+
}
169186

170-
err = uc.imageRepository.UpdateUseImage(txCtx, dataImage.ID)
171-
if err != nil {
172-
err = utils.NewInternalServerError(ctx, err)
173-
return err
174-
}
187+
err = uc.imageRepository.UpdateUseImage(txCtx, dataImage.ID)
188+
if err != nil {
189+
err = utils.NewInternalServerError(ctx, err)
190+
return err
175191
}
176192
return nil
177193
})

0 commit comments

Comments
 (0)