diff --git a/app/events/repository/get_events.go b/app/events/repository/get_events.go index 53efceb..464803b 100644 --- a/app/events/repository/get_events.go +++ b/app/events/repository/get_events.go @@ -59,11 +59,11 @@ func (repo *repository) GetEvent(ctx context.Context, eventID uint) (data domain } func (repo *repository) GetRegistrationEvent(ctx context.Context, orderNo string) (data domain.RegistrationEvent, err error) { - db := repo.db.DB(ctx).Model(&domain.Event{}) + db := repo.db.DB(ctx).Model(&domain.RegistrationEvent{}) err = db.Where("order_no = ?", orderNo).Find(&data).Error if err != nil { - logrus.Error("repo.GetEvents: failed to get events use generic conditions") + logrus.Error("failed to get registration event use generic conditions") return } diff --git a/app/events/usecase/create_pay_event.go b/app/events/usecase/create_pay_event.go index 98b4932..35925e1 100644 --- a/app/events/usecase/create_pay_event.go +++ b/app/events/usecase/create_pay_event.go @@ -19,16 +19,36 @@ func (uc usecase) CreatePayEvent(ctx context.Context, payload domain.EventPayPay return errors.New("registration order not found") } + dataImage, err := uc.imageRepository.GetImage(ctx, payload.ImageProofPayment) + if err != nil { + logrus.Error("failed to create event", dataImage) + return err + } + + if dataImage.IsUsed { + err = errors.New("image not exists") + return err + } + err = uc.dbTX.StartTransaction(ctx, func(txCtx context.Context) error { _, err := uc.repository.CreatePayEvent(txCtx, domain.EventPay{ - RegistrationEvent: rEvent.ID, - ImageProofPayment: payload.ImageProofPayment, - NetAmount: payload.NetAmount, + RegistrationEventID: rEvent.ID, + EventID: rEvent.EventID, + ImageProofPayment: payload.ImageProofPayment, + NetAmount: payload.NetAmount, }) + if err != nil { logrus.Error("failed to get event") return err } + + err = uc.imageRepository.UpdateUseImage(txCtx, dataImage.ID) + if err != nil { + logrus.Error("failed to update use image") + return err + } + return nil }) diff --git a/domain/event.go b/domain/event.go index 3cd721d..96dc634 100644 --- a/domain/event.go +++ b/domain/event.go @@ -146,10 +146,11 @@ type EventFilter struct { } type EventPay struct { - ID uint `json:"id" gorm:"primarykey"` - RegistrationEvent uint `json:"registration_event_id"` - ImageProofPayment string `json:"image_proof_payment"` - NetAmount float64 `json:"net_amount"` + ID uint `json:"id" gorm:"primarykey"` + RegistrationEventID uint `json:"registration_event_id"` + EventID uint `json:"event_id"` + ImageProofPayment string `json:"image_proof_payment"` + NetAmount float64 `json:"net_amount"` } func (EventPay) TableName() string {