83 lines
2.6 KiB
Go
83 lines
2.6 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
|
|
allImageURLs := tower.GetAllImageURLs()
|
|
|
|
if geocoder != nil {
|
|
generatedAddress, err := geocoder.GetAddressFromCoordinates(tower.Latitude, tower.Longitude)
|
|
if err != nil {
|
|
log.Printf("Geocoding error for tower %s: %v", tower.TowerCode, err)
|
|
} else {
|
|
address = generatedAddress
|
|
}
|
|
}
|
|
|
|
var deviceCode *string
|
|
if tower.Device.DeviceCode != "" {
|
|
deviceCode = &tower.Device.DeviceCode
|
|
}
|
|
|
|
towerResp := res.TowerResponse{
|
|
ID: tower.ID,
|
|
DeviceCode: deviceCode, // Now nullable
|
|
TowerCode: &tower.TowerCode,
|
|
Longitude: tower.Longitude,
|
|
Latitude: tower.Latitude,
|
|
Address: address,
|
|
ImageURL: tower.ImageURL,
|
|
ImageURLs: allImageURLs, // All images
|
|
ExternalTower: tower.ExternalTower,
|
|
BackboneCode: tower.BackboneCode,
|
|
CreatedAt: tower.CreatedAt,
|
|
UpdatedAt: tower.UpdatedAt,
|
|
}
|
|
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.Printf("Geocoding error for tower %s: %v", tower.TowerCode, err)
|
|
} else {
|
|
address = generatedAddress
|
|
}
|
|
}
|
|
|
|
var deviceCode *string
|
|
if tower.Device.DeviceCode != "" {
|
|
deviceCode = &tower.Device.DeviceCode
|
|
}
|
|
allImageURLs := tower.GetAllImageURLs()
|
|
|
|
towerResp := res.TowerResponse{
|
|
ID: tower.ID,
|
|
DeviceCode: deviceCode,
|
|
TowerCode: &tower.TowerCode,
|
|
Longitude: tower.Longitude,
|
|
Latitude: tower.Latitude,
|
|
Address: address,
|
|
ImageURL: tower.ImageURL,
|
|
ImageURLs: allImageURLs,
|
|
ExternalTower: tower.ExternalTower,
|
|
BackboneCode: tower.BackboneCode,
|
|
CreatedAt: tower.CreatedAt,
|
|
UpdatedAt: tower.UpdatedAt,
|
|
}
|
|
return towerResp, nil
|
|
} |