119 lines
3.2 KiB
Go
119 lines
3.2 KiB
Go
package initialize
|
|
|
|
import (
|
|
"gitea.pena/PenaSide/treasurer/internal/errors"
|
|
"gitea.pena/PenaSide/treasurer/internal/payment_provider"
|
|
"gitea.pena/PenaSide/treasurer/internal/payment_provider/yoomoney"
|
|
"gitea.pena/PenaSide/treasurer/internal/service/callback"
|
|
"gitea.pena/PenaSide/treasurer/internal/service/mock"
|
|
"gitea.pena/PenaSide/treasurer/internal/service/payment"
|
|
"gitea.pena/PenaSide/treasurer/internal/service/status"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ServicesDeps struct {
|
|
Logger *zap.Logger
|
|
Repositories Repositories
|
|
Clients Clients
|
|
Config Config
|
|
}
|
|
|
|
type Services struct {
|
|
Callback *callback.Service
|
|
Payment *payment.Service
|
|
YandexPayment *payment.Yandex
|
|
Status *status.Service
|
|
//YandexWebhook *webhook.Yandex
|
|
Mock *mock.Service
|
|
PaymentProviders []payment_provider.PaymentProvider
|
|
}
|
|
|
|
func NewServices(deps ServicesDeps) (*Services, errors.Error) {
|
|
callbackService, err := callback.New(callback.Deps{
|
|
Logger: deps.Logger,
|
|
CallbackClient: deps.Clients.Callback,
|
|
PaymentRepository: deps.Repositories.Payment,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
yandexPaymentService, err := payment.NewYandex(payment.YandexPaymentServiceDeps{
|
|
Logger: deps.Logger,
|
|
YandexPaymentClient: deps.Clients.Yandex,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
paymentService, err := payment.New(payment.Deps{
|
|
Logger: deps.Logger,
|
|
PaymentRepository: deps.Repositories.Payment,
|
|
PaymentStrategyService: yandexPaymentService,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
statusService, err := status.New(status.Deps{
|
|
Logger: deps.Logger,
|
|
PaymentRepository: deps.Repositories.Payment,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// todo не используется
|
|
//yandexWebhookService, err := webhook.NewYandex(webhook.YandexDeps{
|
|
// Logger: deps.Logger,
|
|
// YandexWebhookClient: deps.Clients.Yandex,
|
|
// HttpDomain: deps.Config.HttpDomain,
|
|
//})
|
|
//if err != nil {
|
|
// return nil, err
|
|
//}
|
|
|
|
yoomoneyMockService, err := mock.NewYoomoneyMockService(mock.YoomoneyMockServiceDeps{
|
|
Logger: deps.Logger,
|
|
YooMoneyPaymentsURL: deps.Config.YooMoneyPaymentsURL,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
mockService, err := mock.New(mock.Deps{
|
|
Logger: deps.Logger,
|
|
Enabled: deps.Config.IsMock,
|
|
MockServiceHost: deps.Config.MockServiceHost,
|
|
YoomoneyMockService: yoomoneyMockService,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
yooMoneyProvider, err := yoomoney.New(yoomoney.Deps{
|
|
Logger: deps.Logger,
|
|
Config: &yoomoney.Config{
|
|
StoreID: deps.Config.YooMoneyStoreID,
|
|
SecretKey: deps.Config.YooMoneySecretKey,
|
|
WebhooksURL: deps.Config.YooMoneyWebhooksURL,
|
|
PaymentsURL: deps.Config.YooMoneyPaymentsURL,
|
|
},
|
|
Repository: deps.Repositories.Payment,
|
|
CallbackService: callbackService,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Services{
|
|
Callback: callbackService,
|
|
Payment: paymentService,
|
|
YandexPayment: yandexPaymentService,
|
|
Status: statusService,
|
|
//YandexWebhook: yandexWebhookService,
|
|
Mock: mockService,
|
|
PaymentProviders: []payment_provider.PaymentProvider{yooMoneyProvider},
|
|
}, nil
|
|
}
|