89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
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
|
|
}
|