package service import ( "github.com/rs/zerolog" "go-humas-be/app/database/entity" "go-humas-be/app/module/activity_logs/mapper" "go-humas-be/app/module/activity_logs/repository" "go-humas-be/app/module/activity_logs/request" "go-humas-be/app/module/activity_logs/response" usersRepository "go-humas-be/app/module/users/repository" "go-humas-be/utils/paginator" utilSvc "go-humas-be/utils/service" ) // ActivityLogsService type activityLogsService struct { Repo repository.ActivityLogsRepository UsersRepo usersRepository.UsersRepository Log zerolog.Logger } // ActivityLogsService define interface of IActivityLogsService type ActivityLogsService interface { All(req request.ActivityLogsQueryRequest) (activityLogs []*response.ActivityLogsResponse, paging paginator.Pagination, err error) Show(id uint) (activityLogs *response.ActivityLogsResponse, err error) Save(req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error) Update(id uint, req request.ActivityLogsUpdateRequest) (err error) Delete(id uint) error } // NewActivityLogsService init ActivityLogsService func NewActivityLogsService(repo repository.ActivityLogsRepository, log zerolog.Logger, usersRepo usersRepository.UsersRepository) ActivityLogsService { return &activityLogsService{ Repo: repo, Log: log, UsersRepo: usersRepo, } } // All implement interface of ActivityLogsService func (_i *activityLogsService) All(req request.ActivityLogsQueryRequest) (activityLogss []*response.ActivityLogsResponse, paging paginator.Pagination, err error) { results, paging, err := _i.Repo.GetAll(req) if err != nil { return } for _, result := range results { activityLogss = append(activityLogss, mapper.ActivityLogsResponseMapper(result)) } return } func (_i *activityLogsService) Show(id uint) (activityLogs *response.ActivityLogsResponse, err error) { result, err := _i.Repo.FindOne(id) if err != nil { return nil, err } return mapper.ActivityLogsResponseMapper(result), nil } func (_i *activityLogsService) Save(req request.ActivityLogsCreateRequest, authToken *string) (activityLogs *entity.ActivityLogs, err error) { _i.Log.Info().Interface("data", req).Msg("") newReq := req.ToEntity() if authToken != nil { createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, *authToken) newReq.UserId = &createdBy.ID } return _i.Repo.Create(newReq) } func (_i *activityLogsService) Update(id uint, req request.ActivityLogsUpdateRequest) (err error) { _i.Log.Info().Interface("data", req).Msg("") return _i.Repo.Update(id, req.ToEntity()) } func (_i *activityLogsService) Delete(id uint) error { return _i.Repo.Delete(id) }