@@ -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 })
0 commit comments