NAM-APJATEL-BACKEND/utils/helper/towerHelperRes.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
}