package dto

import (
	entity "gitlab.com/mbugroup/lti-api.git/internal/entities"
	uomDTO "gitlab.com/mbugroup/lti-api.git/internal/modules/master/uoms/dto"
)

// === DTO Structs ===

type SupplierNonstockDTO struct {
	Id    uint                   `json:"id"`
	Name  string                 `json:"name"`
	Uom   *uomDTO.UomRelationDTO `json:"uom,omitempty"`
	Flags []string               `json:"flags"`
}

// === Mapper Functions ===

func toSupplierNonstockDTOs(relations []entity.NonstockSupplier) []SupplierNonstockDTO {
	if len(relations) == 0 {
		return nil
	}

	result := make([]SupplierNonstockDTO, 0, len(relations))
	for _, relation := range relations {
		Nonstock := relation.Nonstock
		if Nonstock.Id == 0 {
			continue
		}

		flags := make([]string, len(Nonstock.Flags))
		for i, f := range Nonstock.Flags {
			flags[i] = f.Name
		}

		var uomRef *uomDTO.UomRelationDTO
		if Nonstock.Uom.Id != 0 {
			mapped := uomDTO.ToUomRelationDTO(Nonstock.Uom)
			uomRef = &mapped
		}

		result = append(result, SupplierNonstockDTO{
			Id:    Nonstock.Id,
			Name:  Nonstock.Name,
			Uom:   uomRef,
			Flags: flags,
		})
	}
	return result
}
