@@ -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
1821func (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