aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.Backend/Services/OtpService.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-12-12 18:23:46 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2025-12-12 18:23:46 +0100
commitffb8ee87898bffe5fee706abb047133585bb5d0d (patch)
tree1735caa33ddce3fb9d847c5e9121451dc5aa76a7 /src/Costasdev.Busurbano.Backend/Services/OtpService.cs
parent9d38db605e25febc81f8832f4756cbb6cfc010b8 (diff)
feat: enhance OTP service logic, improve planner overlay, and update NavBar styles
Diffstat (limited to 'src/Costasdev.Busurbano.Backend/Services/OtpService.cs')
-rw-r--r--src/Costasdev.Busurbano.Backend/Services/OtpService.cs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Services/OtpService.cs b/src/Costasdev.Busurbano.Backend/Services/OtpService.cs
index 82c43e0..87895d3 100644
--- a/src/Costasdev.Busurbano.Backend/Services/OtpService.cs
+++ b/src/Costasdev.Busurbano.Backend/Services/OtpService.cs
@@ -161,13 +161,24 @@ public class OtpService
int cardTicketsRequired = 0;
DateTime? lastTicketPurchased = null;
+ int tripsPaidWithTicket = 0;
foreach (var leg in busLegs)
{
- if (lastTicketPurchased == null || (leg.StartTime - lastTicketPurchased.Value).TotalMinutes > 45)
+ // If no ticket purchased, ticket expired (no free transfers after 45 mins), or max trips with ticket reached
+ if (
+ lastTicketPurchased == null ||
+ (leg.StartTime - lastTicketPurchased.Value).TotalMinutes > 45 ||
+ tripsPaidWithTicket >= 3
+ )
{
cardTicketsRequired++;
lastTicketPurchased = leg.StartTime;
+ tripsPaidWithTicket = 1;
+ }
+ else
+ {
+ tripsPaidWithTicket++;
}
}