68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
package helper
|
|
|
|
import (
|
|
"log"
|
|
"users_management/m/model/dto/res"
|
|
"users_management/m/model/entity"
|
|
"users_management/m/utils/service"
|
|
)
|
|
|
|
func ConvertToTowerResponses(towers []entity.Tower, geocoder service.GeocodingService) ([]res.TowerResponse, error) {
|
|
var responses []res.TowerResponse
|
|
|
|
|
|
for _, tower := range towers {
|
|
var address string
|
|
|
|
if geocoder != nil {
|
|
generatedAddress, err := geocoder.GetAddressFromCoordinates(tower.Latitude, tower.Longitude)
|
|
if err != nil {
|
|
// Log specific geocoding error
|
|
log.Printf("Geocoding error for tower %s: %v", tower.TowerCode, err)
|
|
} else {
|
|
address = generatedAddress
|
|
}
|
|
} else {
|
|
log.Println("WARNING: Geocoder is nil")
|
|
}
|
|
|
|
towerResp := res.TowerResponse{
|
|
ID: tower.ID,
|
|
DeviceCode: tower.Device.DeviceCode,
|
|
TowerCode: tower.TowerCode,
|
|
Longitude: tower.Longitude,
|
|
Latitude: tower.Latitude,
|
|
Address: address,
|
|
CreatedAt: tower.CreatedAt,
|
|
}
|
|
responses = append(responses, towerResp)
|
|
}
|
|
return responses, nil
|
|
}
|
|
|
|
func ConvertToTowerIDResponses(tower entity.Tower, geocoder service.GeocodingService) (res.TowerResponse, error) {
|
|
var address string
|
|
|
|
if geocoder != nil {
|
|
generatedAddress, err := geocoder.GetAddressFromCoordinates(tower.Latitude, tower.Longitude)
|
|
if err != nil {
|
|
// Log specific geocoding error
|
|
log.Printf("Geocoding error for tower %s: %v", tower.TowerCode, err)
|
|
} else {
|
|
address = generatedAddress
|
|
}
|
|
} else {
|
|
log.Println("WARNING: Geocoder is nil")
|
|
}
|
|
|
|
towerResp := res.TowerResponse{
|
|
ID: tower.ID,
|
|
DeviceCode: tower.Device.DeviceCode,
|
|
TowerCode: tower.TowerCode,
|
|
Longitude: tower.Longitude,
|
|
Latitude: tower.Latitude,
|
|
Address: address,
|
|
CreatedAt: tower.CreatedAt,
|
|
}
|
|
return towerResp, nil
|
|
} |