updates
This commit is contained in:
@@ -1993,16 +1993,32 @@ func HubBatchAssign(c *fiber.Ctx) error {
|
||||
return utils.OK(c, fiber.Map{"assigned": 0, "skipped": 0, "results": []fiber.Map{}})
|
||||
}
|
||||
|
||||
// Every rider on duty at this hub, not only the idle ones. capPerRider is
|
||||
// what limits a round; requiring Available made that limit unreachable,
|
||||
// because a rider stopped being Available the moment they took the first
|
||||
// booking of the very batch being built.
|
||||
var riderProfiles []models.MilerProfile
|
||||
if err := db.DB.Where("hubid = ? AND availabilitystatus = ?", hubID, constants.MilerAvailable).
|
||||
if err := db.DB.Where("hubid = ? AND availabilitystatus IN ?", hubID, constants.MilerWorkingStatuses).
|
||||
Find(&riderProfiles).Error; err != nil {
|
||||
return utils.Internal(c, "failed to fetch available riders")
|
||||
}
|
||||
|
||||
candidates := make([]*batchRiderCandidate, 0, len(riderProfiles))
|
||||
for _, mp := range riderProfiles {
|
||||
// Seed the count with what the rider is ALREADY holding. capPerRider
|
||||
// has to mean "stops in hand", not "stops added by this call" — now
|
||||
// that busy riders are eligible, counting only this call's additions
|
||||
// would hand five more to someone already carrying five.
|
||||
var openStops int64
|
||||
db.DB.Model(&models.BookingAssignment{}).
|
||||
Where("mileruserid = ? AND assignmentstatus IN ?", mp.Userid, []string{
|
||||
constants.AssignmentAssigned,
|
||||
constants.AssignmentAccepted,
|
||||
}).
|
||||
Count(&openStops)
|
||||
candidates = append(candidates, &batchRiderCandidate{
|
||||
userid: mp.Userid, lat: mp.Currentlatitude, lon: mp.Currentlongitude,
|
||||
assigned: int(openStops),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user