package contract

import (
	"time"

	"github.com/google/uuid"
)

type DepartmentInfo struct {
	ID   uuid.UUID `json:"id"`
	Name string    `json:"name"`
	Code string    `json:"code,omitempty"`
}

type DispositionRouteResponse struct {
	ID               uuid.UUID              `json:"id"`
	FromDepartmentID uuid.UUID              `json:"from_department_id"`
	ToDepartmentID   uuid.UUID              `json:"to_department_id"`
	IsActive         bool                   `json:"is_active"`
	AllowedActions   map[string]interface{} `json:"allowed_actions,omitempty"`
	CreatedAt        time.Time              `json:"created_at"`
	UpdatedAt        time.Time              `json:"updated_at"`

	// Department information
	FromDepartment DepartmentInfo `json:"from_department"`
	ToDepartment   DepartmentInfo `json:"to_department"`
}

type CreateDispositionRouteRequest struct {
	FromDepartmentID uuid.UUID               `json:"from_department_id"`
	ToDepartmentID   uuid.UUID               `json:"to_department_id"`
	IsActive         *bool                   `json:"is_active,omitempty"`
	AllowedActions   *map[string]interface{} `json:"allowed_actions,omitempty"`
}

type UpdateDispositionRouteRequest struct {
	IsActive       *bool                   `json:"is_active,omitempty"`
	AllowedActions *map[string]interface{} `json:"allowed_actions,omitempty"`
}

type ListDispositionRoutesResponse struct {
	Routes []DispositionRouteResponse `json:"routes"`
}
