Fix 9 backend bugs: pricing, zones, geocoding, device tokens, assignment retry
- pricingid null: lookupDoormilePrice now returns matched rule ID; wired to BookingServiceOption.Pricingid - Zone rename: Interstate→Regional, OtherState→National throughout (code + DB migrated) - Zone from pincodes: CheckPrice now accepts pickup_pincode+delivery_pincode and auto-resolves zone - Delivery geocoding: pincodeToLatLon() maps 3-digit prefix to city coords when lat/lon are 0 - Device tokens: device_token field added to PinVerify DTOs; saved on both customer and miler login - Assignment retry: RejectMilerAssignment now re-triggers AssignCustomerMiler/AssignCRMMiler immediately - Provider empty B2C: defaults to Doormile when no pricing provider row matches - City gate 422→400: StatusUnprocessableEntity corrected to StatusBadRequest - Miler GPS 0,0: WS tracking falls back to MilerProfile DB coords when Redis key is expired Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -113,6 +113,17 @@ func TrackingHandler(c *websocket.Conn) {
|
||||
milerUserID := *booking.Assignedmileruserid
|
||||
lat, lon, gpsOk := readMilerGPS(milerUserID)
|
||||
|
||||
// Redis key expired or not yet set — fall back to last known DB coords.
|
||||
if !gpsOk {
|
||||
var mp models.MilerProfile
|
||||
if db.DB.Where("userid = ?", milerUserID).First(&mp).Error == nil &&
|
||||
(mp.Currentlatitude != 0 || mp.Currentlongitude != 0) {
|
||||
lat = mp.Currentlatitude
|
||||
lon = mp.Currentlongitude
|
||||
gpsOk = true
|
||||
}
|
||||
}
|
||||
|
||||
frame := trackingFrame{
|
||||
Status: booking.Status,
|
||||
MilerName: milerName(milerUserID),
|
||||
|
||||
Reference in New Issue
Block a user