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, // Now nullable 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 } // Get all image URLs allImageURLs := tower.GetAllImageURLs() 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, // Now nullable CreatedAt: tower.CreatedAt, UpdatedAt: tower.UpdatedAt, } return towerResp, nil }