| @@ -101,7 +101,7 @@ func LocationToBeaconService(msg model.HTTPLocation, db *gorm.DB, writer *kafka. | |||||
| return | return | ||||
| } | } | ||||
| err = db.Where("id = ?", msg.ID).Updates(model.Tracker{Position: gw.ID, X: gw.X, Y: gw.Y}).Error | |||||
| err = db.Where("id = ?", msg.ID).Updates(model.Tracker{Position: gw.ID, X: gw.X, Y: gw.Y, Floor: floor.ID}).Error | |||||
| if err != nil { | if err != nil { | ||||
| msg := fmt.Sprintf("Error in updating tracker: %v", err) | msg := fmt.Sprintf("Error in updating tracker: %v", err) | ||||
| slog.Error(msg) | slog.Error(msg) | ||||
| @@ -139,10 +139,29 @@ func LocationToBeaconServiceAI(msg model.HTTPLocation, db *gorm.DB, writer *kafk | |||||
| return | return | ||||
| } | } | ||||
| err = db.Where("id = ?", tracker.ID).Updates(model.Tracker{Position: gw.ID, X: msg.X, Y: msg.Y}).Error | |||||
| var floor model.Floor | |||||
| floorFound := msg.Z >= 0 | |||||
| if floorFound { | |||||
| if err := db.Where("floor_number = ?", int(msg.Z)).First(&floor).Error; err != nil { | |||||
| if errors.Is(err, gorm.ErrRecordNotFound) { | |||||
| slog.Warn(fmt.Sprintf("Floor not found for floor number: %f, skipping floor update", msg.Z)) | |||||
| floorFound = false | |||||
| } else { | |||||
| slog.Error(fmt.Sprintf("Error querying floor for floor number: %f: %v", msg.Z, err)) | |||||
| return | |||||
| } | |||||
| } | |||||
| } | |||||
| var trackerUpdate model.Tracker | |||||
| if floorFound { | |||||
| trackerUpdate = model.Tracker{Position: gw.ID, X: msg.X, Y: msg.Y, Floor: floor.ID} | |||||
| } else { | |||||
| trackerUpdate = model.Tracker{Position: gw.ID, X: msg.X, Y: msg.Y} | |||||
| } | |||||
| err = db.Where("id = ?", tracker.ID).Updates(trackerUpdate).Error | |||||
| if err != nil { | if err != nil { | ||||
| msg := fmt.Sprintf("Error in updating tracker: %v", err) | |||||
| slog.Error(msg) | |||||
| slog.Error(fmt.Sprintf("Error in updating tracker: %v", err)) | |||||
| return | return | ||||
| } | } | ||||