milergeo added
This commit is contained in:
@@ -149,12 +149,16 @@ func collectEligibleCandidates(nearby []redis.GeoLocation) ([]*milerCandidate, [
|
||||
continue
|
||||
}
|
||||
|
||||
// Only today's open stops count towards the cap. An order assigned
|
||||
// yesterday or last month and never closed (rider app not updated,
|
||||
// order abandoned) used to hold the rider at the cap forever, so the
|
||||
// one rider actually working was skipped for every new order.
|
||||
var activeCount int64
|
||||
db.DB.Model(&models.BookingAssignment{}).
|
||||
Where("mileruserid = ? AND assignmentstatus IN ?", milerUserID, []string{
|
||||
Where("mileruserid = ? AND assignmentstatus IN ? AND assignedat >= ?", milerUserID, []string{
|
||||
constants.AssignmentAssigned,
|
||||
constants.AssignmentAccepted,
|
||||
}).
|
||||
}, startOfISTDay(time.Now())).
|
||||
Count(&activeCount)
|
||||
|
||||
if activeCount >= maxActiveBookings() {
|
||||
@@ -185,6 +189,14 @@ func collectEligibleCandidates(nearby []redis.GeoLocation) ([]*milerCandidate, [
|
||||
return candidates, aiCandidates
|
||||
}
|
||||
|
||||
// startOfISTDay is midnight today in India, the boundary for "today's"
|
||||
// open stops. An absolute instant, so it compares correctly with assignedat
|
||||
// whether the column stores IST wall-clock or a real timestamp.
|
||||
func startOfISTDay(now time.Time) time.Time {
|
||||
n := now.In(utils.ISTLocation())
|
||||
return time.Date(n.Year(), n.Month(), n.Day(), 0, 0, 0, 0, utils.ISTLocation())
|
||||
}
|
||||
|
||||
// ─── Per-miler stats ─────────────────────────────────────────────────────────
|
||||
|
||||
func fetchMilerStats(milerUserID int) (onTimeRate float64, completedToday int64) {
|
||||
|
||||
Reference in New Issue
Block a user