aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Experimental.ServiceViewer/Views/Services
diff options
context:
space:
mode:
Diffstat (limited to 'src/Enmarcha.Experimental.ServiceViewer/Views/Services')
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml22
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml.cs7
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml63
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml.cs29
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml40
-rw-r--r--src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml.cs39
6 files changed, 200 insertions, 0 deletions
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml
new file mode 100644
index 0000000..4e252dc
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml
@@ -0,0 +1,22 @@
+@model Enmarcha.Experimental.ServiceViewer.Views.Services.DaysInFeedModel
+@{
+ ViewData["Title"] = "Fechas con datos";
+}
+
+@section Head
+{
+ <link rel="stylesheet" href="~/styles/days_in_feed.css" />
+}
+
+<header>
+ <h1>Fechas con datos</h1>
+</header>
+
+<main>
+ @foreach (var day in Model.Days)
+ {
+ <article>
+ <a asp-controller="Services" asp-action="ServicesInDay" asp-route-day="@day.ToString("yyyy-MM-dd")">@day.ToString("M")</a>
+ </article>
+ }
+</main>
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml.cs b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml.cs
new file mode 100644
index 0000000..e633fcb
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/DaysInFeed.cshtml.cs
@@ -0,0 +1,7 @@
+namespace Enmarcha.Experimental.ServiceViewer.Views.Services;
+
+public class DaysInFeedModel
+{
+ public List<DateTime> Days { get; set; } = [];
+ public DateOnly Today { get; set; }
+}
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml
new file mode 100644
index 0000000..969e0dd
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml
@@ -0,0 +1,63 @@
+@using Enmarcha.Experimental.ServiceViewer.Data.Gtfs
+@using Humanizer
+@using Humanizer.Localisation
+@model Enmarcha.Experimental.ServiceViewer.Views.Services.ServiceDetailsModel
+@{
+ ViewData["Title"] = Model.ServiceName;
+}
+
+@section Head
+{
+ <link rel="stylesheet" href="~/styles/service_details.css" />
+ <link rel="stylesheet" href="/stylesheets/routecolours.css" />
+ <style>
+
+ </style>
+}
+
+<header>
+ <h1>@ViewData["Title"]</h1>
+</header>
+
+<nav class="navigation-bar">
+ <a asp-action="DaysInFeed">Feed Vitrasa</a>
+ &gt;
+ <a asp-action="ServicesInDay" asp-route-day="@Model.Date.ToString("yyyy-MM-dd")">
+ @Model.Date.ToString("dd 'de' MMMM 'de' yyyy")
+ </a>
+ &gt;
+ <span>@Model.ServiceName</span>
+</nav>
+
+<section id="service-cards">
+ @foreach (ServiceDetailsItem item in Model.Items)
+ {
+ <article class="trip-container route-@item.SafeRouteId">
+ <div class="trip-header">
+ <div class="route">@item.ShortName</div>
+ <div class="headsign">@item.LongName</div>
+ <div class="distance">
+ @item.TotalDistance
+ </div>
+ </div>
+ <div class="trip-details">
+ <div class="trip-leg">
+ <div class="trip-time">@item.FirstStopTime</div>
+ <div class="trip-stop">@item.FirstStopName</div>
+ </div>
+ <div class="trip-leg">
+ <div class="trip-time">@item.LastStopTime</div>
+ <div class="trip-stop">@item.LastStopName</div>
+ </div>
+ </div>
+ <div class="trip-footer" >
+ <a class="trip-details-link">Ver detalle del viaje →</a>
+ </div>
+ </article>
+ }
+</section>
+
+<footer>
+ Tiempo de conducción: @Model.TotalDrivingTime.Hours horas y @Model.TotalDrivingTime.Minutes minutos.<br />
+ Distancia total: @Model.TotalDistanceKm
+</footer>
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml.cs b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml.cs
new file mode 100644
index 0000000..dbe7ad8
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServiceDetails.cshtml.cs
@@ -0,0 +1,29 @@
+namespace Enmarcha.Experimental.ServiceViewer.Views.Services;
+
+public class ServiceDetailsModel
+{
+ public DateOnly Date { get; set; }
+ public string ServiceId { get; set; } = string.Empty;
+ public string ServiceName { get; set; } = string.Empty;
+
+ public List<ServiceDetailsItem> Items { get; set; } = [];
+ public TimeSpan TotalDrivingTime { get; set; }
+
+ public int TotalDistance { get; set; }
+ public string TotalDistanceKm => (TotalDistance / 1000.0).ToString("0.00 km");
+}
+
+public class ServiceDetailsItem
+{
+ public string TripId { get; set; } = string.Empty;
+ public string SafeRouteId { get; set; } = string.Empty;
+ public string ShortName { get; set; } = string.Empty;
+ public string LongName { get; set; } = string.Empty;
+ public string TotalDistance { get; set; } = string.Empty;
+
+ public string FirstStopTime { get; set; } = string.Empty;
+ public string FirstStopName { get; set; } = string.Empty;
+
+ public string LastStopTime { get; set; } = string.Empty;
+ public string LastStopName { get; set; } = string.Empty;
+}
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml
new file mode 100644
index 0000000..2161410
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml
@@ -0,0 +1,40 @@
+@model Enmarcha.Experimental.ServiceViewer.Views.Services.ServiceInDayModel
+@{
+ ViewData["Title"] = "Servicios a realizar en " + Model.Date.ToString("dd 'de' MMMM 'de' yyyy");
+}
+
+@section Head
+{
+ <link rel="stylesheet" href="~/styles/services_in_day.css" />
+ <link rel="stylesheet" href="/stylesheets/routecolours.css" />
+}
+
+<header>
+ <h1>
+ @ViewData["Title"]
+ </h1>
+</header>
+
+<section id="service-cards">
+ @foreach (ServicesInDayItem card in Model.Items)
+ {
+ <article>
+ <header>
+ <a asp-action="ServiceDetails" asp-route-day="@Model.Date.ToString("yyyy-MM-dd")" asp-route-serviceId="@card.ServiceId">
+ @card.ServiceName
+ </a>
+ </header>
+ <main>
+ @card.ShiftStart &rarr; @card.ShiftEnd
+ </main>
+ <footer>
+ @foreach (var cardTripGroup in card.TripGroups)
+ {
+ <span class="route-group route-@cardTripGroup.route.SafeId">
+ @cardTripGroup.route.ShortName (@cardTripGroup.count)
+ </span>
+ }
+ </footer>
+ </article>
+ }
+</section>
diff --git a/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml.cs b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml.cs
new file mode 100644
index 0000000..6b55e64
--- /dev/null
+++ b/src/Enmarcha.Experimental.ServiceViewer/Views/Services/ServicesInDay.cshtml.cs
@@ -0,0 +1,39 @@
+using Enmarcha.Experimental.ServiceViewer.Data.Gtfs;
+
+namespace Enmarcha.Experimental.ServiceViewer.Views.Services;
+
+public class ServiceInDayModel
+{
+ public List<ServicesInDayItem> Items { get; set; } = [];
+ public DateOnly Date { get; set; }
+}
+
+public class ServicesInDayItem
+{
+ public string ServiceId { get; set; }
+ public string ServiceName { get; set; }
+ public List<GtfsTrip> Trips { get; set; }
+ public List<TripGroup> TripGroups { get; set; }
+
+ public string ShiftStart { get; set; }
+ public string ShiftEnd { get; set; }
+
+ public ServicesInDayItem(
+ string serviceId,
+ string serviceName,
+ List<GtfsTrip> trips,
+ List<TripGroup> tripGroups,
+ string shiftStart,
+ string shiftEnd
+ ) {
+ ServiceId = serviceId;
+ ServiceName = serviceName;
+ Trips = trips;
+ TripGroups = tripGroups;
+
+ ShiftStart = shiftStart;
+ ShiftEnd = shiftEnd;
+ }
+}
+
+public record TripGroup(GtfsRoute route, int count);