ess-etl-go/internal/xml_loader/employee_wi.go

49 lines
1.2 KiB
Go
Raw Normal View History

package xml_loader
import (
"encoding/xml"
"fmt"
"io"
"gitea.urkob.com/urko/ess-etl-go/internal/request"
"gitea.urkob.com/urko/ess-etl-go/pkg/domain"
)
type EmployeeWILoader struct {
r request.RequestService
}
func NewEmployeeWILoader(r request.RequestService) EmployeeWILoader {
return EmployeeWILoader{r: r}
}
func (e EmployeeWILoader) LoadEmployeeList(employeeIDList []string, from, to string) ([]domain.EmployeeWorkInformation, error) {
reader, err := e.r.EmployeeWorkInformation(employeeIDList, from, to)
if err != nil {
return nil, fmt.Errorf("r.EmployeeWorkInformation: %s", err)
}
return loadFromXML(reader)
}
func (e EmployeeWILoader) LoadEmployee(employeeID, from, to string) ([]domain.EmployeeWorkInformation, error) {
employeeIDList := []string{employeeID}
reader, err := e.r.EmployeeWorkInformation(employeeIDList, from, to)
if err != nil {
return nil, fmt.Errorf("r.EmployeeWorkInformation: %s", err)
}
return loadFromXML(reader)
}
func loadFromXML(xmlFile io.Reader) ([]domain.EmployeeWorkInformation, error) {
var awi domain.ArrayOfEmployeeWorkInformation
if err := xml.NewDecoder(xmlFile).Decode(&awi); err != nil {
return nil, fmt.Errorf("xml.NewDecoder.Decode: %s", err)
}
return awi.EmployeeWorkInfos, nil
}