diff options
Diffstat (limited to 'src/Costasdev.Busurbano.Backend')
4 files changed, 24 insertions, 6 deletions
diff --git a/src/Costasdev.Busurbano.Backend/Controllers/RoutePlannerController.cs b/src/Costasdev.Busurbano.Backend/Controllers/RoutePlannerController.cs index 823cfa5..7d47383 100644 --- a/src/Costasdev.Busurbano.Backend/Controllers/RoutePlannerController.cs +++ b/src/Costasdev.Busurbano.Backend/Controllers/RoutePlannerController.cs @@ -78,8 +78,6 @@ public partial class RoutePlannerController : ControllerBase var response = await _httpClient.SendAsync(request); var responseBody = await response.Content.ReadFromJsonAsync<GraphClientResponse<PlanConnectionResponse>>(); - Console.WriteLine(responseBody); - if (responseBody is not { IsSuccess: true } || responseBody.Data?.PlanConnection.Edges.Length == 0) { LogErrorFetchingRoutes(response.StatusCode, await response.Content.ReadAsStringAsync()); diff --git a/src/Costasdev.Busurbano.Backend/Services/FareService.cs b/src/Costasdev.Busurbano.Backend/Services/FareService.cs index 0e4fefc..9a11a56 100644 --- a/src/Costasdev.Busurbano.Backend/Services/FareService.cs +++ b/src/Costasdev.Busurbano.Backend/Services/FareService.cs @@ -20,23 +20,39 @@ public class FareService var busLegs = legs.Where(l => l.Mode != null && l.Mode.ToUpper() != "WALK").ToList(); // Cash fare logic - // TODO: In the future, this should depend on the operator/feed - var cashFare = busLegs.Count * 1.63; // Defaulting to Vitrasa for now + double cashFare = 0; + foreach (var leg in busLegs) + { + // TODO: In the future, this should depend on the operator/feed + if (leg.FeedId == "vitrasa") + { + cashFare += 1.63; + } + else + { + cashFare += 1.63; // Default fallback + } + } // Card fare logic (45-min transfer window) int cardTicketsRequired = 0; DateTime? lastTicketPurchased = null; int tripsPaidWithTicket = 0; + string? lastFeedId = null; foreach (var leg in busLegs) { + // If no ticket purchased, ticket expired (no free transfers after 45 mins), or max trips with ticket reached + // Also check if we changed operator (assuming no free transfers between different operators for now) if (lastTicketPurchased == null || (leg.StartTime - lastTicketPurchased.Value).TotalMinutes > 45 || - tripsPaidWithTicket >= 3) + tripsPaidWithTicket >= 3 || + leg.FeedId != lastFeedId) { cardTicketsRequired++; lastTicketPurchased = leg.StartTime; tripsPaidWithTicket = 1; + lastFeedId = leg.FeedId; } else { diff --git a/src/Costasdev.Busurbano.Backend/Services/OtpService.cs b/src/Costasdev.Busurbano.Backend/Services/OtpService.cs index 7eba590..8d47225 100644 --- a/src/Costasdev.Busurbano.Backend/Services/OtpService.cs +++ b/src/Costasdev.Busurbano.Backend/Services/OtpService.cs @@ -1,5 +1,4 @@ using System.Globalization; -using System.Text; using Costasdev.Busurbano.Backend.Configuration; using Costasdev.Busurbano.Backend.Helpers; using Costasdev.Busurbano.Backend.Types.Otp; @@ -430,6 +429,8 @@ public class OtpService return new Leg { Mode = leg.Mode, + FeedId = feedId, + RouteId = leg.Route?.GtfsId, RouteName = leg.Route?.LongName, RouteShortName = shortName, RouteLongName = leg.Route?.LongName, diff --git a/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs b/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs index b2f4d6a..a4e54d7 100644 --- a/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs +++ b/src/Costasdev.Busurbano.Backend/Types/Planner/PlannerResponse.cs @@ -23,6 +23,9 @@ public class Itinerary public class Leg { public string? Mode { get; set; } // WALK, BUS, etc. + public string? FeedId { get; set; } + public string? RouteId { get; set; } + public string? TripId { get; set; } public string? RouteName { get; set; } public string? RouteShortName { get; set; } public string? RouteLongName { get; set; } |
