package response

import (
	"encoding/xml"
)

type SoapEnvelopeProductoServicio struct {
	XMLName xml.Name                 `xml:"Envelope"`
	Body    SoapBodyProductoServicio `xml:"Body"`
}

type SoapBodyProductoServicio struct {
	Response SincronizarResponseProductoServicio `xml:"sincronizarListaProductosServiciosResponse"`
}

type SincronizarResponseProductoServicio struct {
	RespuestaLista RespuestaListaParametricasProductoServicio `xml:"RespuestaListaProductos"`
}

type RespuestaListaParametricasProductoServicio struct {
	Transaccion  bool               `xml:"transaccion"`
	ListaCodigos []ProductoServicio `xml:"listaCodigos"`
}

type ProductoServicio struct {
	CodigoActividad     string   `xml:"codigoActividad,omitempty" json:"codigoActividad,omitempty"`
	CodigoProducto      string   `xml:"codigoProducto,omitempty" json:"codigo,omitempty"`
	DescripcionProducto string   `xml:"descripcionProducto,omitempty" json:"descripcion,omitempty"`
	Nandina             []string `xml:"nandina,omitempty" json:"nandina,omitempty"`
}

// Implementaciones para cada tipo de envelope
func (e SoapEnvelopeProductoServicio) IsTransactionSuccessful() bool {
	return e.Body.Response.RespuestaLista.Transaccion
}

func (e SoapEnvelopeProductoServicio) GetData() []ProductoServicio {
	return e.Body.Response.RespuestaLista.ListaCodigos
}
