package flash_express_pickup

import (
	"context"
	"github.com/UpmeshLTD/urus-aio/infrastructure/db/entities"
	"github.com/UpmeshLTD/urus-aio/shipment/db/gormdb"
)

type Service interface {
	GetByTicketPickupID(ctx context.Context, ticketPickupID string) (*entities.FlashExpressPickup, error)
	GetByCourierTrackingID(ctx context.Context, courierTrackingID string) (*entities.FlashExpressPickup, error)
}

type serviceImpl struct {
	db   gormdb.GormDB
	repo Repository
}

func NewService(
	db gormdb.GormDB,
	repo Repository,
) Service {
	return &serviceImpl{
		db:   db,
		repo: repo,
	}
}

func (s serviceImpl) GetByTicketPickupID(ctx context.Context, ticketPickupID string) (*entities.FlashExpressPickup, error) {
	return s.repo.Get(ctx, s.db.DB(), ticketPickupID)
}

func (s serviceImpl) GetByCourierTrackingID(ctx context.Context, courierTrackingID string) (*entities.FlashExpressPickup, error) {
	return s.repo.GetByTrackingID(ctx, s.db.DB(), courierTrackingID)
}
