package notifications

import (
	messaging "github.com/tech/sendico/pkg/messaging/envelope"
	on "github.com/tech/sendico/pkg/messaging/internal/notifications/object"
	nm "github.com/tech/sendico/pkg/model/notification"
	"github.com/tech/sendico/pkg/mservice"
	"go.mongodb.org/mongo-driver/bson/primitive"
)

func Object(
	sender string,
	actorAccountRef primitive.ObjectID,
	objectType mservice.Type,
	objectRef primitive.ObjectID,
	action nm.NotificationAction,
) messaging.Envelope {
	return on.NewObjectImp(sender, actorAccountRef, objectType, objectRef, action)
}

func ObjectCreated(
	sender string,
	actorAccountRef primitive.ObjectID,
	objectType mservice.Type,
	objectRef primitive.ObjectID,
) messaging.Envelope {
	return Object(sender, actorAccountRef, objectType, objectRef, nm.NACreated)
}

func ObjectUpdated(
	sender string,
	actorAccountRef primitive.ObjectID,
	objectType mservice.Type,
	objectRef primitive.ObjectID,
) messaging.Envelope {
	return Object(sender, actorAccountRef, objectType, objectRef, nm.NAUpdated)
}

func ObjectDeleted(
	sender string,
	actorAccountRef primitive.ObjectID,
	objectType mservice.Type,
	objectRef primitive.ObjectID,
) messaging.Envelope {
	return Object(sender, actorAccountRef, objectType, objectRef, nm.NADeleted)
}
