package dutyroster

import (
	"context"
	"time"
)

type Service interface {
	Create(ctx context.Context, row *DutyRoster, crews []DutyRosterCrew) error
	Update(ctx context.Context, row *DutyRoster, crews []DutyRosterCrew) error
	Delete(ctx context.Context, id []byte, deletedBy []byte) error
	HardDelete(ctx context.Context, id []byte) error
	DeleteCrews(ctx context.Context, id []byte, crews []DutyRosterCrew, deletedBy []byte) ([]DeletedCrewResult, error)
	GetBaseDefaultShift(ctx context.Context, baseID []byte, baseType string) (string, error)
	ResolveBaseDefaultShiftRange(ctx context.Context, baseID []byte, baseType string) (string, string, error)
	GetHeaderByID(ctx context.Context, id []byte) (*HeaderView, error)
	GetHeaderByIDByBaseType(ctx context.Context, id []byte, baseType string) (*HeaderView, error)
	GetCrewsByRosterIDs(ctx context.Context, rosterIDs [][]byte) ([]CrewView, error)
	ListHeadersByRange(ctx context.Context, baseID []byte, from, to time.Time) ([]HeaderView, error)
	ListHeadersByRangeByBaseType(ctx context.Context, baseID []byte, from, to time.Time, baseType string) ([]HeaderView, error)
	ListHEMSBases(ctx context.Context, baseID []byte) ([]BaseView, error)
	ListBasesByType(ctx context.Context, baseID []byte, baseType string) ([]BaseView, error)
}
