diff --git a/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs b/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs
index 1da8b4cbd..17fcc968c 100644
--- a/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs
+++ b/src/PostIt/PostIt.Tests/BillingCommandPageViewModelTests.cs
@@ -135,6 +135,25 @@ public class BillingCommandPageViewModelTests
Assert.Contains("Position sélectionnée", vm.StatusMessage, StringComparison.OrdinalIgnoreCase);
}
+ [Fact]
+ public void EventDateSelection_round_trips_with_EventDate_for_DatePicker_binding()
+ {
+ var api = new RecordingApi();
+ var client = new BillingApiClient(api, "https://business.example/api/v1/");
+ var vm =
+ new CommandFormSummary { Id = 12, ActionName = "Rdv", Title = "Rendez-vous" }
+ .CreateCommandPageViewModel(
+ new ActivityInfo { Code = "dev", Name = "Développement" },
+ new ActivityUserDisplayItem { PerformerId = "perf-1", UserName = "Alice" },
+ client) as RdvViewModel;
+
+ var selected = new DateTimeOffset(2026, 9, 7, 14, 30, 0, TimeSpan.FromHours(2));
+ vm!.EventDateSelection = selected;
+
+ Assert.Equal(selected.LocalDateTime, vm.EventDate);
+ Assert.Equal(vm.EventDate, vm.EventDateSelection!.Value.LocalDateTime);
+ }
+
[Fact]
public void ApplyResolvedAddress_populates_empty_address_directly()
{
diff --git a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
index 484471c25..7a7d17df6 100644
--- a/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
+++ b/src/PostIt/PostIt/ViewModels/Commands/RdvViewModel.cs
@@ -33,6 +33,18 @@ public partial class RdvViewModel : BillingCommandPageViewModel
[ObservableProperty]
public partial DateTime EventDate { get; set; }
+ public DateTimeOffset? EventDateSelection
+ {
+ get => new(EventDate);
+ set
+ {
+ if (!value.HasValue)
+ return;
+
+ EventDate = value.Value.LocalDateTime;
+ }
+ }
+
public RdvViewModel(ActivityInfo activity, ActivityUserDisplayItem performer, CommandFormSummary form, BillingApiClient billingClient)
: base(activity, performer, form, billingClient)
{
@@ -206,6 +218,11 @@ public partial class RdvViewModel : BillingCommandPageViewModel
OnPropertyChanged(nameof(HasSuggestedAddressPanel));
}
+ partial void OnEventDateChanged(DateTime value)
+ {
+ OnPropertyChanged(nameof(EventDateSelection));
+ }
+
protected override async Task SubmitAsync()
{
diff --git a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml
index 8609cc3d8..e521a5a6b 100644
--- a/src/PostIt/PostIt/Views/Commands/RdvPage.axaml
+++ b/src/PostIt/PostIt/Views/Commands/RdvPage.axaml
@@ -26,7 +26,7 @@
-
+