package sep

import (
	"context"
)

type Service interface {
	Create(ctx context.Context, req CreateSEPRequest) (*CreateSEPResponse, error)
	Update(ctx context.Context, req UpdateSEPRequest) (string, error)
	Delete(ctx context.Context, req DeleteSEPRequest) (string, error)
	GetDetail(ctx context.Context, noSEP string) (*SEPDetailResponse, error)
}

type service struct {
	repo Repository
}

func NewService(repo Repository) Service {
	return &service{repo: repo}
}

func (s *service) Create(ctx context.Context, req CreateSEPRequest) (*CreateSEPResponse, error) {
	// Anda bisa menambahkan validasi atau logika bisnis di sini sebelum memanggil repository.
	return s.repo.CreateSEP(ctx, req)
}

func (s *service) Update(ctx context.Context, req UpdateSEPRequest) (string, error) {
	// TODO: Tambahkan validasi untuk request update di sini.
	// Contoh: if req.Request.Sep.NoSep == "" { return "", errors.New("nomor SEP wajib diisi") }
	return s.repo.UpdateSEP(ctx, req)
}

func (s *service) Delete(ctx context.Context, req DeleteSEPRequest) (string, error) {
	// TODO: Tambahkan validasi untuk request delete di sini.
	return s.repo.DeleteSEP(ctx, req)
}

func (s *service) GetDetail(ctx context.Context, noSEP string) (*SEPDetailResponse, error) {
	// TODO: Tambahkan validasi untuk noSEP di sini.
	return s.repo.GetSEP(ctx, noSEP)
}
