102 lines
2.7 KiB
Go
102 lines
2.7 KiB
Go
package feed
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
)
|
|
|
|
type Handler struct {
|
|
Service *Service
|
|
logger *slog.Logger
|
|
}
|
|
|
|
func NewFeedHandler(logger *slog.Logger, service *Service) *Handler {
|
|
return &Handler{
|
|
Service: service,
|
|
logger: logger,
|
|
}
|
|
}
|
|
|
|
func (h *Handler) CreateEvent(ctx context.Context, event *Event) error {
|
|
if event == nil {
|
|
h.logger.Error("CreateEvent: empty event",
|
|
slog.String("error", ErrCreationInvalidData.Error()))
|
|
|
|
return ErrCreationInvalidData
|
|
}
|
|
|
|
h.logger.Debug("CreateEvent: Attempting to create event",
|
|
slog.String("type", event.EventType.String()),
|
|
slog.String("ownerID", event.OwnerId))
|
|
|
|
if event.OwnerId == "" || event.EventType == "" || event.Message == "" {
|
|
h.logger.Error("CreateEvent: Validation error",
|
|
slog.String("error", ErrCreationInvalidData.Error()),
|
|
slog.String("type", event.EventType.String()),
|
|
slog.String("ownerID", event.OwnerId),
|
|
slog.String("message", event.Message),
|
|
)
|
|
|
|
return ErrCreationInvalidData
|
|
}
|
|
|
|
if err := h.Service.AddUserEvent(ctx, event); err != nil {
|
|
h.logger.Error("CreateEvent: Service error",
|
|
slog.String("error", err.Error()),
|
|
slog.String("type", event.EventType.String()),
|
|
slog.String("ownerID", event.OwnerId))
|
|
|
|
return fmt.Errorf("Error creating event: %w", err)
|
|
}
|
|
|
|
h.logger.Debug("CreateEvent: Successfully created event",
|
|
slog.String("eventID", event.Id),
|
|
slog.String("type", event.EventType.String()),
|
|
slog.String("ownerID", event.OwnerId))
|
|
|
|
return nil
|
|
}
|
|
|
|
func (h *Handler) CancelEvent(ctx context.Context, attachmentId string, reason string) error {
|
|
h.logger.Debug("CancelEvent: Attempting to cancel event",
|
|
slog.String("attachmentID", attachmentId),
|
|
)
|
|
|
|
if attachmentId == "" {
|
|
h.logger.Error("CancelEvent: Validation error",
|
|
slog.String("error", "attachment Id is required"))
|
|
|
|
return ErrAttachmentIDRequired
|
|
}
|
|
|
|
if reason == "" {
|
|
h.logger.Error("CancelEvent: Validation error",
|
|
slog.String("error", "cancellation reason is required"),
|
|
slog.String("attachmentID", attachmentId))
|
|
|
|
return ErrCancellationReasonRequired
|
|
}
|
|
|
|
if err := h.Service.CancelEvents(ctx, attachmentId, reason); err != nil {
|
|
h.logger.Error("CancelEvent: Service error",
|
|
slog.String("error", err.Error()),
|
|
slog.String("attachmentID", attachmentId))
|
|
|
|
return fmt.Errorf("error cancelling event: %w", err)
|
|
}
|
|
|
|
h.logger.Debug("CancelEvent: Successfully cancelled event",
|
|
slog.String("attachmentID", attachmentId))
|
|
|
|
return nil
|
|
}
|
|
|
|
func (h *Handler) GetCompanyIdByUidTmp(ctx context.Context, ownerID string) ([]string, error) {
|
|
return h.Service.GetCompanyIdsByUid(ctx, ownerID)
|
|
}
|
|
|
|
func (h *Handler) GetAgentIdBySubmissionId(ctx context.Context, submissionId string) (string, error) {
|
|
return h.Service.GetAgentIdBySubmissionId(ctx, submissionId)
|
|
}
|