package notifications

import (
	"github.com/tech/sendico/pkg/db/account"
	messaging "github.com/tech/sendico/pkg/messaging/envelope"
	an "github.com/tech/sendico/pkg/messaging/internal/notifications/account"
	mah "github.com/tech/sendico/pkg/messaging/notifications/account/handler"
	np "github.com/tech/sendico/pkg/messaging/notifications/processor"
	"github.com/tech/sendico/pkg/mlogger"
	nm "github.com/tech/sendico/pkg/model/notification"
	"go.mongodb.org/mongo-driver/v2/bson"
)

func PasswordReset(sender string, accountRef bson.ObjectID, resetToken string, action nm.NotificationAction) messaging.Envelope {
	return an.NewPasswordResetImp(sender, accountRef, resetToken, action)
}

func PasswordResetRequested(sender string, accountRef bson.ObjectID, resetToken string) messaging.Envelope {
	return PasswordReset(sender, accountRef, resetToken, nm.NAPasswordReset)
}

func NewPasswordResetRequestedMessageProcessor(logger mlogger.Logger, db account.DB, handler mah.PasswordResetHandler) np.EnvelopeProcessor {
	return an.NewPasswordResetMessageProcessor(logger, handler, db, nm.NAPasswordReset)
}
