package adminaddressservice

import (
	"context"

	param "git.gocasts.ir/ebhomengo/niki/param/admin/address"
	richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
)

func (s Service) GetAll(ctx context.Context, request param.GetAllAddressesRequest) (param.GetAllAddressesResponse, error) {
	const op = "adminaddressservice.GetAll"

	addresses, err := s.repo.GetAddresses(ctx, request.BenefactorID)
	if err != nil {
		return param.GetAllAddressesResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected)
	}

	var data []param.Data
	for _, address := range addresses {
		data = append(data, param.Data{
			ID:           address.ID,
			PostalCode:   address.PostalCode,
			Address:      address.Address,
			Name:         address.Name,
			Lat:          address.Lat,
			Lon:          address.Lon,
			CityID:       address.CityID,
			ProvinceID:   address.ProvinceID,
			BenefactorID: address.BenefactorID,
		})
	}

	return param.GetAllAddressesResponse{Data: data}, nil
}
