aditya.siregar 67f1dbc850 init project
2024-05-28 14:14:55 +07:00

90 lines
2.3 KiB
Go

package partner
import (
"context"
"furtuna-be/internal/common/logger"
"furtuna-be/internal/common/mycontext"
"furtuna-be/internal/entity"
"furtuna-be/internal/repository"
"go.uber.org/zap"
)
type PartnerService struct {
repo repository.PartnerRepository
}
func NewPartnerService(repo repository.PartnerRepository) *PartnerService {
return &PartnerService{
repo: repo,
}
}
func (s *PartnerService) Create(ctx mycontext.Context, PartnerReq *entity.Partner) (*entity.Partner, error) {
PartnerDB := PartnerReq.ToPartnerDB()
PartnerDB.CreatedBy = ctx.RequestedBy()
PartnerDB, err := s.repo.Create(ctx, PartnerDB)
if err != nil {
logger.ContextLogger(ctx).Error("error when create Partner", zap.Error(err))
return nil, err
}
return PartnerDB.ToPartner(), nil
}
func (s *PartnerService) Update(ctx mycontext.Context, id int64, PartnerReq *entity.Partner) (*entity.Partner, error) {
existingPartner, err := s.repo.GetByID(ctx, id)
if err != nil {
return nil, err
}
existingPartner.ToUpdatedPartner(ctx.RequestedBy(), *PartnerReq)
updatedPartnerDB, err := s.repo.Update(ctx, existingPartner.ToPartnerDB())
if err != nil {
logger.ContextLogger(ctx).Error("error when update Partner", zap.Error(err))
return nil, err
}
return updatedPartnerDB.ToPartner(), nil
}
func (s *PartnerService) GetByID(ctx context.Context, id int64) (*entity.Partner, error) {
PartnerDB, err := s.repo.GetByID(ctx, id)
if err != nil {
logger.ContextLogger(ctx).Error("error when get Partner by id", zap.Error(err))
return nil, err
}
return PartnerDB.ToPartner(), nil
}
func (s *PartnerService) GetAll(ctx context.Context, search entity.PartnerSearch) ([]*entity.Partner, int, error) {
Partneres, total, err := s.repo.GetAll(ctx, search)
if err != nil {
logger.ContextLogger(ctx).Error("error when get all Partneres", zap.Error(err))
return nil, 0, err
}
return Partneres.ToPartnerList(), total, nil
}
func (s *PartnerService) Delete(ctx mycontext.Context, id int64) error {
PartnerDB, err := s.repo.GetByID(ctx, id)
if err != nil {
logger.ContextLogger(ctx).Error("error when get Partner by id", zap.Error(err))
return err
}
PartnerDB.SetDeleted(ctx.RequestedBy())
_, err = s.repo.Update(ctx, PartnerDB)
if err != nil {
logger.ContextLogger(ctx).Error("error when update Partner", zap.Error(err))
return err
}
return nil
}