package event import ( "context" "go.uber.org/zap" "enaklo-pos-be/internal/common/logger" "enaklo-pos-be/internal/entity" "enaklo-pos-be/internal/repository" ) type EventService struct { repo repository.Event } func NewEventService(repo repository.Event) *EventService { return &EventService{ repo: repo, } } func (s *EventService) Create(ctx context.Context, eventReq *entity.Event) (*entity.Event, error) { eventDB := eventReq.ToEventDB() eventDB, err := s.repo.CreateEvent(ctx, eventDB) if err != nil { logger.ContextLogger(ctx).Error("error when create event", zap.Error(err)) return nil, err } return eventDB.ToEvent(), nil } func (s *EventService) Update(ctx context.Context, id int64, eventReq *entity.Event) (*entity.Event, error) { existingEvent, err := s.repo.GetEventByID(ctx, id) if err != nil { return nil, err } existingEvent.ToUpdatedEvent(*eventReq) updatedEventDB, err := s.repo.UpdateEvent(ctx, existingEvent.ToEventDB()) if err != nil { logger.ContextLogger(ctx).Error("error when update event", zap.Error(err)) return nil, err } return updatedEventDB.ToEvent(), nil } func (s *EventService) GetByID(ctx context.Context, id int64) (*entity.Event, error) { eventDB, err := s.repo.GetEventByID(ctx, id) if err != nil { logger.ContextLogger(ctx).Error("error when get event by id", zap.Error(err)) return nil, err } return eventDB.ToEvent(), nil } func (s *EventService) GetAll(ctx context.Context, search entity.EventSearch) ([]*entity.Event, int, error) { events, total, err := s.repo.GetAllEvents(ctx, search.Name, search.Limit, search.Offset) if err != nil { logger.ContextLogger(ctx).Error("error when get all events", zap.Error(err)) return nil, 0, err } return events.ToEventList(), total, nil } func (s *EventService) Delete(ctx context.Context, id int64) error { eventDB, err := s.repo.GetEventByID(ctx, id) if err != nil { logger.ContextLogger(ctx).Error("error when get event by id", zap.Error(err)) return err } eventDB.SetDeleted() _, err = s.repo.UpdateEvent(ctx, eventDB) if err != nil { logger.ContextLogger(ctx).Error("error when update event", zap.Error(err)) return err } return nil }